diff --git a/build/frontend-legacy/package-lock.json b/build/frontend-legacy/package-lock.json index c7e80dbf5adb6..1f82e9c1d1240 100644 --- a/build/frontend-legacy/package-lock.json +++ b/build/frontend-legacy/package-lock.json @@ -9706,9 +9706,9 @@ } }, "node_modules/fast-xml-parser": { - "version": "5.5.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.6.tgz", - "integrity": "sha512-3+fdZyBRVg29n4rXP0joHthhcHdPUHaIC16cuyyd1iLsuaO6Vea36MPrxgAzbZna8lhvZeRL8Bc9GP56/J9xEw==", + "version": "5.5.7", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.7.tgz", + "integrity": "sha512-LteOsISQ2GEiDHZch6L9hB0+MLoYVLToR7xotrzU0opCICBkxOPgHAy1HxAvtxfJNXDJpgAsQN30mkrfpO2Prg==", "funding": [ { "type": "github", @@ -9719,7 +9719,7 @@ "dependencies": { "fast-xml-builder": "^1.1.4", "path-expression-matcher": "^1.1.3", - "strnum": "^2.1.2" + "strnum": "^2.2.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -17114,9 +17114,9 @@ "license": "MIT" }, "node_modules/strnum": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", - "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.1.tgz", + "integrity": "sha512-BwRvNd5/QoAtyW1na1y1LsJGQNvRlkde6Q/ipqqEaivoMdV+B1OMOTVdwR+N/cwVUcIt9PYyHmV8HyexCZSupg==", "funding": [ { "type": "github", diff --git a/dist/3556-3556.js.license b/dist/3556-3556.js.license index c8ea6bbf3e944..9c25a1b9816ea 100644 --- a/dist/3556-3556.js.license +++ b/dist/3556-3556.js.license @@ -240,7 +240,7 @@ This file is generated from multiple sources. Included packages: - version: 1.1.4 - license: MIT - fast-xml-parser - - version: 5.5.6 + - version: 5.5.7 - license: MIT - floating-vue - version: 1.0.0-beta.19 @@ -396,7 +396,7 @@ This file is generated from multiple sources. Included packages: - version: 3.2.0 - license: MIT - strnum - - version: 2.1.2 + - version: 2.2.1 - license: MIT - style-loader - version: 4.0.0 diff --git a/dist/4906-4906.js.license b/dist/4906-4906.js.license index c8ea6bbf3e944..9c25a1b9816ea 100644 --- a/dist/4906-4906.js.license +++ b/dist/4906-4906.js.license @@ -240,7 +240,7 @@ This file is generated from multiple sources. Included packages: - version: 1.1.4 - license: MIT - fast-xml-parser - - version: 5.5.6 + - version: 5.5.7 - license: MIT - floating-vue - version: 1.0.0-beta.19 @@ -396,7 +396,7 @@ This file is generated from multiple sources. Included packages: - version: 3.2.0 - license: MIT - strnum - - version: 2.1.2 + - version: 2.2.1 - license: MIT - style-loader - version: 4.0.0 diff --git a/dist/7039-7039.js.license b/dist/7039-7039.js.license index c8ea6bbf3e944..9c25a1b9816ea 100644 --- a/dist/7039-7039.js.license +++ b/dist/7039-7039.js.license @@ -240,7 +240,7 @@ This file is generated from multiple sources. Included packages: - version: 1.1.4 - license: MIT - fast-xml-parser - - version: 5.5.6 + - version: 5.5.7 - license: MIT - floating-vue - version: 1.0.0-beta.19 @@ -396,7 +396,7 @@ This file is generated from multiple sources. Included packages: - version: 3.2.0 - license: MIT - strnum - - version: 2.1.2 + - version: 2.2.1 - license: MIT - style-loader - version: 4.0.0 diff --git a/dist/8124-8124.js.license b/dist/8124-8124.js.license index c8ea6bbf3e944..9c25a1b9816ea 100644 --- a/dist/8124-8124.js.license +++ b/dist/8124-8124.js.license @@ -240,7 +240,7 @@ This file is generated from multiple sources. Included packages: - version: 1.1.4 - license: MIT - fast-xml-parser - - version: 5.5.6 + - version: 5.5.7 - license: MIT - floating-vue - version: 1.0.0-beta.19 @@ -396,7 +396,7 @@ This file is generated from multiple sources. Included packages: - version: 3.2.0 - license: MIT - strnum - - version: 2.1.2 + - version: 2.2.1 - license: MIT - style-loader - version: 4.0.0 diff --git a/dist/comments-comments-app.js b/dist/comments-comments-app.js index 28bb9e32eaa71..ded4e1fefc04b 100644 --- a/dist/comments-comments-app.js +++ b/dist/comments-comments-app.js @@ -1,2 +1,2 @@ -(()=>{var e,r,n,o={15256(e,r,n){"use strict";const o=(0,n(35947).YK)().setApp("comments").detectUser().build();var i=n(21777),s=n(53334),a=n(10810),l=n(85471),c=n(85168),u=n(57579),p=n(74095),h=n(42507),f=n(57578);const d={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var g=n(14486);const m=(0,g.A)(d,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon message-reply-text-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var y=n(83239),b=n(57505),v=n(24764),w=n(15502),A=n(41944),x=n(4604),E=n(88289),S=n(77764),_=n(33691),O=n(66001),C=n(16502),T=n(37793),N=n(61160);function j(t){if(!P(t))throw new Error("Parameter was not an error")}function P(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}class R extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:o}=function(t){let e,r="";if(0===t.length)e={};else if(P(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}(r);let i=o;if(n.cause&&(i=`${i}: ${n.cause.message}`),super(i),this.message=i,n.name&&"string"==typeof n.name?this.name=n.name:this.name="Layerr",n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return j(t),t._cause&&P(t._cause)?t._cause:null}static fullStack(t){j(t);const e=R.cause(t);return e?`${t.stack}\ncaused by: ${R.fullStack(e)}`:t.stack??""}static info(t){j(t);const e={},r=R.cause(t);return r&&Object.assign(e,R.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}var k=n(12692);const I="__PATH_SEPARATOR_POSIX__",M="__PATH_SEPARATOR_WINDOWS__";function L(t){try{const e=t.replace(/\//g,I).replace(/\\\\/g,M);return encodeURIComponent(e).split(M).join("\\\\").split(I).join("/")}catch(t){throw new R(t,"Failed encoding path")}}function D(t){return t.startsWith("/")?t:"/"+t}function $(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function U(t){let e=new N(t).pathname;return e.length<=0&&(e="/"),$(e)}function F(...t){return function(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}var B=n(83503);function W(t,e){const r=t.url.replace("//",""),n=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),o=t.method?t.method.toUpperCase():"GET",i=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",s=`00000000${e.nc}`.slice(-8),a=function(t,e,r,n,o,i,s){const a=s||B(`${e}:${r}:${n}`);return t&&"md5-sess"===t.toLowerCase()?B(`${a}:${o}:${i}`):a}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),l=B(`${o}:${n}`),c=B(i?`${a}:${e.nonce}:${s}:${e.cnonce}:${i}:${l}`:`${a}:${e.nonce}:${l}`),u={username:e.username,realm:e.realm,nonce:e.nonce,uri:n,qop:i,response:c,nc:s,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in u)u[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${u[t]}`):p.push(`${t}="${u[t]}"`));return`Digest ${p.join(", ")}`}function q(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var H,V,G,z,K,Y,X=n(85914);function Z(t){return X.decode(t)}function J(t,e){var r;return`Basic ${r=`${t}:${e}`,X.encode(r)}`}new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint,function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(H||(H={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(V||(V={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(G||(G={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(z||(z={})),new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(K||(K={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(Y||(Y={}));const Q="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,tt=Q.fetch.bind(Q);var et,rt;function nt(t,e,r,n,o){switch(t.authType){case et.Auto:e&&r&&(t.headers.Authorization=J(e,r));break;case et.Digest:t.digest=function(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}(e,r,o);break;case et.None:break;case et.Password:t.headers.Authorization=J(e,r);break;case et.Token:t.headers.Authorization=`${(i=n).token_type} ${i.access_token}`;break;default:throw new R({info:{code:rt.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}var i}Q.Headers,Q.Request,Q.Response,function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(et||(et={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(rt||(rt={}));var ot=n(11568),it=n(11083);const st="@@HOTPATCHER",at=()=>{};function lt(t){return{original:t,methods:[t],final:!1}}class ct{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=st}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==st)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||at)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return function(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=lt(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(lt(e),{original:r})}else this.configuration.registry[t]=lt(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}let ut=null;function pt(){return"string"==typeof TARGET&&"react-native"===TARGET}function ht(){return"string"==typeof TARGET&&"web"===TARGET}function ft(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function dt(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?gt(e,t):ft(t)}return e}function gt(t,e){const r=ft(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?gt(r[t],e[t]):ft(e[t]):r[t]=e[t]:r[t]=e[t]}),r}function mt(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function yt(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}var bt=n(88310);const vt="function"==typeof ArrayBuffer,{toString:wt}=Object.prototype;function At(t){return vt&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===wt.call(t))}function xt(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function Et(t,e,r){const n=ft(t);return n.headers=yt(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function St(t,e){return e.authType===et.Auto?async function(t,e){const r=await Ot(t);return r.ok?(e.authType=et.Password,r):401==r.status&&q(r)?(e.authType=et.Digest,nt(e,e.username,e.password,void 0,void 0),t._digest=e.digest,_t(t)):r}(t,e):t._digest?_t(t):Ot(t)}async function _t(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=dt(t,{headers:{Authorization:W(t,e)}}));const r=await Ot(t);if(401==r.status){if(e.hasDigestAuth=function(t,e){if(!q(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}(r,e),e.hasDigestAuth){t=dt(t,{headers:{Authorization:W(t,e)}});const r=await Ot(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function Ot(t){const e=(ut||(ut=new ct),ut);return e.patchInline("request",t=>e.patchInline("fetch",tt,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=yt(e,t.headers)),void 0!==t.data){const[n,o]=function(t){if(!ht()&&!pt()&&t instanceof bt.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if(xt(t))return[t,{}];if(At(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}(t.data);r.body=n,e=yt(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),ht()||pt()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new ot.Agent:t.httpsAgent||new it.Agent),r.headers=e,r}(t)),t)}var Ct=n(68928);const Tt=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")},Nt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},jt=t=>t.replace(/[[\]\\-]/g,"\\$&"),Pt=t=>t.join(""),Rt=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const n=[],o=[];let i=r+1,s=!1,a=!1,l=!1,c=!1,u=r,p="";t:for(;ip?n.push(jt(p)+"-"+jt(e)):e===p&&n.push(jt(e)),p="",i++):t.startsWith("-]",i+1)?(n.push(jt(e+"-")),i+=2):t.startsWith("-",i+1)?(p=e,i+=2):(n.push(jt(e)),i++)}else l=!0,i++}else c=!0,i++}if(ue?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");var It;const Mt=new Set(["!","?","+","*","@"]),Lt=t=>Mt.has(t),Dt=t=>Lt(t.type),$t=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),Ut=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Ft=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),Bt=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Wt="(?!\\.)",qt=new Set(["[","."]),Ht=new Set(["..","."]),Vt=new Set("().*{}+?[]^$\\!"),Gt=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),zt="[^/]",Kt=zt+"*?",Yt=zt+"+?";class Xt{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#l;#c;#u=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#l=this.#t===this?r:this.#t.#l,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#c?this.#c:this.type?this.#c=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#c=this.#n.map(t=>String(t)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?It.#x(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let o="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!Ht.has(this.#n[0]))){const r=qt,i=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));o=i?"(?!(?:^|/)\\.\\.?(?:$|/))":s?Wt:""}let i="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(i="(?:$|\\/)"),[o+n+i,kt(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let o=this.#E(e);if(this.isStart()&&this.isEnd()&&!o&&"!"!==this.type){const t=this.toString(),e=this;return e.#n=[t],e.type=null,e.#e=void 0,[t,kt(this.toString()),!1,!1]}let i=!r||t||e?"":this.#E(!0);i===o&&(i=""),i&&(o=`(?:${o})(?:${i})*?`);let s="";return s="!"===this.type&&this.#u?(this.isStart()&&!e?Wt:"")+Yt:n+o+("!"===this.type?"))"+(!this.isStart()||e||t?"":Wt)+Kt+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),[s,kt(o),this.#e=!!this.#e,this.#r]}#E(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#x(t,e,r=!1){let n=!1,o="",i=!1,s=!1;for(let a=0;a(Tt(e),!(!r.nocomment&&"#"===e.charAt(0))&&new Se(e,r).match(t)),Qt=/^\*+([^+@!?\*\[\(]*)$/,te=t=>e=>!e.startsWith(".")&&e.endsWith(t),ee=t=>e=>e.endsWith(t),re=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),ne=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),oe=/^\*+\.\*+$/,ie=t=>!t.startsWith(".")&&t.includes("."),se=t=>"."!==t&&".."!==t&&t.includes("."),ae=/^\.\*+$/,le=t=>"."!==t&&".."!==t&&t.startsWith("."),ce=/^\*+$/,ue=t=>0!==t.length&&!t.startsWith("."),pe=t=>0!==t.length&&"."!==t&&".."!==t,he=/^\?+([^+@!?\*\[\(]*)?$/,fe=([t,e=""])=>{const r=ye([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},de=([t,e=""])=>{const r=be([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},ge=([t,e=""])=>{const r=be([t]);return e?t=>r(t)&&t.endsWith(e):r},me=([t,e=""])=>{const r=ye([t]);return e?t=>r(t)&&t.endsWith(e):r},ye=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},be=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},ve="object"==typeof Zt&&Zt?"object"==typeof Zt.env&&Zt.env&&Zt.env.__MINIMATCH_TESTING_PLATFORM__||Zt.platform:"posix";Jt.sep="win32"===ve?"\\":"/";const we=Symbol("globstar **");Jt.GLOBSTAR=we,Jt.filter=(t,e={})=>r=>Jt(r,t,e);const Ae=(t,e={})=>Object.assign({},t,e);Jt.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return Jt;const e=Jt;return Object.assign((r,n,o={})=>e(r,n,Ae(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,Ae(t,r))}static defaults(r){return e.defaults(Ae(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,Ae(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,Ae(t,n))}},unescape:(r,n={})=>e.unescape(r,Ae(t,n)),escape:(r,n={})=>e.escape(r,Ae(t,n)),filter:(r,n={})=>e.filter(r,Ae(t,n)),defaults:r=>e.defaults(Ae(t,r)),makeRe:(r,n={})=>e.makeRe(r,Ae(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,Ae(t,n)),match:(r,n,o={})=>e.match(r,n,Ae(t,o)),sep:e.sep,GLOBSTAR:we})};const xe=(t,e={})=>(Tt(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:Ct(t));Jt.braceExpand=xe,Jt.makeRe=(t,e={})=>new Se(t,e).makeRe(),Jt.match=(t,e,r={})=>{const n=new Se(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const Ee=/[?*]|[+@!]\(.*?\)|\[|\]/;class Se{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){Tt(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||ve,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&Ee.test(t[2])||Ee.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const l=r.slice(0);l[n]="**",t.push(l),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;n=2&&(t=this.levelTwoFileOptimize(t)),e.includes(we)?this.#S(t,e,r,n,o):this.#_(t,e,r,n,o)}#S(t,e,r,n,o){const i=e.indexOf(we,o),s=e.lastIndexOf(we),[a,l,c]=r?[e.slice(o,i),e.slice(i+1),[]]:[e.slice(o,i),e.slice(i+1,s),e.slice(s+1)];if(a.length){const e=t.slice(n,n+a.length);if(!this.#_(e,a,r,0,0))return!1;n+=a.length}let u=0;if(c.length){if(c.length+n>t.length)return!1;let e=t.length-c.length;if(this.#_(t,c,r,e,0))u=c.length;else{if(""!==t[t.length-1]||n+c.length===t.length)return!1;if(e--,!this.#_(t,c,r,e,0))return!1;u=c.length+1}}if(!l.length){let e=!!u;for(let r=n;r{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===we?we:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===we&&i!==we&&(void 0===i?void 0!==o&&o!==we?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==we&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=we))}),e.filter(t=>t!==we).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;t=400)throw _e(e);return e}function Ce(t,e,r=!1){return r?{data:e,headers:t.headers?mt(t.headers):{},status:t.status,statusText:t.statusText}:e}Jt.AST=Xt,Jt.Minimatch=Se,Jt.escape=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&"),Jt.unescape=kt;const Te=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",Ne=new RegExp("^["+Te+"]["+Te+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function je(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;tRe.includes(t)?"__"+t:t,Me={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:Ie};function Le(t,e){if("string"!=typeof t)return;const r=t.toLowerCase();if(Re.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);if(ke.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`)}function De(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,maxEntityCount:100,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:t.maxEntitySize??1e4,maxExpansionDepth:t.maxExpansionDepth??10,maxTotalExpansions:t.maxTotalExpansions??1e3,maxExpandedLength:t.maxExpandedLength??1e5,maxEntityCount:t.maxEntityCount??100,allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null}:De(!0)}const $e=function(t){const e=Object.assign({},Me,t),r=[{value:e.attributeNamePrefix,name:"attributeNamePrefix"},{value:e.attributesGroupName,name:"attributesGroupName"},{value:e.textNodeName,name:"textNodeName"},{value:e.cdataPropName,name:"cdataPropName"},{value:e.commentPropName,name:"commentPropName"}];for(const{value:t,name:e}of r)t&&Le(t,e);return null===e.onDangerousProperty&&(e.onDangerousProperty=Ie),e.processEntities=De(e.processEntities),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),e};let Ue;Ue="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class Fe{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][Ue]={startIndex:e})}static getMetaDataSymbol(){return Ue}}class Be{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const r=Object.create(null);let n=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let o=1,i=!1,s=!1,a="";for(;e"===t[e]){if(s?"-"===t[e-1]&&"-"===t[e-2]&&(s=!1,o--):o--,0===o)break}else"["===t[e]?i=!0:a+=t[e];else{if(i&&qe(t,"!ENTITY",e)){let o,i;if(e+=7,[o,i,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===i.indexOf("&")){if(!1!==this.options.enabled&&this.options.maxEntityCount&&n>=this.options.maxEntityCount)throw new Error(`Entity count (${n+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);const t=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");r[o]={regx:RegExp(`&${t};`,"g"),val:i},n++}}else if(i&&qe(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(i&&qe(t,"!ATTLIST",e))e+=8;else if(i&&qe(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!qe(t,"!--",e))throw new Error("Invalid DOCTYPE");s=!0}o++,a=""}if(0!==o)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=We(t,e);let r="";for(;ethis.options.maxEntitySize)throw new Error(`Entity "${r}" size (${n.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[r,n,--e]}readNotationExp(t,e){e=We(t,e);let r="";for(;e{for(;e0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const o=this.siblingStacks[n],i=r?`${r}:${t}`:t,s=o.get(i)||0;let a=0;for(const t of o.values())a+=t;o.set(i,s+1);const l={tag:t,position:a,counter:s};null!=r&&(l.namespace=r),null!=e&&(l.values=e),this.path.push(l)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const r=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(r)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[r];if("deep-wildcard"===n.type){if(r--,r<0)return!0;const n=t[r];let o=!1;for(let t=e;t>=0;t--){const i=t===this.path.length-1;if(this._matchSegment(n,this.path[t],i)){e=t-1,r--,o=!0;break}}if(!o)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,r--}}return r<0}_matchSegment(t,e,r){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!r)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const r=e.values[t.attrName];if(String(r)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!r)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}class Xe{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let r=0,n="";for(;r0){const r=t.substring(0,e);if("xmlns"!==r)return r}}class Qe{constructor(t){var e;if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>dr(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>dr(e,16,"&#x")}},this.addExternalEntities=tr,this.parseXml=ir,this.parseTextData=er,this.resolveNameSpace=rr,this.buildAttributesMap=or,this.isItStopNode=cr,this.replaceEntitiesValue=ar,this.readStopNodeData=hr,this.saveTextToParentTag=lr,this.addChild=sr,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1,this.entityExpansionCount=0,this.currentExpandedLength=0,this.matcher=new Ye,this.isCurrentNodeStopNode=!1,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodeExpressions=[];for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t,e,r));const n=this.options.jPath?r.toString():r,a=this.options.tagValueProcessor(e,t,n,o,i);return null==a?t:typeof a!=typeof t||a!==t?a:this.options.trimValues||t.trim()===t?fr(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function rr(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const nr=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function or(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const n=je(t,nr),o=n.length,i={},s={};for(let t=0;t0&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(s);for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}o=gr(this.options.transformTagName,o,"",this.options).tagName,r&&(n=this.saveTextToParentTag(n,r,this.matcher));const s=this.matcher.getCurrentTag();if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);s&&-1!==this.options.unpairedTags.indexOf(s)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=pr(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,this.matcher),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new Fe(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,this.matcher,e.tagName)),this.addChild(r,t,this.matcher,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=ur(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,this.matcher),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=o.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=ur(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,this.matcher);let s=this.parseTextData(o,r.tagname,this.matcher,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,s),i=e+2}else{let o=pr(t,i,this.options.removeNSPrefix);if(!o){const e=t.substring(Math.max(0,i-50),Math.min(t.length,i+50));throw new Error(`readTagExp returned undefined at position ${i}. Context: "${e}"`)}let s=o.tagName;const a=o.rawTagName;let l=o.tagExp,c=o.attrExpPresent,u=o.closeIndex;if(({tagName:s,tagExp:l}=gr(this.options.transformTagName,s,l,this.options)),this.options.strictReservedNames&&(s===this.options.commentPropName||s===this.options.cdataPropName))throw new Error(`Invalid tag name: ${s}`);r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,this.matcher,!1));const p=r;p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());let h=!1;l.length>0&&l.lastIndexOf("/")===l.length-1&&(h=!0,"/"===s[s.length-1]?(s=s.substr(0,s.length-1),l=s):l=l.substr(0,l.length-1),c=s!==l);let f,d=null,g={};f=Je(a),s!==e.tagname&&this.matcher.push(s,{},f),s!==l&&c&&(d=this.buildAttributesMap(l,this.matcher,s),d&&(g=Ze(d,this.options))),s!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode(this.stopNodeExpressions,this.matcher));const m=i;if(this.isCurrentNodeStopNode){let e="";if(h)i=o.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(s))i=o.closeIndex;else{const r=this.readStopNodeData(t,a,u+1);if(!r)throw new Error(`Unexpected end of ${a}`);i=r.i,e=r.tagContent}const n=new Fe(s);d&&(n[":@"]=d),n.add(this.options.textNodeName,e),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,n,this.matcher,m)}else{if(h){({tagName:s,tagExp:l}=gr(this.options.transformTagName,s,l,this.options));const t=new Fe(s);d&&(t[":@"]=d),this.addChild(r,t,this.matcher,m),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(-1!==this.options.unpairedTags.indexOf(s)){const t=new Fe(s);d&&(t[":@"]=d),this.addChild(r,t,this.matcher,m),this.matcher.pop(),this.isCurrentNodeStopNode=!1,i=o.closeIndex;continue}{const t=new Fe(s);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),d&&(t[":@"]=d),this.addChild(r,t,this.matcher,m),r=t}}n="",i=u}}else n+=t[i];return e.child};function sr(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.jPath?r.toString():r,i=this.options.updateTag(e.tagname,o,e[":@"]);!1===i||("string"==typeof i?(e.tagname=i,t.addChild(e,n)):t.addChild(e,n))}function ar(t,e,r){const n=this.options.processEntities;if(!n||!n.enabled)return t;if(n.allowedTags){const o=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(e):n.allowedTags(e,o)))return t}if(n.tagFilter){const o=this.options.jPath?r.toString():r;if(!n.tagFilter(e,o))return t}for(const e of Object.keys(this.docTypeEntities)){const r=this.docTypeEntities[e],o=t.match(r.regx);if(o){if(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions)throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);const e=t.length;if(t=t.replace(r.regx,r.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-e,this.currentExpandedLength>n.maxExpandedLength))throw new Error(`Total expanded content size exceeded: ${this.currentExpandedLength} > ${n.maxExpandedLength}`)}}for(const e of Object.keys(this.lastEntities)){const r=this.lastEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(const e of Object.keys(this.htmlEntities)){const r=this.htmlEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)}function lr(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function cr(t,e){if(!t||0===t.length)return!1;for(let r=0;r"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=ur(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=ur(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=ur(t,"]]>",r,"StopNode is not closed.")-2;else{const n=pr(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function fr(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},ze,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&Ve.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(Ke);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const o=Ge.exec(r);if(o){const i=o[1]||"",s=o[2];let a=(n=o[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const l=i?"."===t[s.length+1]:"."===t[s.length];if(!e.leadingZeros&&(s.length>1||1===s.length&&!l))return t;{const n=Number(r),o=String(n);if(0===n)return n;if(-1!==o.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===o||o===a||o===`${i}${a}`?n:t;let l=s?a:r;return s?l===o||i+l===o?n:t:l===o||l===i+o?n:t}}return t}var n}(t,r)}return void 0!==t?t:""}function dr(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}function gr(t,e,r,n){if(t){const n=t(e);r===e&&(r=n),e=n}return{tagName:e=mr(e,n),tagExp:r}}function mr(t,e){if(ke.includes(t))throw new Error(`[SECURITY] Invalid name: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);return Re.includes(t)?e.onDangerousProperty(t):t}const yr=Fe.getMetaDataSymbol();function br(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;const r={};for(const n in t)n.startsWith(e)?r[n.substring(e.length)]=t[n]:r[n]=t[n];return r}function vr(t,e,r){return wr(t,e,r)}function wr(t,e,r){let n;const o={};for(let i=0;i0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function Ar(t){const e=Object.keys(t);for(let t=0;t5&&"xml"===n)return Rr("InvalidXml","XML declaration allowed only at the start of the document.",Mr(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function Cr(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function Tr(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const Nr=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function jr(t,e){const r=je(t,Nr),n={};for(let t=0;t"!==t[i]&&" "!==t[i]&&"\t"!==t[i]&&"\n"!==t[i]&&"\r"!==t[i];i++)l+=t[i];if(l=l.trim(),"/"===l[l.length-1]&&(l=l.substring(0,l.length-1),i--),!Ir(l)){let e;return e=0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",Rr("InvalidTag",e,Mr(t,i))}const c=Tr(t,i);if(!1===c)return Rr("InvalidAttr","Attributes for '"+l+"' have open quote.",Mr(t,i));let u=c.value;if(i=c.index,"/"===u[u.length-1]){const r=i-u.length;u=u.substring(0,u.length-1);const o=jr(u,e);if(!0!==o)return Rr(o.err.code,o.err.msg,Mr(t,r+o.err.line));n=!0}else if(a){if(!c.tagClosed)return Rr("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",Mr(t,i));if(u.trim().length>0)return Rr("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",Mr(t,s));if(0===r.length)return Rr("InvalidTag","Closing tag '"+l+"' has not been opened.",Mr(t,s));{const e=r.pop();if(l!==e.tagName){let r=Mr(t,e.tagStartPos);return Rr("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+l+"'.",Mr(t,s))}0==r.length&&(o=!0)}}else{const a=jr(u,e);if(!0!==a)return Rr(a.err.code,a.err.msg,Mr(t,i-u.length+a.err.line));if(!0===o)return Rr("InvalidXml","Multiple possible root nodes found.",Mr(t,i));-1!==e.unpairedTags.indexOf(l)||r.push({tagName:l,tagStartPos:s}),n=!0}for(i++;i0)||Rr("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):Rr("InvalidXml","Start tag expected.",1)}(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new Qe(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:vr(n,this.options,r.matcher)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return Fe.getMetaDataSymbol()}}var $r,Ur=n(26602);function Fr(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function Br(t,e,r=$r.Original){const n=Ur.get(t,e);return"array"===r&&!1===Array.isArray(n)?[n]:"object"===r&&Array.isArray(n)?n[0]:n}function Wr(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[Fr]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return Ur.set(r,"multistatus.response",Br(r,"multistatus.response",$r.Array)),Ur.set(r,"multistatus.response",Ur.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?Ur.set(e,"status",Br(e,"status",$r.Object)):(Ur.set(e,"propstat",Br(e,"propstat",$r.Object)),Ur.set(e,"propstat.prop",Br(e,"propstat.prop",$r.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new Dr({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function qr(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:o="0",resourcetype:i=null,getcontenttype:s=null,getetag:a=null}=t,l=i&&"object"==typeof i&&void 0!==i.collection?"directory":"file",c={filename:e,basename:k.basename(e),lastmod:n,size:parseInt(o,10),type:l,etag:"string"==typeof a?a.replace(/"/g,""):null};return"file"===l&&(c.mime=s&&"string"==typeof s?s.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function Hr(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}async function Vr(t,e,r={}){const{details:n=!1}=r,o=Et({url:F(t.remoteURL,L(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),i=await St(o,t);Oe(t,i);const s=await i.text(),a=function(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,a,l]=i.split(" ",3),c=parseInt(a,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return qr(o,$(e),r)}(await Wr(s,t.parsing),e,n);return Ce(i,a,n)}async function Gr(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=function(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=k.dirname(e)}while(e&&"/"!==e);return r}($(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let o=!1;for(const i of n)if(o)await Gr(t,i,{...r,recursive:!1});else try{if("directory"!==(await Vr(t,i)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;o=!0,await Gr(t,i,{...r,recursive:!1})}}(t,e,r);const n=Et({url:F(t.remoteURL,(o=L(e),o.endsWith("/")?o:o+"/")),method:"MKCOL"},t,r);var o;Oe(t,await St(n,t))}!function(t){t.Array="array",t.Object="object",t.Original="original"}($r||($r={}));const zr=()=>{};var Kr=n(62045).hp;const Yr=t=>t;function Xr(t,e){let r="";e.format&&e.indentBy.length>0&&(r="\n");const n=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let r=t.toString();return r=on(r,e),r}return""}for(let a=0;a`,s=!1,n.pop();continue}if(c===e.commentPropName){i+=r+`\x3c!--${l[c][0][e.textNodeName]}--\x3e`,s=!0,n.pop();continue}if("?"===c[0]){const t=rn(l[":@"],e,p),o="?xml"===c?"":r;let a=l[c][0][e.textNodeName];a=0!==a.length?" "+a:"",i+=o+`<${c}${a}${t}?>`,s=!0,n.pop();continue}let h=r;""!==h&&(h+=e.indentBy);const f=r+`<${c}${rn(l[":@"],e,p)}`;let d;d=p?Qr(l[c],e):Zr(l[c],e,h,n,o),-1!==e.unpairedTags.indexOf(c)?e.suppressUnpairedNode?i+=f+">":i+=f+"/>":d&&0!==d.length||!e.suppressEmptyNode?d&&d.endsWith(">")?i+=f+`>${d}${r}`:(i+=f+">",d&&""!==r&&(d.includes("/>")||d.includes("`):i+=f+"/>",s=!0,n.pop()}return i}function Jr(t,e){if(!t||e.ignoreAttributes)return null;const r={};let n=!1;for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o.startsWith(e.attributeNamePrefix)?o.substr(e.attributeNamePrefix.length):o]=t[o],n=!0);return n?r:null}function Qr(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let r="";for(let n=0;n${n}`:r+=`<${i}${t}/>`}}}return r}function tn(t,e){let r="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let o=t[n];!0===o&&e.suppressBooleanAttributes?r+=` ${n.substr(e.attributeNamePrefix.length)}`:r+=` ${n.substr(e.attributeNamePrefix.length)}="${o}"`}return r}function en(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function an(t){if(this.options=Object.assign({},sn,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=un),this.processTextOrObjNode=ln,this.options.format?(this.indentate=cn,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function ln(t,e,r,n){const o=this.extractAttributes(t);if(n.push(e,o),this.checkStopNode(n)){const o=this.buildRawContent(t),i=this.buildAttributesForStopNode(t);return n.pop(),this.buildObjectNode(o,e,i,r)}const i=this.j2x(t,r+1,n);return n.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,r,n):this.buildObjectNode(i.val,e,i.attrStr,r)}function cn(t){return this.options.indentBy.repeat(t)}function un(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}an.prototype.build=function(t){if(this.options.preserveOrder)return Xr(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new Ye;return this.j2x(t,0,e).val}},an.prototype.j2x=function(t,e,r){let n="",o="";if(this.options.maxNestedTags&&r.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const i=this.options.jPath?r.toString():r,s=this.checkStopNode(r);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(o+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?o+="":"?"===a[0]?o+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)o+=this.buildTextValNode(t[a],a,"",e,r);else if("object"!=typeof t[a]){const l=this.isAttribute(a);if(l&&!this.ignoreAttributesFn(l,i))n+=this.buildAttrPairStr(l,""+t[a],s);else if(!l)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);o+=this.replaceEntitiesValue(e)}else{r.push(a);const n=this.checkStopNode(r);if(r.pop(),n){const r=""+t[a];o+=""===r?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+r+""+t+"${t}`;else if("object"==typeof t&&null!==t){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);e+=""===n?`<${r}${o}/>`:`<${r}${o}>${n}`}}else if("object"==typeof n&&null!==n){const t=this.buildRawContent(n),o=this.buildAttributesForStopNode(n);e+=""===t?`<${r}${o}/>`:`<${r}${o}>${t}`}else e+=`<${r}>${n}`}return e},an.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const r=t[this.options.attributesGroupName];for(let t in r){if(!Object.prototype.hasOwnProperty.call(r,t))continue;const n=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,o=r[t];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}else for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;const n=this.isAttribute(r);if(n){const o=t[r];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}return e},an.prototype.buildObjectNode=function(t,e,r,n){if(""===t)return"?"===e[0]?this.indentate(n)+"<"+e+r+"?"+this.tagEndChar:this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar;{let o=""+t+o}},an.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;et.trim()),server:o.headers.get("Server")??""}}const yn="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";var bn=n(63814);function vn(){return(0,bn.dC)("dav/comments")}const wn=function(t,e={}){const{authType:r=null,remoteBasePath:n,contactHref:o=yn,ha1:i,headers:s={},httpAgent:a,httpsAgent:l,password:c,token:u,username:p,withCredentials:h}=e;let f=r;f||(f=p||c?et.Password:et.None);const d={authType:f,remoteBasePath:n,contactHref:o,ha1:i,headers:Object.assign({},s),httpAgent:a,httpsAgent:l,password:c,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[Fr]},remotePath:U(t),remoteURL:t,token:u,username:p,withCredentials:h};return nt(d,p,c,u,i),{copyFile:(t,e,r)=>async function(t,e,r,n={}){const o=Et({url:F(t.remoteURL,L(e)),method:"COPY",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T",Depth:n.shallow?"0":"infinity"}},t,n);Oe(t,await St(o,t))}(d,t,e,r),createDirectory:(t,e)=>Gr(d,t,e),createReadStream:(t,e)=>function(t,e,r={}){const n=new(0,bt.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const o=Et({url:F(t.remoteURL,L(e)),method:"GET",headers:n},t,r),i=await St(o,t);if(Oe(t,i),n.Range&&206!==i.status){const t=new Error(`Invalid response code for partial request: ${i.status}`);throw t.status=i.status,t}return r.callback&&setTimeout(()=>{r.callback(i)},0),i.body}(t,e,r).then(t=>{t.pipe(n)}).catch(t=>{n.emit("error",t)}),n}(d,t,e),createWriteStream:(t,e,r)=>function(t,e,r={},n=zr){const o=new(0,bt.PassThrough),i={};return!1===r.overwrite&&(i["If-None-Match"]="*"),St(Et({url:F(t.remoteURL,L(e)),method:"PUT",headers:i,data:o,maxRedirects:0},t,r),t).then(e=>Oe(t,e)).then(t=>{setTimeout(()=>{n(t)},0)}).catch(t=>{o.emit("error",t)}),o}(d,t,e,r),customRequest:(t,e)=>async function(t,e,r){r.url||(r.url=F(t.remoteURL,L(e)));const n=Et(r,t,{}),o=await St(n,t);return Oe(t,o),o}(d,t,e),deleteFile:(t,e)=>async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e)),method:"DELETE"},t,r);Oe(t,await St(n,t))}(d,t,e),exists:(t,e)=>async function(t,e,r={}){try{return await Vr(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}(d,t,e),getDirectoryContents:(t,e)=>async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),o=await St(n,t);Oe(t,o);const i=await o.text();if(!i)throw new Error("Failed parsing directory contents: Empty response");const s=await Wr(i,t.parsing),a=D(e);let l=function(t,e,r,n=!1,o=!1){const i=k.join(e,"/"),{multistatus:{response:s}}=t,a=s.map(t=>{const e=function(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new R(t,"Failed normalising HREF")}}(t.href),{propstat:{prop:r}}=t;return qr(r,"/"===i?decodeURIComponent($(e)):$(k.relative(decodeURIComponent(i),decodeURIComponent(e))),n)});return o?a:a.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(s,D(t.remoteBasePath||t.remotePath),a,r.details,r.includeSelf);return r.glob&&(l=function(t,e){return t.filter(t=>Jt(t.filename,e,{matchBase:!0}))}(l,r.glob)),Ce(o,l,r.details)}(d,t,e),getFileContents:(t,e)=>async function(t,e,r={}){const{format:n="binary"}=r;if("binary"!==n&&"text"!==n)throw new R({info:{code:rt.InvalidOutputFormat}},`Invalid output format: ${n}`);return"text"===n?async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[Yr]},t,r),o=await St(n,t);Oe(t,o);const i=await o.text();return Ce(o,i,r.details)}(t,e,r):async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e)),method:"GET"},t,r),o=await St(n,t);let i;return Oe(t,o),i=ht()||pt()?await o.arrayBuffer():Kr.from(await o.arrayBuffer()),Ce(o,i,r.details)}(t,e,r)}(d,t,e),getFileDownloadLink:t=>function(t,e){let r=F(t.remoteURL,L(e));const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new R({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getFileUploadLink:t=>function(t,e){let r=`${F(t.remoteURL,L(e))}?Content-Type=application/octet-stream`;const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new R({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getHeaders:()=>Object.assign({},d.headers),getQuota:t=>async function(t,e={}){const r=e.path||"/",n=Et({url:F(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),o=await St(n,t);Oe(t,o);const i=await o.text();return Ce(o,function(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":n}}}=e;return void 0!==r&&void 0!==n?{used:parseInt(String(r),10),available:Hr(n)}:null}catch(t){}return null}(await Wr(i,t.parsing)),e.details)}(d,t),lock:(t,e)=>async function(t,e,r={}){const{refreshToken:n,timeout:o=dn}=r,i={Accept:"text/plain,application/xml",Timeout:o};n&&(i.If=n);const s=Et({url:F(t.remoteURL,L(e)),method:"LOCK",headers:i,data:hn(t.contactHref)},t,r),a=await St(s,t);Oe(t,a);const l=(p=await a.text(),new Dr({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(p)),c=Ur.get(l,"prop.lockdiscovery.activelock.locktoken.href"),u=Ur.get(l,"prop.lockdiscovery.activelock.timeout");var p;if(!c)throw _e(a,"No lock token received: ");return{token:c,serverTimeout:u}}(d,t,e),moveFile:(t,e,r)=>async function(t,e,r,n={}){const o=Et({url:F(t.remoteURL,L(e)),method:"MOVE",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T"}},t,n);Oe(t,await St(o,t))}(d,t,e,r),putFileContents:(t,e,r)=>async function(t,e,r,n={}){const{contentLength:o=!0,overwrite:i=!0}=n,s={"Content-Type":"application/octet-stream"};!ht()&&!pt()&&void 0!==bt&&void 0!==bt?.Readable&&r instanceof bt.Readable||!1===o||(s["Content-Length"]="number"==typeof o?`${o}`:`${function(t){if(At(t))return t.byteLength;if(xt(t))return t.length;if("string"==typeof t)return(0,gn.d)(t);throw new R({info:{code:rt.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(r)}`),i||(s["If-None-Match"]="*");const a=Et({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:r},t,n),l=await St(a,t);try{Oe(t,l)}catch(t){const e=t;if(412!==e.status||i)throw e;return!1}return!0}(d,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>async function(t,e,r,n,o,i={}){const s=await mn(t,e,i);if(s.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new R({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(n-r+1),"X-Update-Range":`bytes=${r}-${n}`},a=Et({url:F(t.remoteURL,L(e)),method:"PATCH",headers:s,data:o},t,i);Oe(t,await St(a,t))}(t,e,r,n,o,i);if(s.server.includes("Apache")&&s.compliance.includes(""))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new R({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/octet-stream","Content-Length":""+(n-r+1),"Content-Range":`bytes ${r}-${n}/*`},a=Et({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:o},t,i);Oe(t,await St(a,t))}(t,e,r,n,o,i);throw new R({info:{code:rt.NotSupported}},"Not supported")}(d,t,e,r,n,o),getDAVCompliance:t=>mn(d,t),search:(t,e)=>async function(t,e,r={}){const{details:n=!1}=r,o=Et({url:F(t.remoteURL,L(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),i=await St(o,t);Oe(t,i);const s=await i.text(),a=function(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith(L(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(qr(t.propstat.prop,e,r))}),n}(await Wr(s,t.parsing),e,n);return Ce(i,a,n)}(d,t,e),setHeaders:t=>{d.headers=Object.assign({},t)},stat:(t,e)=>Vr(d,t,e),unlock:(t,e,r)=>async function(t,e,r,n={}){const o=Et({url:F(t.remoteURL,L(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),i=await St(o,t);if(Oe(t,i),204!==i.status&&200!==i.status)throw _e(i)}(d,t,e,r),registerAttributeParser:t=>{d.parsing.attributeParsers.push(t)},registerTagParser:t=>{d.parsing.tagParsers.push(t)}}}(vn());function An(t){wn.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,i.zo)(An),An((0,i.do)());const xn=wn;var En=n(19051);function Sn(t,e=1){const r=new DOMParser;let n=t;for(let t=0;t({idsInLimbo:[]}),actions:{addId(t){this.idsInLimbo.push(t)},removeId(t){const e=this.idsInLimbo.indexOf(t);e>-1&&this.idsInLimbo.splice(e,1)},checkForId(t){return this.idsInLimbo.includes(t)}}}),On={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data:()=>({deleted:!1,editing:!1,loading:!1}),computed:{...(0,a.n2)(_n)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await async function(t,e,r,n){const o=["",t,e,r].join("/");return await xn.customRequest(o,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${n}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.resourceId,this.id,e),o.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to edit the comment")),o.error("An error occurred while trying to edit the comment",{error:e})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,c.Br);(0,c._h)(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await async function(t,e,r){const n=["",t,e,r].join("/");await xn.deleteFile(n)}(this.resourceType,this.resourceId,this.id),o.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to delete the comment")),o.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const t=await async function(t,e,r){const n=["",t,e].join("/"),o=await En.Ay.post(vn()+n,{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:t,verb:"comment"}),s=n+"/"+parseInt(o.headers["content-location"].split("/").pop()),a=await xn.stat(s,{details:!0}),l=a.data.props;return l.actorDisplayName=Sn(l.actorDisplayName,2),l.message=Sn(l.message,2),a.data}(this.resourceType,this.resourceId,e);o.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:t}),this.$emit("new",t),this.$emit("update:message",""),this.localMessage=""}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to create the comment")),o.error("An error occurred while trying to create the comment",{error:e})}finally{this.loading=!1}}}},Cn={name:"Comment",components:{IconArrowRight:_.A,IconClose:O.A,IconTrashCanOutline:T.A,IconPencilOutline:C.A,NcActionButton:b.A,NcActions:v.A,NcActionSeparator:w.A,NcAvatar:A.A,NcButton:p.A,NcDateTime:x.A,NcLoadingIcon:E.A,NcRichContenteditable:()=>Promise.all([n.e(4208),n.e(5528)]).then(n.bind(n,95528)),NcRichText:()=>Promise.all([n.e(4208),n.e(4508)]).then(n.bind(n,64508))},mixins:[On],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data:()=>({expanded:!1,localMessage:"",submitted:!1}),computed:{...(0,a.n2)(_n),isOwnComment(){return(0,i.HW)().uid===this.actorId},richContent(){const t={};let e=this.localMessage;return Object.keys(this.userData).forEach((r,n)=>{const o=`mention-${n}`,i=new RegExp(`@${r}|@"${r}"`,"g");e=e.replace(i,`{${o}}`),t[o]={component:S.A,props:{user:r,displayName:this.userData[r].label,primary:this.userData[r].primary}}}),{mentions:t,message:e}},isEmptyMessage(){return!this.localMessage||""===this.localMessage.trim()},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(t){this.updateLocalMessage(t)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:s.Tl,updateLocalMessage(t){this.localMessage=t.toString(),this.submitted=!1},onSubmit(){if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick(()=>{this.$refs.editor.$el.focus()})):void this.onEditComment(this.localMessage.trim())},onExpand(){this.expanded=!0}}};var Tn=n(85072),Nn=n.n(Tn),jn=n(97825),Pn=n.n(jn),Rn=n(77659),kn=n.n(Rn),In=n(55056),Mn=n.n(In),Ln=n(10540),Dn=n.n(Ln),$n=n(41113),Un=n.n($n),Fn=n(22408),Bn={};Bn.styleTagTransform=Un(),Bn.setAttributes=Mn(),Bn.insert=kn().bind(null,"head"),Bn.domAPI=Pn(),Bn.insertStyleElement=Dn(),Nn()(Fn.A,Bn),Fn.A&&Fn.A.locals&&Fn.A.locals;var Wn=(0,g.A)(Cn,function(){var t=this,e=t._self._c;return e(t.tag,{directives:[{name:"show",rawName:"v-show",value:!t.deleted&&!t.isLimbo,expression:"!deleted && !isLimbo"}],tag:"component",staticClass:"comment",class:{"comment--loading":t.loading}},[e("div",{staticClass:"comment__side"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":t.actorDisplayName,user:t.actorId,size:32}})],1),t._v(" "),e("div",{staticClass:"comment__body"},[e("div",{staticClass:"comment__header"},[e("span",{staticClass:"comment__author"},[t._v(t._s(t.actorDisplayName))]),t._v(" "),t.isOwnComment&&t.id&&!t.loading?e("NcActions",{staticClass:"comment__actions"},[t.editing?e("NcActionButton",{on:{click:t.onEditCancel},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconClose",{attrs:{size:20}})]},proxy:!0}],null,!1,2888946197)},[t._v("\n\t\t\t\t\t"+t._s(t.t("comments","Cancel edit"))+"\n\t\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconPencilOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,3345211262)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Edit comment"))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onDeleteWithUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconTrashCanOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1034796883)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Delete comment"))+"\n\t\t\t\t\t")])]],2):t._e(),t._v(" "),t.id&&t.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):t.creationDateTime?e("NcDateTime",{staticClass:"comment__timestamp",attrs:{timestamp:t.timestamp,"ignore-seconds":!0}}):t._e()],1),t._v(" "),t.editor||t.editing?e("form",{staticClass:"comment__editor",on:{submit:function(t){t.preventDefault()}}},[e("div",{staticClass:"comment__editor-group"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":t.autoComplete,contenteditable:!t.loading,label:t.editor?t.t("comments","New comment"):t.t("comments","Edit comment"),placeholder:t.t("comments","Write a comment …"),"model-value":t.localMessage,"user-data":t.userData,"aria-describedby":"tab-comments__editor-description"},on:{"update:value":t.updateLocalMessage,submit:t.onSubmit}}),t._v(" "),e("div",{staticClass:"comment__submit"},[e("NcButton",{attrs:{variant:"tertiary-no-background",type:"submit","aria-label":t.t("comments","Post comment"),disabled:t.isEmptyMessage},on:{click:t.onSubmit},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("NcLoadingIcon"):e("IconArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,758946661)})],1)],1),t._v(" "),e("div",{staticClass:"comment__editor-description",attrs:{id:"tab-comments__editor-description"}},[t._v("\n\t\t\t\t"+t._s(t.t("comments","@ for mentions, : for emoji, / for smart picker"))+"\n\t\t\t")])]):e("NcRichText",{staticClass:"comment__message",class:{"comment__message--expanded":t.expanded},attrs:{text:t.richContent.message,arguments:t.richContent.mentions,"use-markdown":""},nativeOn:{click:function(e){return t.onExpand.apply(null,arguments)}}})],1)])},[],!1,null,"70317f94",null);const qn=Wn.exports;var Hn=n(81222);const Vn=(0,l.pM)({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(t,e){const{data:r}=await En.Ay.get((0,bn.KT)("core/autocomplete/get"),{params:{search:t,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:(0,Hn.C)("comments","maxAutoCompleteResults")}});return r.ocs.data.forEach(t=>{this.userData[t.id]=t}),e(Object.values(this.userData))},genMentionsData(t){return Object.values(t).flat().forEach(t=>{this.userData[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.HW)()?.uid===t.mentionId}}),this.userData}}});async function Gn({resourceType:t,resourceId:e},r){const n=["",t,e].join("/"),o=r.datetime?`${r.datetime.toISOString()}`:"",i=await xn.customRequest(n,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??20}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${o}\n\t\t\t`,...r}),s=await i.text();return Ce(i,function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return qr(r,r.id.toString(),e)})}(await Wr(s),!0),!0)}const zn={name:"Comments",components:{Comment:qn,NcEmptyContent:h.A,NcButton:p.A,IconRefresh:y.A,IconMessageReplyTextOutline:m,IconAlertCircleOutline:f.A},directives:{elementVisibility:u.Zx},mixins:[Vn],data:()=>({error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:qn,userData:{}}),computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&0===this.offset}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:s.Tl,async onVisibilityChange(t){if(t)try{await function(t,e,r){const n=["",t,e].join("/"),o=r.toUTCString();return xn.customRequest(n,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.currentResourceId,new Date)}catch(t){(0,c.Qg)(t.message||(0,s.Tl)("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:e}=function(t){const e=new AbortController,r=e.signal;return{request:async function(e,n){return await t(e,{signal:r,...n})},abort:()=>e.abort()}}(Gn);this.cancelRequest=e;const{data:r}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${r.length} comments`,{comments:r}),r.length<20&&(this.done=!0);for(const t of r)t.props.actorId=t.props.actorId.toString();this.comments=[...this.comments,...r],this.offset+=20}catch(t){if("cancel"===t.message)return;this.error=(0,s.Tl)("comments","Unable to load the comments list"),o.error("Error loading the comments list",{error:t})}finally{this.loading=!1}},onNewComment(t){this.comments.unshift(t)},onDelete(t){const e=this.comments.findIndex(e=>e.props.id===t);e>-1?this.comments.splice(e,1):o.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},Kn=zn;var Yn=n(94262),Xn={};Xn.styleTagTransform=Un(),Xn.setAttributes=Mn(),Xn.insert=kn().bind(null,"head"),Xn.domAPI=Pn(),Xn.insertStyleElement=Dn(),Nn()(Yn.A,Xn),Yn.A&&Yn.A.locals&&Yn.A.locals;const Zn=(0,g.A)(Kn,function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.onVisibilityChange,expression:"onVisibilityChange"}],staticClass:"comments",class:{"icon-loading":t.isFirstLoading}},[e("Comment",t._b({staticClass:"comments__writer",attrs:{"auto-complete":t.autoComplete,"resource-type":t.resourceType,editor:!0,"user-data":t.userData,"resource-id":t.currentResourceId},on:{new:t.onNewComment}},"Comment",t.editorData,!1)),t._v(" "),t.isFirstLoading?t._e():[!t.hasComments&&t.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{name:t.t("comments","No comments yet, start the conversation!")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconMessageReplyTextOutline")]},proxy:!0}],null,!1,326612300)}):e("ul",t._l(t.comments,function(r){return e("Comment",t._b({key:r.props.id,staticClass:"comments__list",attrs:{tag:"li","auto-complete":t.autoComplete,"resource-type":t.resourceType,message:r.props.message,"resource-id":t.currentResourceId,"user-data":t.genMentionsData(r.props.mentions)},on:{"update:message":function(e){return t.$set(r.props,"message",e)},delete:t.onDelete}},"Comment",r.props,!1))}),1),t._v(" "),t.loading&&!t.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):t.hasComments&&t.done?e("div",{staticClass:"comments__info"},[t._v("\n\t\t\t"+t._s(t.t("comments","No more messages"))+"\n\t\t")]):t.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{name:t.error},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAlertCircleOutline")]},proxy:!0}],null,!1,3663249556)}),t._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:t.getComments},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconRefresh")]},proxy:!0}],null,!1,2997625269)},[t._v("\n\t\t\t\t"+t._s(t.t("comments","Retry"))+"\n\t\t\t")])]:t._e()]],2)},[],!1,null,"6c8c157a",null).exports;l.Ay.use(a.R2),n.nc=(0,i.aV)(),l.Ay.mixin({data:()=>({logger:o}),methods:{t:s.t,n:s.n}}),window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:class{constructor(t="files",e={}){const r=(0,a.Ey)();return e={...e,propsData:{...e.propsData??{},resourceType:t},pinia:r},new(l.Ay.extend(Zn))(e)}}}),o.debug("OCA.Comments.View initialized")},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,l=r.indexOf(t),c=r.indexOf(e,l+1),u=l;if(l>=0&&c>0){if(t===e)return[l,c];for(n=[],i=r.length;u>=0&&!a;)u==l?(n.push(u),l=r.indexOf(t,u+1)):1==n.length?a=[n.pop(),c]:((o=n.pop())=0?l:c;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=/[\t\n\f\r ]/g,c={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,l="",c=-1,u=t.length-i;++c>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(c)<<8,r=t.charCodeAt(++c),l+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(c),l+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),l},decode:function(t){var e=(t=String(t).replace(l,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",c=-1;++c>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return c}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),m(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(l)}(t),!0).map(u)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function c(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function u(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(l).join(".")}function p(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var l=p(s);return s.length&&(a[a.length-1]+=l.shift(),a.push.apply(a,l)),e.push.apply(e,a),e}function h(t){return"{"+t+"}"}function f(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function m(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?m(o.post,!1):[""];if(/\$$/.test(o.pre))for(var l=0;l=0;if(!A&&!x)return o.post.match(/,(?!,).*\}/)?m(t=o.pre+"{"+o.body+s+o.post):[t];if(A)y=o.body.split(/\.\./);else if(1===(y=p(o.body)).length&&1===(y=m(y[0],!1).map(h)).length)return a.map(function(t){return o.pre+y[0]+t});if(A){var E=c(y[0]),S=c(y[1]),_=Math.max(y[0].length,y[1].length),O=3==y.length?Math.abs(c(y[2])):1,C=d;S0){var R=new Array(P+1).join("0");j=N<0?"-"+R+j.slice(1):R+j}}b.push(j)}}else{b=[];for(var k=0;k0?r:0),!0)},o?o(t.exports,"apply",{value:s}):t.exports.apply=s},36556(t,e,r){"use strict";var n=r(70453),o=r(73126),i=o([n("%String.prototype.indexOf%")]);t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&i(t,".prototype.")>-1?o([r]):r}},22408(t,e,r){"use strict";r.d(e,{A:()=>a});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB",sourcesContent:['\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tdisplay: flex;\n\tgap: 8px;\n\tpadding: 5px $comment-padding;\n\n\t&__side {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\tpadding-top: 6px;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-direction: column;\n\t\tcontainer-type: inline-size;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t}\n\n\t&__actions {\n\t\tmargin-inline-start: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-inline-start: auto;\n\t\ttext-align: end;\n\t\twhite-space: nowrap;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor-group {\n\t\tposition: relative;\n\t}\n\n\t&__editor-description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-block: var(--default-grid-baseline);\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tbottom: 5px;\n\t\tinset-inline-end: 0;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: normal;\n\t\tmax-height: 200px;\n\t\toverflow: auto;\n\t\tscrollbar-gutter: stable;\n\t\tscrollbar-width: thin;\n\t\tmargin-top: -6px;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t\t:deep(img) {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]);const a=s},94262(t,e,r){"use strict";r.d(e,{A:()=>a});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n.comments {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty,\n\t&__error {\n\t\tflex: 1 0;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]);const a=s},30041(t,e,r){"use strict";var n=r(30655),o=r(58068),i=r(69675),s=r(75795);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new i("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,l=arguments.length>4?arguments[4]:null,c=arguments.length>5?arguments[5]:null,u=arguments.length>6&&arguments[6],p=!!s&&s(t,e);if(n)n(t,e,{configurable:null===c&&p?p.configurable:!c,enumerable:null===a&&p?p.enumerable:!a,value:r,writable:null===l&&p?p.writable:!l});else{if(!u&&(a||l||c))throw new o("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},7176(t,e,r){"use strict";var n,o=r(73126),i=r(75795);try{n=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var s=!!n&&i&&i(Object.prototype,"__proto__"),a=Object,l=a.getPrototypeOf;t.exports=s&&"function"==typeof s.get?o([s.get]):"function"==typeof l&&function(t){return l(null==t?t:a(t))}},30655(t){"use strict";var e=Object.defineProperty||!1;if(e)try{e({},"a",{value:1})}catch(t){e=!1}t.exports=e},41237(t){"use strict";t.exports=EvalError},69383(t){"use strict";t.exports=Error},79290(t){"use strict";t.exports=RangeError},79538(t){"use strict";t.exports=ReferenceError},58068(t){"use strict";t.exports=SyntaxError},69675(t){"use strict";t.exports=TypeError},35345(t){"use strict";t.exports=URIError},79612(t){"use strict";t.exports=Object},82682(t,e,r){"use strict";var n=r(69600),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){if(!n(e))throw new TypeError("iterator must be a function");var s,a;arguments.length>=3&&(s=r),a=t,"[object Array]"===o.call(a)?function(t,e,r){for(var n=0,o=t.length;ne},70453(t,e,r){"use strict";var n,o=r(79612),i=r(69383),s=r(41237),a=r(79290),l=r(79538),c=r(58068),u=r(69675),p=r(35345),h=r(71514),f=r(58968),d=r(6188),g=r(68002),m=r(75880),y=r(70414),b=r(73093),v=Function,w=function(t){try{return v('"use strict"; return ('+t+").constructor;")()}catch(t){}},A=r(75795),x=r(30655),E=function(){throw new u},S=A?function(){try{return E}catch(t){try{return A(arguments,"callee").get}catch(t){return E}}}():E,_=r(64039)(),O=r(93628),C=r(71064),T=r(48648),N=r(11002),j=r(10076),P={},R="undefined"!=typeof Uint8Array&&O?O(Uint8Array):n,k={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":_&&O?O([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":P,"%AsyncGenerator%":P,"%AsyncGeneratorFunction%":P,"%AsyncIteratorPrototype%":P,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":s,"%Float16Array%":"undefined"==typeof Float16Array?n:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":v,"%GeneratorFunction%":P,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":_&&O?O(O([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&_&&O?O((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":o,"%Object.getOwnPropertyDescriptor%":A,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":a,"%ReferenceError%":l,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&_&&O?O((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":_&&O?O(""[Symbol.iterator]()):n,"%Symbol%":_?Symbol:n,"%SyntaxError%":c,"%ThrowTypeError%":S,"%TypedArray%":R,"%TypeError%":u,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet,"%Function.prototype.call%":j,"%Function.prototype.apply%":N,"%Object.defineProperty%":x,"%Object.getPrototypeOf%":C,"%Math.abs%":h,"%Math.floor%":f,"%Math.max%":d,"%Math.min%":g,"%Math.pow%":m,"%Math.round%":y,"%Math.sign%":b,"%Reflect.getPrototypeOf%":T};if(O)try{null.error}catch(t){var I=O(O(t));k["%Error.prototype%"]=I}var M=function t(e){var r;if("%AsyncFunction%"===e)r=w("async function () {}");else if("%GeneratorFunction%"===e)r=w("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=w("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var o=t("%AsyncGenerator%");o&&O&&(r=O(o.prototype))}return k[e]=r,r},L={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},D=r(66743),$=r(9957),U=D.call(j,Array.prototype.concat),F=D.call(N,Array.prototype.splice),B=D.call(j,String.prototype.replace),W=D.call(j,String.prototype.slice),q=D.call(j,RegExp.prototype.exec),H=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,V=/\\(\\)?/g,G=function(t,e){var r,n=t;if($(L,n)&&(n="%"+(r=L[n])[0]+"%"),$(k,n)){var o=k[n];if(o===P&&(o=M(n)),void 0===o&&!e)throw new u("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:o}}throw new c("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new u("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new u('"allowMissing" argument must be a boolean');if(null===q(/^%?[^%]*%?$/,t))throw new c("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=W(t,0,1),r=W(t,-1);if("%"===e&&"%"!==r)throw new c("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new c("invalid intrinsic syntax, expected opening `%`");var n=[];return B(t,H,function(t,e,r,o){n[n.length]=r?B(o,V,"$1"):e||t}),n}(t),n=r.length>0?r[0]:"",o=G("%"+n+"%",e),i=o.name,s=o.value,a=!1,l=o.alias;l&&(n=l[0],F(r,U([0,1],l)));for(var p=1,h=!0;p=r.length){var m=A(s,f);s=(h=!!m)&&"get"in m&&!("originalValue"in m.get)?m.get:s[f]}else h=$(s,f),s=s[f];h&&!a&&(k[i]=s)}}return s}},71064(t,e,r){"use strict";var n=r(79612);t.exports=n.getPrototypeOf||null},48648(t){"use strict";t.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},93628(t,e,r){"use strict";var n=r(48648),o=r(71064),i=r(7176);t.exports=n?function(t){return n(t)}:o?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return o(t)}:i?function(t){return i(t)}:null},6549(t){"use strict";t.exports=Object.getOwnPropertyDescriptor},75795(t,e,r){"use strict";var n=r(6549);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},30592(t,e,r){"use strict";var n=r(30655),o=function(){return!!n};o.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=o},64039(t,e,r){"use strict";var n="undefined"!=typeof Symbol&&Symbol,o=r(41333);t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&o()}},41333(t){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var n in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var o=Object.getOwnPropertySymbols(t);if(1!==o.length||o[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},49092(t,e,r){"use strict";var n=r(41333);t.exports=function(){return n()&&!!Symbol.toStringTag}},9957(t,e,r){"use strict";var n=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=r(66743);t.exports=i.call(n,o)},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},69600(t){"use strict";var e,r,n=Function.prototype.toString,o="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof o&&"function"==typeof Object.defineProperty)try{e=Object.defineProperty({},"length",{get:function(){throw r}}),r={},o(function(){throw 42},null,e)}catch(t){t!==r&&(o=null)}else o=null;var i=/^\s*class\b/,s=function(t){try{var e=n.call(t);return i.test(e)}catch(t){return!1}},a=function(t){try{return!s(t)&&(n.call(t),!0)}catch(t){return!1}},l=Object.prototype.toString,c="function"==typeof Symbol&&!!Symbol.toStringTag,u=!(0 in[,]),p=function(){return!1};if("object"==typeof document){var h=document.all;l.call(h)===l.call(document.all)&&(p=function(t){if((u||!t)&&(void 0===t||"object"==typeof t))try{var e=l.call(t);return("[object HTMLAllCollection]"===e||"[object HTML document.all class]"===e||"[object HTMLCollection]"===e||"[object Object]"===e)&&null==t("")}catch(t){}return!1})}t.exports=o?function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;try{o(t,null,e)}catch(t){if(t!==r)return!1}return!s(t)&&a(t)}:function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;if(c)return a(t);if(s(t))return!1;var e=l.call(t);return!("[object Function]"!==e&&"[object GeneratorFunction]"!==e&&!/^\[object HTML/.test(e))&&a(t)}},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),l=n("Function.prototype.toString"),c=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(l(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=c();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var l=o("RegExp.prototype.exec"),c={},u=function(){throw c},p={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=u),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{l(t,p)}catch(t){return t===c}}}else{var h=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},35680(t,e,r){"use strict";var n=r(25767);t.exports=function(t){return!!n(t)}},71514(t){"use strict";t.exports=Math.abs},58968(t){"use strict";t.exports=Math.floor},94459(t){"use strict";t.exports=Number.isNaN||function(t){return t!=t}},6188(t){"use strict";t.exports=Math.max},68002(t){"use strict";t.exports=Math.min},75880(t){"use strict";t.exports=Math.pow},70414(t){"use strict";t.exports=Math.round},73093(t,e,r){"use strict";var n=r(94459);t.exports=function(t){return n(t)||0===t?t:t<0?-1:1}},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!l(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=l(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=a&&l&&"function"==typeof l.get?l.get:null,u=a&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,f="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,m=Function.prototype.toString,y=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,A=String.prototype.toLowerCase,x=RegExp.prototype.test,E=Array.prototype.concat,S=Array.prototype.join,_=Array.prototype.slice,O=Math.floor,C="function"==typeof BigInt?BigInt.prototype.valueOf:null,T=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,j="function"==typeof Symbol&&"object"==typeof Symbol.iterator,P="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,R=Object.prototype.propertyIsEnumerable,k=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-O(-t):O(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function F(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function B(t){return v.call(String(t),/"/g,""")}function W(t){return!P||!("object"==typeof t&&(P in t||void 0!==t[P]))}function q(t){return"[object Array]"===K(t)&&W(t)}function H(t){return"[object RegExp]"===K(t)&&W(t)}function V(t){if(j)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return X(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var O=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=O&&O>0&&"object"==typeof e)return q(e)?"[Array]":"[Object]";var T,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=S.call(Array(t.indent+1)," ")}return{base:r,prev:S.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(Y(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=_.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!H(e)){var G=function(t){if(t.name)return t.name;var e=y.call(m.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(Z.length>0?" { "+S.call(Z,", ")+" }":"")}if(V(e)){var nt=j?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||j?nt:J(nt)}if((T=e)&&"object"==typeof T&&("undefined"!=typeof HTMLElement&&T instanceof HTMLElement||"string"==typeof T.nodeName&&"function"==typeof T.getAttribute)){for(var ot="<"+A.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(q(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+S.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&W(t)}(e)){var lt=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||R.call(e,"cause")?0===lt.length?"["+String(e)+"]":"{ ["+String(e)+"] "+S.call(lt,", ")+" }":"{ ["+String(e)+"] "+S.call(E.call("[cause]: "+U(e.cause),lt),", ")+" }"}if("object"==typeof e&&l){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:O-n});if("symbol"!==l&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var ct=[];return s&&s.call(e,function(t,r){ct.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),ct,L)}if(function(t){if(!c||!t||"object"!=typeof t)return!1;try{c.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ut=[];return u&&u.call(e,function(t){ut.push(U(t,e))}),tt("Set",c.call(e),ut,L)}if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return Q("WeakMap");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return Q("WeakSet");if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{return f.call(t),!0}catch(t){}return!1}(e))return Q("WeakRef");if(function(t){return"[object Number]"===K(t)&&W(t)}(e))return J(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!C)return!1;try{return C.call(t),!0}catch(t){}return!1}(e))return J(U(C.call(e)));if(function(t){return"[object Boolean]"===K(t)&&W(t)}(e))return J(d.call(e));if(function(t){return"[object String]"===K(t)&&W(t)}(e))return J(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&W(t)}(e)&&!H(e)){var pt=rt(e,U),ht=k?k(e)===Object.prototype:e instanceof Object||e.constructor===Object,ft=e instanceof Object?"":"null prototype",dt=!ht&&P&&Object(e)===e&&P in e?b.call(K(e),8,-1):ft?"Object":"",gt=(ht||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||ft?"["+S.call(E.call([],dt||[],ft||[]),": ")+"] ":"");return 0===pt.length?gt+"{}":L?gt+"{"+et(pt,L)+"}":gt+"{ "+S.call(pt,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function Y(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return X(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,F(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function J(t){return"Object("+t+")"}function Q(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):S.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+S.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=q(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},l.normalize=function(t){var e=l.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},l.isAbsolute=function(t){return"/"===t.charAt(0)},l.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=l.resolve(t).substr(1),e=l.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,f=String.fromCharCode;function d(t){throw new RangeError(p[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function m(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(u,".")).split("."),e).join(".")}function y(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=f((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+f(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var n=0;for(t=r?h(t/700):t>>1,t+=h(t/e);t>455;n+=a)t=h(t/35);return h(n+36*t/(t+38))}function x(t){var e,r,n,o,i,l,c,u,p,f,g=[],m=t.length,y=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=m&&d("invalid-input"),((u=v(t.charCodeAt(o++)))>=a||u>h((s-y)/l))&&d("overflow"),y+=u*l,!(u<(p=c<=x?1:c>=x+26?26:c-x));c+=a)l>h(s/(f=a-p))&&d("overflow"),l*=f;x=A(y-i,e=g.length+1,0==i),h(y/e)>s-w&&d("overflow"),w+=h(y/e),y%=e,g.splice(y++,0,w)}return b(g)}function E(t){var e,r,n,o,i,l,c,u,p,g,m,b,v,x,E,S=[];for(b=(t=y(t)).length,e=128,r=0,i=72,l=0;l=e&&mh((s-r)/(v=n+1))&&d("overflow"),r+=(c-e)*v,e=c,l=0;ls&&d("overflow"),m==e){for(u=r,p=a;!(u<(g=p<=i?1:p>=i+26?26:p-i));p+=a)E=u-g,x=a-g,S.push(f(w(g+E%x,0))),u=h(E/x);S.push(f(w(u,0))),i=A(r,v,n==o),r=0,++n}++r,++e}return S.join("")}i={version:"1.4.1",ucs2:{decode:y,encode:b},decode:x,encode:E,toASCII:function(t){return m(t,function(t){return c.test(t)?"xn--"+E(t):t})},toUnicode:function(t){return m(t,function(t){return l.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},l=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},c=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a[a.length]=s}for(var l=0;null!==(i=n.exec(r))&&l0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:l(e,r,i),c=t.length-1;c>=0;--c){var u,p=t[c];if("[]"===p&&r.parseArrays)u=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{u=r.plainObjects?{__proto__:null}:{};var h="["===p.charAt(0)&&"]"===p.charAt(p.length-1)?p.slice(1,-1):p,f=r.decodeDotInKeys?h.replace(/%2E/g,"."):h,d=parseInt(f,10),g=!isNaN(d)&&p!==f&&String(d)===f&&d>=0&&r.parseArrays;if(r.parseArrays||""!==f)if(g&&du)throw new RangeError("Parameter limit exceeded. Only "+u+" parameter"+(1===u?"":"s")+" allowed.");var h,f=-1,d=e.charset;if(e.charsetSentinel)for(h=0;h-1&&(m=i(m)?[m]:m),e.comma&&i(m)&&m.length>e.arrayLimit){if(e.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");m=n.combine([],m,e.arrayLimit,e.plainObjects)}if(null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],m,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=m)}}return r}(t,r):t,p=r.plainObjects?{__proto__:null}:{},h=Object.keys(u),f=0;f0?O.join(",")||null:void 0}];else if(l(m))P=m;else{var k=Object.keys(O);P=y?k.sort(y):k}var I=h?String(r).replace(/\./g,"%2E"):String(r),M=s&&l(O)&&1===O.length?I+"[]":I;if(a&&l(O)&&0===O.length)return M+"[]";for(var L=0;L0?A+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),l=function(t,e){return a.set(t,e),t},c=function(t){return a.has(t)},u=function(t){return a.get(t)},p=function(t,e){a.set(t,e)},h=function(){for(var t=[],e=0;e<256;++e)t[t.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return t}(),f=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?l(f(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(l,l+d):s,u=[],p=0;p=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||i===n.RFC1738&&(40===f||41===f)?u[u.length]=c.charAt(p):f<128?u[u.length]=h[f]:f<2048?u[u.length]=h[192|f>>6]+h[128|63&f]:f<55296||f>=57344?u[u.length]=h[224|f>>12]+h[128|f>>6&63]+h[128|63&f]:(p+=1,f=65536+((1023&f)<<10|1023&c.charCodeAt(p)),u[u.length]=h[240|f>>18]+h[128|f>>12&63]+h[128|f>>6&63]+h[128|63&f])}a+=u.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:c,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},markOverflow:l,maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;nn.arrayLimit)return l(f(e.concat(r),n),o);e[o]=r}else{if(!e||"object"!=typeof e)return[e,r];if(c(e)){var a=u(e)+1;e[a]=r,p(e,a)}else(n&&(n.plainObjects||n.allowPrototypes)||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e){if(c(r)){for(var h=Object.keys(r),d=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},g=0;gn.arrayLimit?l(f(m,n),m.length-1):m}var y=e;return s(e)&&!s(r)&&(y=f(e,n)),s(e)&&s(r)?(r.forEach(function(r,o){if(i.call(e,o)){var s=e[o];s&&"object"==typeof s&&r&&"object"==typeof r?e[o]=t(s,r,n):e[e.length]=r}else e[o]=r}),e):Object.keys(r).reduce(function(e,o){var s=r[o];if(i.call(e,o)?e[o]=t(e[o],s,n):e[o]=s,c(r)&&!c(e)&&l(e,u(r)),c(e)){var a=parseInt(o,10);String(a)===o&&a>=0&&a>u(e)&&p(e,a)}return e},y)}}},73992(t,e){"use strict";var r=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var n,i,s=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((n=t[i])||null!=n&&!isNaN(n)||(n=""),i=o(i),n=o(n),null===i||null===n)continue;s.push(i+"="+n)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,o={};e=r.exec(t);){var i=n(e[1]),s=n(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},92063(t){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},99721(t,e,r){"use strict";var n=r(36556),o=r(14035),i=n("RegExp.prototype.exec"),s=r(69675);t.exports=function(t){if(!o(t))throw new s("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},96897(t,e,r){"use strict";var n=r(70453),o=r(30041),i=r(30592)(),s=r(75795),a=r(69675),l=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new a("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||l(e)!==e)throw new a("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,c=!0;if("length"in t&&s){var u=s(t,"length");u&&!u.configurable&&(n=!1),u&&!u.writable&&(c=!1)}return(n||c||!r)&&(i?o(t,"length",e,!0,!0):o(t,"length",e)),t}},14803(t,e,r){"use strict";var n=r(58859),o=r(69675),i=function(t,e,r){for(var n,o=t;null!=(n=o.next);o=n)if(n.key===e)return o.next=n.next,r||(n.next=t.next,t.next=n),n};t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new o("Side channel does not contain "+n(t))},delete:function(e){var r=t&&t.next,n=function(t,e){if(t)return i(t,e,!0)}(t,e);return n&&r&&r===n&&(t=void 0),!!n},get:function(e){return function(t,e){if(t){var r=i(t,e);return r&&r.value}}(t,e)},has:function(e){return function(t,e){return!!t&&!!i(t,e)}(t,e)},set:function(e,r){t||(t={next:void 0}),function(t,e,r){var n=i(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(t,e,r)}};return e}},80507(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(69675),a=n("%Map%",!0),l=o("Map.prototype.get",!0),c=o("Map.prototype.set",!0),u=o("Map.prototype.has",!0),p=o("Map.prototype.delete",!0),h=o("Map.prototype.size",!0);t.exports=!!a&&function(){var t,e={assert:function(t){if(!e.has(t))throw new s("Side channel does not contain "+i(t))},delete:function(e){if(t){var r=p(t,e);return 0===h(t)&&(t=void 0),r}return!1},get:function(e){if(t)return l(t,e)},has:function(e){return!!t&&u(t,e)},set:function(e,r){t||(t=new a),c(t,e,r)}};return e}},72271(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(80507),a=r(69675),l=n("%WeakMap%",!0),c=o("WeakMap.prototype.get",!0),u=o("WeakMap.prototype.set",!0),p=o("WeakMap.prototype.has",!0),h=o("WeakMap.prototype.delete",!0);t.exports=l?function(){var t,e,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},delete:function(r){if(l&&r&&("object"==typeof r||"function"==typeof r)){if(t)return h(t,r)}else if(s&&e)return e.delete(r);return!1},get:function(r){return l&&r&&("object"==typeof r||"function"==typeof r)&&t?c(t,r):e&&e.get(r)},has:function(r){return l&&r&&("object"==typeof r||"function"==typeof r)&&t?p(t,r):!!e&&e.has(r)},set:function(r,n){l&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new l),u(t,r,n)):s&&(e||(e=s()),e.set(r,n))}};return r}:s},920(t,e,r){"use strict";var n=r(69675),o=r(58859),i=r(14803),s=r(80507),a=r(72271)||s||i;t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new n("Side channel does not contain "+o(t))},delete:function(e){return!!t&&t.delete(e)},get:function(e){return t&&t.get(e)},has:function(e){return!!t&&t.has(e)},set:function(e,r){t||(t=a()),t.set(e,r)}};return e}},11568(t,e,r){var n=r(55537),o=r(6917),i=r(57510),s=r(86866),a=r(88835),l=e;l.request=function(t,e){t="string"==typeof t?a.parse(t):i(t);var r=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||r,s=t.hostname||t.host,l=t.port,c=t.path||"/";s&&-1!==s.indexOf(":")&&(s="["+s+"]"),t.url=(s?o+"//"+s:"")+(l?":"+l:"")+c,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var u=new n(t);return e&&u.on("response",e),u},l.get=function(t,e){var r=l.request(t,e);return r.end(),r},l.ClientRequest=n,l.IncomingMessage=o.IncomingMessage,l.Agent=function(){},l.Agent.defaultMaxSockets=4,l.globalAgent=new l.Agent,l.STATUS_CODES=s,l.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},6688(t,e){var r;function n(){if(void 0!==r)return r;if(globalThis.XMLHttpRequest){r=new globalThis.XMLHttpRequest;try{r.open("GET",globalThis.XDomainRequest?"/":"https://example.com")}catch(t){r=null}}else r=null;return r}function o(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(globalThis.fetch)&&i(globalThis.ReadableStream),e.writableStream=i(globalThis.WritableStream),e.abortController=i(globalThis.AbortController),e.arraybuffer=e.fetch||o("arraybuffer"),e.msstream=!e.fetch&&o("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&o("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),r=null},55537(t,e,r){var n=r(62045).hp,o=r(65606),i=r(6688),s=r(56698),a=r(6917),l=r(63242),c=a.IncomingMessage,u=a.readyStates,p=t.exports=function(t){var e,r=this;l.Writable.call(r),r._opts=t,r._body=[],r._headers={},t.auth&&r.setHeader("Authorization","Basic "+n.from(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){r.setHeader(e,t.headers[e])});var o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!i.abortController)o=!1,e=!0;else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!i.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}r._mode=function(t,e){return i.fetch&&e?"fetch":i.mozchunkedarraybuffer?"moz-chunked-arraybuffer":i.msstream?"ms-stream":i.arraybuffer&&t?"arraybuffer":"text"}(e,o),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",function(){r._onFinish()})};s(p,l.Writable),p.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===h.indexOf(r)&&(this._headers[r]={name:t,value:e})},p.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},p.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},p.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts;"timeout"in e&&0!==e.timeout&&t.setTimeout(e.timeout);var r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=new Blob(t._body,{type:(r["content-type"]||{}).value||""}));var s=[];if(Object.keys(r).forEach(function(t){var e=r[t].name,n=r[t].value;Array.isArray(n)?n.forEach(function(t){s.push([e,t])}):s.push([e,n])}),"fetch"===t._mode){var a=null;if(i.abortController){var l=new AbortController;a=l.signal,t._fetchAbortController=l,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=globalThis.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}globalThis.fetch(t._opts.url,{method:t._opts.method,headers:s,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:a}).then(function(e){t._fetchResponse=e,t._resetTimers(!1),t._connect()},function(e){t._resetTimers(!0),t._destroyed||t.emit("error",e)})}else{var c=t._xhr=new globalThis.XMLHttpRequest;try{c.open(t._opts.method,t._opts.url,!0)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}"responseType"in c&&(c.responseType=t._mode),"withCredentials"in c&&(c.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in c&&c.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(c.timeout=e.requestTimeout,c.ontimeout=function(){t.emit("requestTimeout")}),s.forEach(function(t){c.setRequestHeader(t[0],t[1])}),t._response=null,c.onreadystatechange=function(){switch(c.readyState){case u.LOADING:case u.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(c.onprogress=function(){t._onXHRProgress()}),c.onerror=function(){t._destroyed||(t._resetTimers(!0),t.emit("error",new Error("XHR error")))};try{c.send(n)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}}}},p.prototype._onXHRProgress=function(){var t=this;t._resetTimers(!1),function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress(t._resetTimers.bind(t)))},p.prototype._connect=function(){var t=this;t._destroyed||(t._response=new c(t._xhr,t._fetchResponse,t._mode,t._resetTimers.bind(t)),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},p.prototype._write=function(t,e,r){this._body.push(t),r()},p.prototype._resetTimers=function(t){var e=this;globalThis.clearTimeout(e._socketTimer),e._socketTimer=null,t?(globalThis.clearTimeout(e._fetchTimer),e._fetchTimer=null):e._socketTimeout&&(e._socketTimer=globalThis.setTimeout(function(){e.emit("timeout")},e._socketTimeout))},p.prototype.abort=p.prototype.destroy=function(t){var e=this;e._destroyed=!0,e._resetTimers(!0),e._response&&(e._response._destroyed=!0),e._xhr?e._xhr.abort():e._fetchAbortController&&e._fetchAbortController.abort(),t&&e.emit("error",t)},p.prototype.end=function(t,e,r){"function"==typeof t&&(r=t,t=void 0),l.Writable.prototype.end.call(this,t,e,r)},p.prototype.setTimeout=function(t,e){var r=this;e&&r.once("timeout",e),r._socketTimeout=t,r._resetTimers(!1)},p.prototype.flushHeaders=function(){},p.prototype.setNoDelay=function(){},p.prototype.setSocketKeepAlive=function(){};var h=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},6917(t,e,r){var n=r(65606),o=r(62045).hp,i=r(6688),s=r(56698),a=r(63242),l=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(t,e,r,s){var l=this;if(a.Readable.call(l),l._mode=r,l.headers={},l.rawHeaders=[],l.trailers={},l.rawTrailers=[],l.on("end",function(){n.nextTick(function(){l.emit("close")})}),"fetch"===r){if(l._fetchResponse=e,l.url=e.url,l.statusCode=e.status,l.statusMessage=e.statusText,e.headers.forEach(function(t,e){l.headers[e.toLowerCase()]=t,l.rawHeaders.push(e,t)}),i.writableStream){var c=new WritableStream({write:function(t){return s(!1),new Promise(function(e,r){l._destroyed?r():l.push(o.from(t))?e():l._resumeFetch=e})},close:function(){s(!0),l._destroyed||l.push(null)},abort:function(t){s(!0),l._destroyed||l.emit("error",t)}});try{return void e.body.pipeTo(c).catch(function(t){s(!0),l._destroyed||l.emit("error",t)})}catch(t){}}var u=e.body.getReader();!function t(){u.read().then(function(e){l._destroyed||(s(e.done),e.done?l.push(null):(l.push(o.from(e.value)),t()))}).catch(function(t){s(!0),l._destroyed||l.emit("error",t)})}()}else if(l._xhr=t,l._pos=0,l.url=t.responseURL,l.statusCode=t.status,l.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var r=e[1].toLowerCase();"set-cookie"===r?(void 0===l.headers[r]&&(l.headers[r]=[]),l.headers[r].push(e[2])):void 0!==l.headers[r]?l.headers[r]+=", "+e[2]:l.headers[r]=e[2],l.rawHeaders.push(e[1],e[2])}}),l._charset="x-user-defined",!i.overrideMimeType){var p=l.rawHeaders["mime-type"];if(p){var h=p.match(/;\s*charset=([^;])(;|$)/);h&&(l._charset=h[1].toLowerCase())}l._charset||(l._charset="utf-8")}};s(c,a.Readable),c.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},c.prototype._onXHRProgress=function(t){var e=this,r=e._xhr,n=null;switch(e._mode){case"text":if((n=r.responseText).length>e._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(c.result.slice(e._pos)))),e._pos=c.result.byteLength)},c.onload=function(){t(!0),e.push(null)},c.readAsArrayBuffer(n)}e._xhr.readyState===l.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,l;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var c=("number"!=typeof l&&(l=0),l+1>(a=t).length||-1===a.indexOf(".",l)?"argument":"property");s='The "'.concat(t,'" ').concat(c," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=u;var i=r(52341),s=r(9573);r(56698)(u,i);for(var a=o(s.prototype),l=0;l0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===l.prototype||(e=function(t){return l.from(t)}(e)),n)a.endEmitted?x(t,new A):C(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?C(t,a,e,!1):R(t,a)):C(t,a,e,!1)}else n||(a.reading=!1,R(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=T?t=T:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function j(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(P,t))}function P(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function R(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(k,t,e))}function k(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(F,e,t))}function F(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function B(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):j(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},_.prototype._read=function(t){x(this,new w("_read()"))},_.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:l;function l(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",f),t.removeListener("finish",d),t.removeListener("drain",c),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",l),r.removeListener("end",g),r.removeListener("data",p),u=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||c())});var c=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",c);var u=!1;function p(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==B(n.pipes,t))&&!u&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){i("onerror",e),g(),t.removeListener("error",h),0===s(t,"error")&&x(t,e)}function f(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",f),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",p),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",f),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},_.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?j(this):n.reading||o.nextTick(M,this))),r},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},_.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},_.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},_.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new A(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(t,e,r){r(new g("_write()"))},_.prototype._writev=null,_.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,P(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),_.prototype.destroy=p.destroy,_.prototype._undestroy=p.undestroy,_.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),u=Symbol("ended"),p=Symbol("lastPromise"),h=Symbol("handlePromise"),f=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[f].read();null!==r&&(t[p]=null,t[a]=null,t[l]=null,e(d(r,!1)))}}function m(t){o.nextTick(g,t)}var y=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[f]},next:function(){var t=this,e=this[c];if(null!==e)return Promise.reject(e);if(this[u])return Promise.resolve(d(void 0,!0));if(this[f].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[c]?r(t[c]):e(d(void 0,!0))})});var r,n=this[p];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[u]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var i=this[f].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[h])}return this[p]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[f].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),y);t.exports=function(t){var e,r=Object.create(b,(i(e={},f,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:null,writable:!0}),i(e,u,{value:t._readableState.endEmitted,writable:!0}),i(e,h,{value:function(t,e){var n=r[f].read();n?(r[p]=null,r[a]=null,r[l]=null,t(d(n,!1))):(r[a]=t,r[l]=e)},writable:!0}),e));return r[p]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[l];return null!==e&&(r[p]=null,r[a]=null,r[l]=null,e(t)),void(r[c]=t)}var n=r[a];null!==n&&(r[p]=null,r[a]=null,r[l]=null,n(d(void 0,!0))),r[u]=!0}),t.on("readable",m.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return l.alloc(0);for(var e=l.allocUnsafe(t>>>0),r=this.head,n=0;r;)p(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=l.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:u,value:function(t,e){return c(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,l=this._writableState&&this._writableState.destroyed;return a||l?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){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)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){u||(u=t),t&&h.forEach(l),i||(h.forEach(l),p(u))})});return e.reduce(c)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,u=/^[a-zA-Z]:/;function p(t){return(t||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new y(unescape(t.pathname),{});else if("string"===o)for(e in n=new y(t,{}),f)delete n[e];else if("object"===o){for(e in t)e in f||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function m(t,e){t=(t=p(t)).replace(s,""),e=e||{};var r,n=c.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],l=0;return i?a?(r=n[2]+n[3]+n[4],l=n[2].length+n[3].length):(r=n[2]+n[4],l=n[2].length):a?(r=n[3]+n[4],l=n[3].length):r=n[4],"file:"===o?l>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):l>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:l,rest:r}}function y(t,e,r){if(t=(t=p(t)).replace(s,""),!(this instanceof y))return new y(t,e,r);var i,a,l,c,f,b,v=h.slice(),w=typeof e,A=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=m(t||"",e=d(e))).protocol&&!a.slashes,A.slashes=a.slashes||i&&e.slashes,A.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||u.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(A.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),u=["%","/","?",";","#"].concat(c),p=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,f=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?R+="x":R+=P[k];if(!R.match(h)){var M=N.slice(0,O),L=N.slice(O+1),D=P.match(f);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[A])for(O=0,j=c.length;O0)&&r.host.split("@"))&&(r.auth=T.shift(),r.hostname=T.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var S=x.slice(-1)[0],_=(r.host||t.host||x.length>1)&&("."===S||".."===S)||""===S,O=0,C=x.length;C>=0;C--)"."===(S=x[C])?x.splice(C,1):".."===S?(x.splice(C,1),O++):O&&(x.splice(C,1),O--);if(!w&&!A)for(;O--;O)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),_&&"/"!==x.join("/").substr(-1)&&x.push("");var T,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return E&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(T=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=T.shift(),r.hostname=T.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var l="undefined"!=typeof BigInt,c="undefined"!=typeof Symbol,u=a(Object.prototype.toString),p=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),f=a(Boolean.prototype.valueOf);if(l)var d=a(BigInt.prototype.valueOf);if(c)var g=a(Symbol.prototype.valueOf);function m(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function y(t){return"[object Map]"===u(t)}function b(t){return"[object Set]"===u(t)}function v(t){return"[object WeakMap]"===u(t)}function w(t){return"[object WeakSet]"===u(t)}function A(t){return"[object ArrayBuffer]"===u(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(A.working?A(t):t instanceof ArrayBuffer)}function E(t){return"[object DataView]"===u(t)}function S(t){return"undefined"!=typeof DataView&&(E.working?E(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||S(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},y.working="undefined"!=typeof Map&&y(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(y.working?y(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},A.working="undefined"!=typeof ArrayBuffer&&A(new ArrayBuffer),e.isArrayBuffer=x,E.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&E(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=S;var _="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function O(t){return"[object SharedArrayBuffer]"===u(t)}function C(t){return void 0!==_&&(void 0===O.working&&(O.working=O(new _)),O.working?O(t):t instanceof _)}function T(t){return m(t,p)}function N(t){return m(t,h)}function j(t){return m(t,f)}function P(t){return l&&m(t,d)}function R(t){return c&&m(t,g)}e.isSharedArrayBuffer=C,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===u(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===u(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===u(t)},e.isGeneratorObject=function(t){return"[object Generator]"===u(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===u(t)},e.isNumberObject=T,e.isStringObject=N,e.isBooleanObject=j,e.isBigIntObject=P,e.isSymbolObject=R,e.isBoxedPrimitive=function(t){return T(t)||N(t)||j(t)||P(t)||R(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||C(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),h(n,t,n.depth)}function u(t,e){var r=c.styles[e];return r?"["+c.colors[r][0]+"m"+t+"["+c.colors[r][1]+"m":t}function p(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&_(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=h(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),S(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return f(r);if(0===s.length){if(_(r)){var l=r.name?": "+r.name:"";return t.stylize("[Function"+l+"]","special")}if(A(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(E(r))return t.stylize(Date.prototype.toString.call(r),"date");if(S(r))return f(r)}var c,u="",p=!1,x=["{","}"];return g(r)&&(p=!0,x=["[","]"]),_(r)&&(u=" [Function"+(r.name?": "+r.name:"")+"]"),A(r)&&(u=" "+RegExp.prototype.toString.call(r)),E(r)&&(u=" "+Date.prototype.toUTCString.call(r)),S(r)&&(u=" "+f(r)),0!==s.length||p&&0!=r.length?n<0?A(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),c=p?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(c,u,x)):x[0]+u+x[1]}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,l;if((l=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(l.value)<0?(a=y(r)?h(t,l.value,null):h(t,l.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function m(t){return"boolean"==typeof t}function y(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function A(t){return x(t)&&"[object RegExp]"===O(t)}function x(t){return"object"==typeof t&&null!==t}function E(t){return x(t)&&"[object Date]"===O(t)}function S(t){return x(t)&&("[object Error]"===O(t)||t instanceof Error)}function _(t){return"function"==typeof t}function O(t){return Object.prototype.toString.call(t)}function C(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=m,e.isNull=y,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=A,e.types.isRegExp=A,e.isObject=x,e.isDate=E,e.types.isDate=E,e.isError=S,e.types.isNativeError=S,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[C((t=new Date).getHours()),C(t.getMinutes()),C(t.getSeconds())].join(":"),[t.getDate(),T[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var j="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function P(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(j&&t[j]){var e;if("function"!=typeof(e=t[j]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,j,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;i-1?e:"Object"===e&&function(t){var e=!1;return n(g,function(r,n){if(!e)try{r(t),e=f(n,1)}catch(t){}}),e}(t)}return a?function(t){var e=!1;return n(g,function(r,n){if(!e)try{"$"+r(t)===n&&(e=f(n,1))}catch(t){}}),e}(t):null}},57510(t){t.exports=function(){for(var t={},r=0;r{if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(s.O).every(t=>s.O[t](r[l]))?r.splice(l--,1):(a=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce((e,r)=>(s.f[r](t,e),e),[])),s.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"428c2ff62c4b8b3c97fc",4508:"bd9a6bf4d650882814a8",5448:"71cfe268d6f1213c4735",5528:"fa22a350943490669cfb",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8815:"9a5c507c75429c9c04e4"}[t],s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},n="nextcloud-ui-legacy:",s.l=(t,e,o,i)=>{if(r[t])r[t].push(e);else{var a,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u{a.onerror=a.onload=null,clearTimeout(f);var o=r[t];if(delete r[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),e)return e(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=7062,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={7062:0};s.f.j=(e,r)=>{var n=s.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var i=s.p+s.u(e),a=new Error;s.l(i,r=>{if(s.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}},"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[i,a,l]=r,c=0;if(i.some(e=>0!==t[e])){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(l)var u=l(s)}for(e&&e(r);cs(15256));a=s.O(a)})(); -//# sourceMappingURL=comments-comments-app.js.map?v=8867f3b65f45ff869632 \ No newline at end of file +(()=>{var e,r,n,o={15256(e,r,n){"use strict";const o=(0,n(35947).YK)().setApp("comments").detectUser().build();var i=n(21777),s=n(53334),a=n(10810),l=n(85471),c=n(85168),u=n(57579),p=n(74095),h=n(42507),f=n(57578);const d={name:"MessageReplyTextOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var g=n(14486);const m=(0,g.A)(d,function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon message-reply-text-outline-icon",attrs:{"aria-hidden":t.title?null:"true","aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])},[],!1,null,null,null).exports;var y=n(83239),b=n(57505),v=n(24764),w=n(15502),A=n(41944),x=n(4604),E=n(88289),S=n(77764),_=n(33691),O=n(66001),C=n(16502),T=n(37793),N=n(61160);function j(t){if(!P(t))throw new Error("Parameter was not an error")}function P(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}class R extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:o}=function(t){let e,r="";if(0===t.length)e={};else if(P(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}(r);let i=o;if(n.cause&&(i=`${i}: ${n.cause.message}`),super(i),this.message=i,n.name&&"string"==typeof n.name?this.name=n.name:this.name="Layerr",n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return j(t),t._cause&&P(t._cause)?t._cause:null}static fullStack(t){j(t);const e=R.cause(t);return e?`${t.stack}\ncaused by: ${R.fullStack(e)}`:t.stack??""}static info(t){j(t);const e={},r=R.cause(t);return r&&Object.assign(e,R.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}var k=n(12692);const I="__PATH_SEPARATOR_POSIX__",M="__PATH_SEPARATOR_WINDOWS__";function L(t){try{const e=t.replace(/\//g,I).replace(/\\\\/g,M);return encodeURIComponent(e).split(M).join("\\\\").split(I).join("/")}catch(t){throw new R(t,"Failed encoding path")}}function D(t){return t.startsWith("/")?t:"/"+t}function $(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}function U(t){let e=new N(t).pathname;return e.length<=0&&(e="/"),$(e)}function F(...t){return function(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}var B=n(83503);function W(t,e){const r=t.url.replace("//",""),n=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),o=t.method?t.method.toUpperCase():"GET",i=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",s=`00000000${e.nc}`.slice(-8),a=function(t,e,r,n,o,i,s){const a=s||B(`${e}:${r}:${n}`);return t&&"md5-sess"===t.toLowerCase()?B(`${a}:${o}:${i}`):a}(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),l=B(`${o}:${n}`),c=B(i?`${a}:${e.nonce}:${s}:${e.cnonce}:${i}:${l}`:`${a}:${e.nonce}:${l}`),u={username:e.username,realm:e.realm,nonce:e.nonce,uri:n,qop:i,response:c,nc:s,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},p=[];for(const t in u)u[t]&&("qop"===t||"nc"===t||"algorithm"===t?p.push(`${t}=${u[t]}`):p.push(`${t}="${u[t]}"`));return`Digest ${p.join(", ")}`}function q(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var H,V,G,z,K,Y,X=n(85914);function Z(t){return X.decode(t)}function J(t,e){var r;return`Basic ${r=`${t}:${e}`,X.encode(r)}`}new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint,function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(H||(H={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(V||(V={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(G||(G={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(z||(z={})),new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]]),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(K||(K={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(Y||(Y={}));const Q="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,tt=Q.fetch.bind(Q);var et,rt;function nt(t,e,r,n,o){switch(t.authType){case et.Auto:e&&r&&(t.headers.Authorization=J(e,r));break;case et.Digest:t.digest=function(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}(e,r,o);break;case et.None:break;case et.Password:t.headers.Authorization=J(e,r);break;case et.Token:t.headers.Authorization=`${(i=n).token_type} ${i.access_token}`;break;default:throw new R({info:{code:rt.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}var i}Q.Headers,Q.Request,Q.Response,function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(et||(et={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(rt||(rt={}));var ot=n(11568),it=n(11083);const st="@@HOTPATCHER",at=()=>{};function lt(t){return{original:t,methods:[t],final:!1}}class ct{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=st}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==st)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||at)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return function(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=lt(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(lt(e),{original:r})}else this.configuration.registry[t]=lt(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}let ut=null;function pt(){return"string"==typeof TARGET&&"react-native"===TARGET}function ht(){return"string"==typeof TARGET&&"web"===TARGET}function ft(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function dt(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?gt(e,t):ft(t)}return e}function gt(t,e){const r=ft(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?gt(r[t],e[t]):ft(e[t]):r[t]=e[t]:r[t]=e[t]}),r}function mt(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function yt(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}var bt=n(88310);const vt="function"==typeof ArrayBuffer,{toString:wt}=Object.prototype;function At(t){return vt&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===wt.call(t))}function xt(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}function Et(t,e,r){const n=ft(t);return n.headers=yt(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function St(t,e){return e.authType===et.Auto?async function(t,e){const r=await Ot(t);return r.ok?(e.authType=et.Password,r):401==r.status&&q(r)?(e.authType=et.Digest,nt(e,e.username,e.password,void 0,void 0),t._digest=e.digest,_t(t)):r}(t,e):t._digest?_t(t):Ot(t)}async function _t(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=dt(t,{headers:{Authorization:W(t,e)}}));const r=await Ot(t);if(401==r.status){if(e.hasDigestAuth=function(t,e){if(!q(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}(r,e),e.hasDigestAuth){t=dt(t,{headers:{Authorization:W(t,e)}});const r=await Ot(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function Ot(t){const e=(ut||(ut=new ct),ut);return e.patchInline("request",t=>e.patchInline("fetch",tt,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=yt(e,t.headers)),void 0!==t.data){const[n,o]=function(t){if(!ht()&&!pt()&&t instanceof bt.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if(xt(t))return[t,{}];if(At(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}(t.data);r.body=n,e=yt(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),ht()||pt()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new ot.Agent:t.httpsAgent||new it.Agent),r.headers=e,r}(t)),t)}var Ct=n(68928);const Tt=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")},Nt={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},jt=t=>t.replace(/[[\]\\-]/g,"\\$&"),Pt=t=>t.join(""),Rt=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const n=[],o=[];let i=r+1,s=!1,a=!1,l=!1,c=!1,u=r,p="";t:for(;ip?n.push(jt(p)+"-"+jt(e)):e===p&&n.push(jt(e)),p="",i++):t.startsWith("-]",i+1)?(n.push(jt(e+"-")),i+=2):t.startsWith("-",i+1)?(p=e,i+=2):(n.push(jt(e)),i++)}else l=!0,i++}else c=!0,i++}if(ue?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1");var It;const Mt=new Set(["!","?","+","*","@"]),Lt=t=>Mt.has(t),Dt=t=>Lt(t.type),$t=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),Ut=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),Ft=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),Bt=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),Wt="(?!\\.)",qt=new Set(["[","."]),Ht=new Set(["..","."]),Vt=new Set("().*{}+?[]^$\\!"),Gt=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),zt="[^/]",Kt=zt+"*?",Yt=zt+"+?";class Xt{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#l;#c;#u=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#l=this.#t===this?r:this.#t.#l,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#c?this.#c:this.type?this.#c=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#c=this.#n.map(t=>String(t)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[n,o,i,s]="string"==typeof e?It.#x(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||i,this.#r=this.#r||s,n}).join("");let o="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!Ht.has(this.#n[0]))){const r=qt,i=e&&r.has(n.charAt(0))||n.startsWith("\\.")&&r.has(n.charAt(2))||n.startsWith("\\.\\.")&&r.has(n.charAt(4)),s=!e&&!t&&r.has(n.charAt(0));o=i?"(?!(?:^|/)\\.\\.?(?:$|/))":s?Wt:""}let i="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(i="(?:$|\\/)"),[o+n+i,kt(n),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,n="!"===this.type?"(?:(?!(?:":"(?:";let o=this.#E(e);if(this.isStart()&&this.isEnd()&&!o&&"!"!==this.type){const t=this.toString(),e=this;return e.#n=[t],e.type=null,e.#e=void 0,[t,kt(this.toString()),!1,!1]}let i=!r||t||e?"":this.#E(!0);i===o&&(i=""),i&&(o=`(?:${o})(?:${i})*?`);let s="";return s="!"===this.type&&this.#u?(this.isStart()&&!e?Wt:"")+Yt:n+o+("!"===this.type?"))"+(!this.isStart()||e||t?"":Wt)+Kt+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":`)${this.type}`),[s,kt(o),this.#e=!!this.#e,this.#r]}#E(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#x(t,e,r=!1){let n=!1,o="",i=!1,s=!1;for(let a=0;a(Tt(e),!(!r.nocomment&&"#"===e.charAt(0))&&new Se(e,r).match(t)),Qt=/^\*+([^+@!?\*\[\(]*)$/,te=t=>e=>!e.startsWith(".")&&e.endsWith(t),ee=t=>e=>e.endsWith(t),re=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),ne=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),oe=/^\*+\.\*+$/,ie=t=>!t.startsWith(".")&&t.includes("."),se=t=>"."!==t&&".."!==t&&t.includes("."),ae=/^\.\*+$/,le=t=>"."!==t&&".."!==t&&t.startsWith("."),ce=/^\*+$/,ue=t=>0!==t.length&&!t.startsWith("."),pe=t=>0!==t.length&&"."!==t&&".."!==t,he=/^\?+([^+@!?\*\[\(]*)?$/,fe=([t,e=""])=>{const r=ye([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},de=([t,e=""])=>{const r=be([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},ge=([t,e=""])=>{const r=be([t]);return e?t=>r(t)&&t.endsWith(e):r},me=([t,e=""])=>{const r=ye([t]);return e?t=>r(t)&&t.endsWith(e):r},ye=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},be=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},ve="object"==typeof Zt&&Zt?"object"==typeof Zt.env&&Zt.env&&Zt.env.__MINIMATCH_TESTING_PLATFORM__||Zt.platform:"posix";Jt.sep="win32"===ve?"\\":"/";const we=Symbol("globstar **");Jt.GLOBSTAR=we,Jt.filter=(t,e={})=>r=>Jt(r,t,e);const Ae=(t,e={})=>Object.assign({},t,e);Jt.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return Jt;const e=Jt;return Object.assign((r,n,o={})=>e(r,n,Ae(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,Ae(t,r))}static defaults(r){return e.defaults(Ae(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,Ae(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,Ae(t,n))}},unescape:(r,n={})=>e.unescape(r,Ae(t,n)),escape:(r,n={})=>e.escape(r,Ae(t,n)),filter:(r,n={})=>e.filter(r,Ae(t,n)),defaults:r=>e.defaults(Ae(t,r)),makeRe:(r,n={})=>e.makeRe(r,Ae(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,Ae(t,n)),match:(r,n,o={})=>e.match(r,n,Ae(t,o)),sep:e.sep,GLOBSTAR:we})};const xe=(t,e={})=>(Tt(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:Ct(t));Jt.braceExpand=xe,Jt.makeRe=(t,e={})=>new Se(t,e).makeRe(),Jt.match=(t,e,r={})=>{const n=new Se(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const Ee=/[?*]|[+@!]\(.*?\)|\[|\]/;class Se{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){Tt(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||ve,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&Ee.test(t[2])||Ee.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const l=r.slice(0);l[n]="**",t.push(l),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;n=2&&(t=this.levelTwoFileOptimize(t)),e.includes(we)?this.#S(t,e,r,n,o):this.#_(t,e,r,n,o)}#S(t,e,r,n,o){const i=e.indexOf(we,o),s=e.lastIndexOf(we),[a,l,c]=r?[e.slice(o,i),e.slice(i+1),[]]:[e.slice(o,i),e.slice(i+1,s),e.slice(s+1)];if(a.length){const e=t.slice(n,n+a.length);if(!this.#_(e,a,r,0,0))return!1;n+=a.length}let u=0;if(c.length){if(c.length+n>t.length)return!1;let e=t.length-c.length;if(this.#_(t,c,r,e,0))u=c.length;else{if(""!==t[t.length-1]||n+c.length===t.length)return!1;if(e--,!this.#_(t,c,r,e,0))return!1;u=c.length+1}}if(!l.length){let e=!!u;for(let r=n;r{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===we?we:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===we&&i!==we&&(void 0===i?void 0!==o&&o!==we?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==we&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=we))}),e.filter(t=>t!==we).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;t=400)throw _e(e);return e}function Ce(t,e,r=!1){return r?{data:e,headers:t.headers?mt(t.headers):{},status:t.status,statusText:t.statusText}:e}Jt.AST=Xt,Jt.Minimatch=Se,Jt.escape=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&"),Jt.unescape=kt;const Te=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",Ne=new RegExp("^["+Te+"]["+Te+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function je(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;tRe.includes(t)?"__"+t:t,Me={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:Ie};function Le(t,e){if("string"!=typeof t)return;const r=t.toLowerCase();if(Re.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);if(ke.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`)}function De(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,maxEntityCount:100,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:Math.max(1,t.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,t.maxExpansionDepth??10),maxTotalExpansions:Math.max(1,t.maxTotalExpansions??1e3),maxExpandedLength:Math.max(1,t.maxExpandedLength??1e5),maxEntityCount:Math.max(1,t.maxEntityCount??100),allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null}:De(!0)}const $e=function(t){const e=Object.assign({},Me,t),r=[{value:e.attributeNamePrefix,name:"attributeNamePrefix"},{value:e.attributesGroupName,name:"attributesGroupName"},{value:e.textNodeName,name:"textNodeName"},{value:e.cdataPropName,name:"cdataPropName"},{value:e.commentPropName,name:"commentPropName"}];for(const{value:t,name:e}of r)t&&Le(t,e);return null===e.onDangerousProperty&&(e.onDangerousProperty=Ie),e.processEntities=De(e.processEntities),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),e};let Ue;Ue="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class Fe{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][Ue]={startIndex:e})}static getMetaDataSymbol(){return Ue}}class Be{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const r=Object.create(null);let n=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let o=1,i=!1,s=!1,a="";for(;e"===t[e]){if(s?"-"===t[e-1]&&"-"===t[e-2]&&(s=!1,o--):o--,0===o)break}else"["===t[e]?i=!0:a+=t[e];else{if(i&&qe(t,"!ENTITY",e)){let o,i;if(e+=7,[o,i,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===i.indexOf("&")){if(!1!==this.options.enabled&&null!=this.options.maxEntityCount&&n>=this.options.maxEntityCount)throw new Error(`Entity count (${n+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);const t=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");r[o]={regx:RegExp(`&${t};`,"g"),val:i},n++}}else if(i&&qe(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(i&&qe(t,"!ATTLIST",e))e+=8;else if(i&&qe(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!qe(t,"!--",e))throw new Error("Invalid DOCTYPE");s=!0}o++,a=""}if(0!==o)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){const r=e=We(t,e);for(;ethis.options.maxEntitySize)throw new Error(`Entity "${n}" size (${o.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[n,o,--e]}readNotationExp(t,e){const r=e=We(t,e);for(;e{for(;e0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const o=this.siblingStacks[n],i=r?`${r}:${t}`:t,s=o.get(i)||0;let a=0;for(const t of o.values())a+=t;o.set(i,s+1);const l={tag:t,position:a,counter:s};null!=r&&(l.namespace=r),null!=e&&(l.values=e),this.path.push(l)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const r=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(r)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[r];if("deep-wildcard"===n.type){if(r--,r<0)return!0;const n=t[r];let o=!1;for(let t=e;t>=0;t--){const i=t===this.path.length-1;if(this._matchSegment(n,this.path[t],i)){e=t-1,r--,o=!0;break}}if(!o)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,r--}}return r<0}_matchSegment(t,e,r){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!r)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const r=e.values[t.attrName];if(String(r)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!r)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}class Xe{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let r=0,n="";for(;r0){const r=t.substring(0,e);if("xmlns"!==r)return r}}class Qe{constructor(t){var e;if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>dr(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>dr(e,16,"&#x")}},this.addExternalEntities=tr,this.parseXml=ir,this.parseTextData=er,this.resolveNameSpace=rr,this.buildAttributesMap=or,this.isItStopNode=cr,this.replaceEntitiesValue=ar,this.readStopNodeData=hr,this.saveTextToParentTag=lr,this.addChild=sr,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?t=>{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1,this.entityExpansionCount=0,this.currentExpandedLength=0,this.matcher=new Ye,this.isCurrentNodeStopNode=!1,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodeExpressions=[];for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t,e,r));const n=this.options.jPath?r.toString():r,a=this.options.tagValueProcessor(e,t,n,o,i);return null==a?t:typeof a!=typeof t||a!==t?a:this.options.trimValues||t.trim()===t?fr(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function rr(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const nr=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function or(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const n=je(t,nr),o=n.length,i={},s={};for(let t=0;t0&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(s);for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}o=gr(this.options.transformTagName,o,"",this.options).tagName,r&&(n=this.saveTextToParentTag(n,r,this.matcher));const s=this.matcher.getCurrentTag();if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);s&&-1!==this.options.unpairedTags.indexOf(s)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=pr(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,this.matcher),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new Fe(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,this.matcher,e.tagName)),this.addChild(r,t,this.matcher,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=ur(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,this.matcher),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=o.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=ur(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,this.matcher);let s=this.parseTextData(o,r.tagname,this.matcher,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,s),i=e+2}else{let o=pr(t,i,this.options.removeNSPrefix);if(!o){const e=t.substring(Math.max(0,i-50),Math.min(t.length,i+50));throw new Error(`readTagExp returned undefined at position ${i}. Context: "${e}"`)}let s=o.tagName;const a=o.rawTagName;let l=o.tagExp,c=o.attrExpPresent,u=o.closeIndex;if(({tagName:s,tagExp:l}=gr(this.options.transformTagName,s,l,this.options)),this.options.strictReservedNames&&(s===this.options.commentPropName||s===this.options.cdataPropName||s===this.options.textNodeName||s===this.options.attributesGroupName))throw new Error(`Invalid tag name: ${s}`);r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,this.matcher,!1));const p=r;p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());let h=!1;l.length>0&&l.lastIndexOf("/")===l.length-1&&(h=!0,"/"===s[s.length-1]?(s=s.substr(0,s.length-1),l=s):l=l.substr(0,l.length-1),c=s!==l);let f,d=null,g={};f=Je(a),s!==e.tagname&&this.matcher.push(s,{},f),s!==l&&c&&(d=this.buildAttributesMap(l,this.matcher,s),d&&(g=Ze(d,this.options))),s!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode(this.stopNodeExpressions,this.matcher));const m=i;if(this.isCurrentNodeStopNode){let e="";if(h)i=o.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(s))i=o.closeIndex;else{const r=this.readStopNodeData(t,a,u+1);if(!r)throw new Error(`Unexpected end of ${a}`);i=r.i,e=r.tagContent}const n=new Fe(s);d&&(n[":@"]=d),n.add(this.options.textNodeName,e),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,n,this.matcher,m)}else{if(h){({tagName:s,tagExp:l}=gr(this.options.transformTagName,s,l,this.options));const t=new Fe(s);d&&(t[":@"]=d),this.addChild(r,t,this.matcher,m),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(-1!==this.options.unpairedTags.indexOf(s)){const t=new Fe(s);d&&(t[":@"]=d),this.addChild(r,t,this.matcher,m),this.matcher.pop(),this.isCurrentNodeStopNode=!1,i=o.closeIndex;continue}{const t=new Fe(s);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),d&&(t[":@"]=d),this.addChild(r,t,this.matcher,m),r=t}}n="",i=u}}else n+=t[i];return e.child};function sr(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.jPath?r.toString():r,i=this.options.updateTag(e.tagname,o,e[":@"]);!1===i||("string"==typeof i?(e.tagname=i,t.addChild(e,n)):t.addChild(e,n))}function ar(t,e,r){const n=this.options.processEntities;if(!n||!n.enabled)return t;if(n.allowedTags){const o=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(e):n.allowedTags(e,o)))return t}if(n.tagFilter){const o=this.options.jPath?r.toString():r;if(!n.tagFilter(e,o))return t}for(const e of Object.keys(this.docTypeEntities)){const r=this.docTypeEntities[e],o=t.match(r.regx);if(o){if(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions)throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);const e=t.length;if(t=t.replace(r.regx,r.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-e,this.currentExpandedLength>n.maxExpandedLength))throw new Error(`Total expanded content size exceeded: ${this.currentExpandedLength} > ${n.maxExpandedLength}`)}}for(const e of Object.keys(this.lastEntities)){const r=this.lastEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(const e of Object.keys(this.htmlEntities)){const r=this.htmlEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)}function lr(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function cr(t,e){if(!t||0===t.length)return!1;for(let r=0;r"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=ur(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=ur(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=ur(t,"]]>",r,"StopNode is not closed.")-2;else{const n=pr(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function fr(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&function(t,e={}){if(e=Object.assign({},ze,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&Ve.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(isFinite(r)){if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(Ke);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:(1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i)&&s.length>0?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const o=Ge.exec(r);if(o){const i=o[1]||"",s=o[2];let a=(n=o[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const l=i?"."===t[s.length+1]:"."===t[s.length];if(!e.leadingZeros&&(s.length>1||1===s.length&&!l))return t;{const n=Number(r),o=String(n);if(0===n)return n;if(-1!==o.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===o||o===a||o===`${i}${a}`?n:t;let l=s?a:r;return s?l===o||i+l===o?n:t:l===o||l===i+o?n:t}}return t}}var n;return function(t,e,r){const n=e===1/0;switch(r.infinity.toLowerCase()){case"null":return null;case"infinity":return e;case"string":return n?"Infinity":"-Infinity";default:return t}}(t,Number(r),e)}(t,r)}return void 0!==t?t:""}function dr(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}function gr(t,e,r,n){if(t){const n=t(e);r===e&&(r=n),e=n}return{tagName:e=mr(e,n),tagExp:r}}function mr(t,e){if(ke.includes(t))throw new Error(`[SECURITY] Invalid name: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);return Re.includes(t)?e.onDangerousProperty(t):t}const yr=Fe.getMetaDataSymbol();function br(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;const r={};for(const n in t)n.startsWith(e)?r[n.substring(e.length)]=t[n]:r[n]=t[n];return r}function vr(t,e,r){return wr(t,e,r)}function wr(t,e,r){let n;const o={};for(let i=0;i0&&(o[e.textNodeName]=n):void 0!==n&&(o[e.textNodeName]=n),o}function Ar(t){const e=Object.keys(t);for(let t=0;t5&&"xml"===n)return Rr("InvalidXml","XML declaration allowed only at the start of the document.",Mr(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function Cr(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function Tr(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const Nr=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function jr(t,e){const r=je(t,Nr),n={};for(let t=0;t"!==t[i]&&" "!==t[i]&&"\t"!==t[i]&&"\n"!==t[i]&&"\r"!==t[i];i++)l+=t[i];if(l=l.trim(),"/"===l[l.length-1]&&(l=l.substring(0,l.length-1),i--),!Ir(l)){let e;return e=0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",Rr("InvalidTag",e,Mr(t,i))}const c=Tr(t,i);if(!1===c)return Rr("InvalidAttr","Attributes for '"+l+"' have open quote.",Mr(t,i));let u=c.value;if(i=c.index,"/"===u[u.length-1]){const r=i-u.length;u=u.substring(0,u.length-1);const o=jr(u,e);if(!0!==o)return Rr(o.err.code,o.err.msg,Mr(t,r+o.err.line));n=!0}else if(a){if(!c.tagClosed)return Rr("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",Mr(t,i));if(u.trim().length>0)return Rr("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",Mr(t,s));if(0===r.length)return Rr("InvalidTag","Closing tag '"+l+"' has not been opened.",Mr(t,s));{const e=r.pop();if(l!==e.tagName){let r=Mr(t,e.tagStartPos);return Rr("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+l+"'.",Mr(t,s))}0==r.length&&(o=!0)}}else{const a=jr(u,e);if(!0!==a)return Rr(a.err.code,a.err.msg,Mr(t,i-u.length+a.err.line));if(!0===o)return Rr("InvalidXml","Multiple possible root nodes found.",Mr(t,i));-1!==e.unpairedTags.indexOf(l)||r.push({tagName:l,tagStartPos:s}),n=!0}for(i++;i0)||Rr("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):Rr("InvalidXml","Start tag expected.",1)}(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new Qe(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:vr(n,this.options,r.matcher)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return Fe.getMetaDataSymbol()}}var $r,Ur=n(26602);function Fr(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function Br(t,e,r=$r.Original){const n=Ur.get(t,e);return"array"===r&&!1===Array.isArray(n)?[n]:"object"===r&&Array.isArray(n)?n[0]:n}function Wr(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[Fr]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return Ur.set(r,"multistatus.response",Br(r,"multistatus.response",$r.Array)),Ur.set(r,"multistatus.response",Ur.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?Ur.set(e,"status",Br(e,"status",$r.Object)):(Ur.set(e,"propstat",Br(e,"propstat",$r.Object)),Ur.set(e,"propstat.prop",Br(e,"propstat.prop",$r.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new Dr({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function qr(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:o="0",resourcetype:i=null,getcontenttype:s=null,getetag:a=null}=t,l=i&&"object"==typeof i&&void 0!==i.collection?"directory":"file",c={filename:e,basename:k.basename(e),lastmod:n,size:parseInt(o,10),type:l,etag:"string"==typeof a?a.replace(/"/g,""):null};return"file"===l&&(c.mime=s&&"string"==typeof s?s.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function Hr(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}async function Vr(t,e,r={}){const{details:n=!1}=r,o=Et({url:F(t.remoteURL,L(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),i=await St(o,t);Oe(t,i);const s=await i.text(),a=function(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,a,l]=i.split(" ",3),c=parseInt(a,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return qr(o,$(e),r)}(await Wr(s,t.parsing),e,n);return Ce(i,a,n)}async function Gr(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=function(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=k.dirname(e)}while(e&&"/"!==e);return r}($(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let o=!1;for(const i of n)if(o)await Gr(t,i,{...r,recursive:!1});else try{if("directory"!==(await Vr(t,i)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;o=!0,await Gr(t,i,{...r,recursive:!1})}}(t,e,r);const n=Et({url:F(t.remoteURL,(o=L(e),o.endsWith("/")?o:o+"/")),method:"MKCOL"},t,r);var o;Oe(t,await St(n,t))}!function(t){t.Array="array",t.Object="object",t.Original="original"}($r||($r={}));const zr=()=>{};var Kr=n(62045).hp;const Yr=t=>t;function Xr(t,e){let r="";e.format&&e.indentBy.length>0&&(r="\n");const n=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let r=t.toString();return r=on(r,e),r}return""}for(let a=0;a`,s=!1,n.pop();continue}if(c===e.commentPropName){i+=r+`\x3c!--${l[c][0][e.textNodeName]}--\x3e`,s=!0,n.pop();continue}if("?"===c[0]){const t=rn(l[":@"],e,p),o="?xml"===c?"":r;let a=l[c][0][e.textNodeName];a=0!==a.length?" "+a:"",i+=o+`<${c}${a}${t}?>`,s=!0,n.pop();continue}let h=r;""!==h&&(h+=e.indentBy);const f=r+`<${c}${rn(l[":@"],e,p)}`;let d;d=p?Qr(l[c],e):Zr(l[c],e,h,n,o),-1!==e.unpairedTags.indexOf(c)?e.suppressUnpairedNode?i+=f+">":i+=f+"/>":d&&0!==d.length||!e.suppressEmptyNode?d&&d.endsWith(">")?i+=f+`>${d}${r}`:(i+=f+">",d&&""!==r&&(d.includes("/>")||d.includes("`):i+=f+"/>",s=!0,n.pop()}return i}function Jr(t,e){if(!t||e.ignoreAttributes)return null;const r={};let n=!1;for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o.startsWith(e.attributeNamePrefix)?o.substr(e.attributeNamePrefix.length):o]=t[o],n=!0);return n?r:null}function Qr(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let r="";for(let n=0;n${n}`:r+=`<${i}${t}/>`}}}return r}function tn(t,e){let r="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let o=t[n];!0===o&&e.suppressBooleanAttributes?r+=` ${n.substr(e.attributeNamePrefix.length)}`:r+=` ${n.substr(e.attributeNamePrefix.length)}="${o}"`}return r}function en(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function an(t){if(this.options=Object.assign({},sn,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t{for(const r of e){if("string"==typeof r&&t===r)return!0;if(r instanceof RegExp&&r.test(t))return!0}}:()=>!1,this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=un),this.processTextOrObjNode=ln,this.options.format?(this.indentate=cn,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function ln(t,e,r,n){const o=this.extractAttributes(t);if(n.push(e,o),this.checkStopNode(n)){const o=this.buildRawContent(t),i=this.buildAttributesForStopNode(t);return n.pop(),this.buildObjectNode(o,e,i,r)}const i=this.j2x(t,r+1,n);return n.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,r,n):this.buildObjectNode(i.val,e,i.attrStr,r)}function cn(t){return this.options.indentBy.repeat(t)}function un(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}an.prototype.build=function(t){if(this.options.preserveOrder)return Xr(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new Ye;return this.j2x(t,0,e).val}},an.prototype.j2x=function(t,e,r){let n="",o="";if(this.options.maxNestedTags&&r.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const i=this.options.jPath?r.toString():r,s=this.checkStopNode(r);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(o+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?o+="":"?"===a[0]?o+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)o+=this.buildTextValNode(t[a],a,"",e,r);else if("object"!=typeof t[a]){const l=this.isAttribute(a);if(l&&!this.ignoreAttributesFn(l,i))n+=this.buildAttrPairStr(l,""+t[a],s);else if(!l)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);o+=this.replaceEntitiesValue(e)}else{r.push(a);const n=this.checkStopNode(r);if(r.pop(),n){const r=""+t[a];o+=""===r?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+r+""+t+"${t}`;else if("object"==typeof t&&null!==t){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);e+=""===n?`<${r}${o}/>`:`<${r}${o}>${n}`}}else if("object"==typeof n&&null!==n){const t=this.buildRawContent(n),o=this.buildAttributesForStopNode(n);e+=""===t?`<${r}${o}/>`:`<${r}${o}>${t}`}else e+=`<${r}>${n}`}return e},an.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const r=t[this.options.attributesGroupName];for(let t in r){if(!Object.prototype.hasOwnProperty.call(r,t))continue;const n=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,o=r[t];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}else for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;const n=this.isAttribute(r);if(n){const o=t[r];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}return e},an.prototype.buildObjectNode=function(t,e,r,n){if(""===t)return"?"===e[0]?this.indentate(n)+"<"+e+r+"?"+this.tagEndChar:this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar;{let o=""+t+o}},an.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;et.trim()),server:o.headers.get("Server")??""}}const yn="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";var bn=n(63814);function vn(){return(0,bn.dC)("dav/comments")}const wn=function(t,e={}){const{authType:r=null,remoteBasePath:n,contactHref:o=yn,ha1:i,headers:s={},httpAgent:a,httpsAgent:l,password:c,token:u,username:p,withCredentials:h}=e;let f=r;f||(f=p||c?et.Password:et.None);const d={authType:f,remoteBasePath:n,contactHref:o,ha1:i,headers:Object.assign({},s),httpAgent:a,httpsAgent:l,password:c,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[Fr]},remotePath:U(t),remoteURL:t,token:u,username:p,withCredentials:h};return nt(d,p,c,u,i),{copyFile:(t,e,r)=>async function(t,e,r,n={}){const o=Et({url:F(t.remoteURL,L(e)),method:"COPY",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T",Depth:n.shallow?"0":"infinity"}},t,n);Oe(t,await St(o,t))}(d,t,e,r),createDirectory:(t,e)=>Gr(d,t,e),createReadStream:(t,e)=>function(t,e,r={}){const n=new(0,bt.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const o=Et({url:F(t.remoteURL,L(e)),method:"GET",headers:n},t,r),i=await St(o,t);if(Oe(t,i),n.Range&&206!==i.status){const t=new Error(`Invalid response code for partial request: ${i.status}`);throw t.status=i.status,t}return r.callback&&setTimeout(()=>{r.callback(i)},0),i.body}(t,e,r).then(t=>{t.pipe(n)}).catch(t=>{n.emit("error",t)}),n}(d,t,e),createWriteStream:(t,e,r)=>function(t,e,r={},n=zr){const o=new(0,bt.PassThrough),i={};return!1===r.overwrite&&(i["If-None-Match"]="*"),St(Et({url:F(t.remoteURL,L(e)),method:"PUT",headers:i,data:o,maxRedirects:0},t,r),t).then(e=>Oe(t,e)).then(t=>{setTimeout(()=>{n(t)},0)}).catch(t=>{o.emit("error",t)}),o}(d,t,e,r),customRequest:(t,e)=>async function(t,e,r){r.url||(r.url=F(t.remoteURL,L(e)));const n=Et(r,t,{}),o=await St(n,t);return Oe(t,o),o}(d,t,e),deleteFile:(t,e)=>async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e)),method:"DELETE"},t,r);Oe(t,await St(n,t))}(d,t,e),exists:(t,e)=>async function(t,e,r={}){try{return await Vr(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}(d,t,e),getDirectoryContents:(t,e)=>async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),o=await St(n,t);Oe(t,o);const i=await o.text();if(!i)throw new Error("Failed parsing directory contents: Empty response");const s=await Wr(i,t.parsing),a=D(e);let l=function(t,e,r,n=!1,o=!1){const i=k.join(e,"/"),{multistatus:{response:s}}=t,a=s.map(t=>{const e=function(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new R(t,"Failed normalising HREF")}}(t.href),{propstat:{prop:r}}=t;return qr(r,"/"===i?decodeURIComponent($(e)):$(k.relative(decodeURIComponent(i),decodeURIComponent(e))),n)});return o?a:a.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(s,D(t.remoteBasePath||t.remotePath),a,r.details,r.includeSelf);return r.glob&&(l=function(t,e){return t.filter(t=>Jt(t.filename,e,{matchBase:!0}))}(l,r.glob)),Ce(o,l,r.details)}(d,t,e),getFileContents:(t,e)=>async function(t,e,r={}){const{format:n="binary"}=r;if("binary"!==n&&"text"!==n)throw new R({info:{code:rt.InvalidOutputFormat}},`Invalid output format: ${n}`);return"text"===n?async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[Yr]},t,r),o=await St(n,t);Oe(t,o);const i=await o.text();return Ce(o,i,r.details)}(t,e,r):async function(t,e,r={}){const n=Et({url:F(t.remoteURL,L(e)),method:"GET"},t,r),o=await St(n,t);let i;return Oe(t,o),i=ht()||pt()?await o.arrayBuffer():Kr.from(await o.arrayBuffer()),Ce(o,i,r.details)}(t,e,r)}(d,t,e),getFileDownloadLink:t=>function(t,e){let r=F(t.remoteURL,L(e));const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new R({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getFileUploadLink:t=>function(t,e){let r=`${F(t.remoteURL,L(e))}?Content-Type=application/octet-stream`;const n=/^https:/i.test(r)?"https":"http";switch(t.authType){case et.None:break;case et.Password:{const e=Z(t.headers.Authorization.replace(/^Basic /i,"").trim());r=r.replace(/^https?:\/\//,`${n}://${e}@`);break}default:throw new R({info:{code:rt.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}(d,t),getHeaders:()=>Object.assign({},d.headers),getQuota:t=>async function(t,e={}){const r=e.path||"/",n=Et({url:F(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),o=await St(n,t);Oe(t,o);const i=await o.text();return Ce(o,function(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":n}}}=e;return void 0!==r&&void 0!==n?{used:parseInt(String(r),10),available:Hr(n)}:null}catch(t){}return null}(await Wr(i,t.parsing)),e.details)}(d,t),lock:(t,e)=>async function(t,e,r={}){const{refreshToken:n,timeout:o=dn}=r,i={Accept:"text/plain,application/xml",Timeout:o};n&&(i.If=n);const s=Et({url:F(t.remoteURL,L(e)),method:"LOCK",headers:i,data:hn(t.contactHref)},t,r),a=await St(s,t);Oe(t,a);const l=(p=await a.text(),new Dr({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(p)),c=Ur.get(l,"prop.lockdiscovery.activelock.locktoken.href"),u=Ur.get(l,"prop.lockdiscovery.activelock.timeout");var p;if(!c)throw _e(a,"No lock token received: ");return{token:c,serverTimeout:u}}(d,t,e),moveFile:(t,e,r)=>async function(t,e,r,n={}){const o=Et({url:F(t.remoteURL,L(e)),method:"MOVE",headers:{Destination:F(t.remoteURL,L(r)),Overwrite:!1===n.overwrite?"F":"T"}},t,n);Oe(t,await St(o,t))}(d,t,e,r),putFileContents:(t,e,r)=>async function(t,e,r,n={}){const{contentLength:o=!0,overwrite:i=!0}=n,s={"Content-Type":"application/octet-stream"};!ht()&&!pt()&&void 0!==bt&&void 0!==bt?.Readable&&r instanceof bt.Readable||!1===o||(s["Content-Length"]="number"==typeof o?`${o}`:`${function(t){if(At(t))return t.byteLength;if(xt(t))return t.length;if("string"==typeof t)return(0,gn.d)(t);throw new R({info:{code:rt.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(r)}`),i||(s["If-None-Match"]="*");const a=Et({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:r},t,n),l=await St(a,t);try{Oe(t,l)}catch(t){const e=t;if(412!==e.status||i)throw e;return!1}return!0}(d,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>async function(t,e,r,n,o,i={}){const s=await mn(t,e,i);if(s.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new R({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(n-r+1),"X-Update-Range":`bytes=${r}-${n}`},a=Et({url:F(t.remoteURL,L(e)),method:"PATCH",headers:s,data:o},t,i);Oe(t,await St(a,t))}(t,e,r,n,o,i);if(s.server.includes("Apache")&&s.compliance.includes(""))return await async function(t,e,r,n,o,i={}){if(r>n||r<0)throw new R({info:{code:rt.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const s={"Content-Type":"application/octet-stream","Content-Length":""+(n-r+1),"Content-Range":`bytes ${r}-${n}/*`},a=Et({url:F(t.remoteURL,L(e)),method:"PUT",headers:s,data:o},t,i);Oe(t,await St(a,t))}(t,e,r,n,o,i);throw new R({info:{code:rt.NotSupported}},"Not supported")}(d,t,e,r,n,o),getDAVCompliance:t=>mn(d,t),search:(t,e)=>async function(t,e,r={}){const{details:n=!1}=r,o=Et({url:F(t.remoteURL,L(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),i=await St(o,t);Oe(t,i);const s=await i.text(),a=function(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith(L(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(qr(t.propstat.prop,e,r))}),n}(await Wr(s,t.parsing),e,n);return Ce(i,a,n)}(d,t,e),setHeaders:t=>{d.headers=Object.assign({},t)},stat:(t,e)=>Vr(d,t,e),unlock:(t,e,r)=>async function(t,e,r,n={}){const o=Et({url:F(t.remoteURL,L(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),i=await St(o,t);if(Oe(t,i),204!==i.status&&200!==i.status)throw _e(i)}(d,t,e,r),registerAttributeParser:t=>{d.parsing.attributeParsers.push(t)},registerTagParser:t=>{d.parsing.tagParsers.push(t)}}}(vn());function An(t){wn.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,i.zo)(An),An((0,i.do)());const xn=wn;var En=n(19051);function Sn(t,e=1){const r=new DOMParser;let n=t;for(let t=0;t({idsInLimbo:[]}),actions:{addId(t){this.idsInLimbo.push(t)},removeId(t){const e=this.idsInLimbo.indexOf(t);e>-1&&this.idsInLimbo.splice(e,1)},checkForId(t){return this.idsInLimbo.includes(t)}}}),On={props:{id:{type:Number,default:null},message:{type:String,default:""},resourceId:{type:[String,Number],required:!0},resourceType:{type:String,default:"files"}},data:()=>({deleted:!1,editing:!1,loading:!1}),computed:{...(0,a.n2)(_n)},methods:{onEdit(){this.editing=!0},onEditCancel(){this.editing=!1,this.updateLocalMessage(this.message)},async onEditComment(e){this.loading=!0;try{await async function(t,e,r,n){const o=["",t,e,r].join("/");return await xn.customRequest(o,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${n}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.resourceId,this.id,e),o.debug("Comment edited",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id,message:e}),this.$emit("update:message",e),this.editing=!1}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to edit the comment")),o.error("An error occurred while trying to edit the comment",{error:e})}finally{this.loading=!1}},onDeleteWithUndo(){this.$emit("delete"),this.deleted=!0,this.deletedCommentLimboStore.addId(this.id);const e=setTimeout(this.onDelete,c.Br);(0,c._h)(t("comments","Comment deleted"),()=>{clearTimeout(e),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)})},async onDelete(){try{await async function(t,e,r){const n=["",t,e,r].join("/");await xn.deleteFile(n)}(this.resourceType,this.resourceId,this.id),o.debug("Comment deleted",{resourceType:this.resourceType,resourceId:this.resourceId,id:this.id}),this.$emit("delete",this.id)}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to delete the comment")),o.error("An error occurred while trying to delete the comment",{error:e}),this.deleted=!1,this.deletedCommentLimboStore.removeId(this.id)}},async onNewComment(e){this.loading=!0;try{const t=await async function(t,e,r){const n=["",t,e].join("/"),o=await En.Ay.post(vn()+n,{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,actorType:"users",creationDateTime:(new Date).toUTCString(),message:r,objectType:t,verb:"comment"}),s=n+"/"+parseInt(o.headers["content-location"].split("/").pop()),a=await xn.stat(s,{details:!0}),l=a.data.props;return l.actorDisplayName=Sn(l.actorDisplayName,2),l.message=Sn(l.message,2),a.data}(this.resourceType,this.resourceId,e);o.debug("New comment posted",{resourceType:this.resourceType,resourceId:this.resourceId,newComment:t}),this.$emit("new",t),this.$emit("update:message",""),this.localMessage=""}catch(e){(0,c.Qg)(t("comments","An error occurred while trying to create the comment")),o.error("An error occurred while trying to create the comment",{error:e})}finally{this.loading=!1}}}},Cn={name:"Comment",components:{IconArrowRight:_.A,IconClose:O.A,IconTrashCanOutline:T.A,IconPencilOutline:C.A,NcActionButton:b.A,NcActions:v.A,NcActionSeparator:w.A,NcAvatar:A.A,NcButton:p.A,NcDateTime:x.A,NcLoadingIcon:E.A,NcRichContenteditable:()=>Promise.all([n.e(4208),n.e(5528)]).then(n.bind(n,95528)),NcRichText:()=>Promise.all([n.e(4208),n.e(4508)]).then(n.bind(n,64508))},mixins:[On],inheritAttrs:!1,props:{actorDisplayName:{type:String,required:!0},actorId:{type:String,required:!0},creationDateTime:{type:String,default:null},editor:{type:Boolean,default:!1},autoComplete:{type:Function,required:!0},userData:{type:Object,default:()=>({})},tag:{type:String,default:"div"}},data:()=>({expanded:!1,localMessage:"",submitted:!1}),computed:{...(0,a.n2)(_n),isOwnComment(){return(0,i.HW)().uid===this.actorId},richContent(){const t={};let e=this.localMessage;return Object.keys(this.userData).forEach((r,n)=>{const o=`mention-${n}`,i=new RegExp(`@${r}|@"${r}"`,"g");e=e.replace(i,`{${o}}`),t[o]={component:S.A,props:{user:r,displayName:this.userData[r].label,primary:this.userData[r].primary}}}),{mentions:t,message:e}},isEmptyMessage(){return!this.localMessage||""===this.localMessage.trim()},timestamp(){return Date.parse(this.creationDateTime)},isLimbo(){return this.deletedCommentLimboStore.checkForId(this.id)}},watch:{message(t){this.updateLocalMessage(t)}},beforeMount(){this.updateLocalMessage(this.message)},methods:{t:s.Tl,updateLocalMessage(t){this.localMessage=t.toString(),this.submitted=!1},onSubmit(){if(""!==this.localMessage.trim())return this.editor?(this.onNewComment(this.localMessage.trim()),void this.$nextTick(()=>{this.$refs.editor.$el.focus()})):void this.onEditComment(this.localMessage.trim())},onExpand(){this.expanded=!0}}};var Tn=n(85072),Nn=n.n(Tn),jn=n(97825),Pn=n.n(jn),Rn=n(77659),kn=n.n(Rn),In=n(55056),Mn=n.n(In),Ln=n(10540),Dn=n.n(Ln),$n=n(41113),Un=n.n($n),Fn=n(22408),Bn={};Bn.styleTagTransform=Un(),Bn.setAttributes=Mn(),Bn.insert=kn().bind(null,"head"),Bn.domAPI=Pn(),Bn.insertStyleElement=Dn(),Nn()(Fn.A,Bn),Fn.A&&Fn.A.locals&&Fn.A.locals;var Wn=(0,g.A)(Cn,function(){var t=this,e=t._self._c;return e(t.tag,{directives:[{name:"show",rawName:"v-show",value:!t.deleted&&!t.isLimbo,expression:"!deleted && !isLimbo"}],tag:"component",staticClass:"comment",class:{"comment--loading":t.loading}},[e("div",{staticClass:"comment__side"},[e("NcAvatar",{staticClass:"comment__avatar",attrs:{"display-name":t.actorDisplayName,user:t.actorId,size:32}})],1),t._v(" "),e("div",{staticClass:"comment__body"},[e("div",{staticClass:"comment__header"},[e("span",{staticClass:"comment__author"},[t._v(t._s(t.actorDisplayName))]),t._v(" "),t.isOwnComment&&t.id&&!t.loading?e("NcActions",{staticClass:"comment__actions"},[t.editing?e("NcActionButton",{on:{click:t.onEditCancel},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconClose",{attrs:{size:20}})]},proxy:!0}],null,!1,2888946197)},[t._v("\n\t\t\t\t\t"+t._s(t.t("comments","Cancel edit"))+"\n\t\t\t\t")]):[e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onEdit},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconPencilOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,3345211262)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Edit comment"))+"\n\t\t\t\t\t")]),t._v(" "),e("NcActionSeparator"),t._v(" "),e("NcActionButton",{attrs:{"close-after-click":""},on:{click:t.onDeleteWithUndo},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconTrashCanOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1034796883)},[t._v("\n\t\t\t\t\t\t"+t._s(t.t("comments","Delete comment"))+"\n\t\t\t\t\t")])]],2):t._e(),t._v(" "),t.id&&t.loading?e("div",{staticClass:"comment_loading icon-loading-small"}):t.creationDateTime?e("NcDateTime",{staticClass:"comment__timestamp",attrs:{timestamp:t.timestamp,"ignore-seconds":!0}}):t._e()],1),t._v(" "),t.editor||t.editing?e("form",{staticClass:"comment__editor",on:{submit:function(t){t.preventDefault()}}},[e("div",{staticClass:"comment__editor-group"},[e("NcRichContenteditable",{ref:"editor",attrs:{"auto-complete":t.autoComplete,contenteditable:!t.loading,label:t.editor?t.t("comments","New comment"):t.t("comments","Edit comment"),placeholder:t.t("comments","Write a comment …"),"model-value":t.localMessage,"user-data":t.userData,"aria-describedby":"tab-comments__editor-description"},on:{"update:value":t.updateLocalMessage,submit:t.onSubmit}}),t._v(" "),e("div",{staticClass:"comment__submit"},[e("NcButton",{attrs:{variant:"tertiary-no-background",type:"submit","aria-label":t.t("comments","Post comment"),disabled:t.isEmptyMessage},on:{click:t.onSubmit},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?e("NcLoadingIcon"):e("IconArrowRight",{attrs:{size:20}})]},proxy:!0}],null,!1,758946661)})],1)],1),t._v(" "),e("div",{staticClass:"comment__editor-description",attrs:{id:"tab-comments__editor-description"}},[t._v("\n\t\t\t\t"+t._s(t.t("comments","@ for mentions, : for emoji, / for smart picker"))+"\n\t\t\t")])]):e("NcRichText",{staticClass:"comment__message",class:{"comment__message--expanded":t.expanded},attrs:{text:t.richContent.message,arguments:t.richContent.mentions,"use-markdown":""},nativeOn:{click:function(e){return t.onExpand.apply(null,arguments)}}})],1)])},[],!1,null,"70317f94",null);const qn=Wn.exports;var Hn=n(81222);const Vn=(0,l.pM)({props:{resourceId:{type:Number,required:!0},resourceType:{type:String,default:"files"}},data(){return{editorData:{actorDisplayName:(0,i.HW)().displayName,actorId:(0,i.HW)().uid,key:"editor"},userData:{},currentResourceId:this.resourceId}},methods:{async autoComplete(t,e){const{data:r}=await En.Ay.get((0,bn.KT)("core/autocomplete/get"),{params:{search:t,itemType:this.resourceType,itemId:this.currentResourceId,sorter:"commenters|share-recipients",limit:(0,Hn.C)("comments","maxAutoCompleteResults")}});return r.ocs.data.forEach(t=>{this.userData[t.id]=t}),e(Object.values(this.userData))},genMentionsData(t){return Object.values(t).flat().forEach(t=>{this.userData[t.mentionId]={icon:"icon-user",id:t.mentionId,label:t.mentionDisplayName,source:"users",primary:(0,i.HW)()?.uid===t.mentionId}}),this.userData}}});async function Gn({resourceType:t,resourceId:e},r){const n=["",t,e].join("/"),o=r.datetime?`${r.datetime.toISOString()}`:"",i=await xn.customRequest(n,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??20}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${o}\n\t\t\t`,...r}),s=await i.text();return Ce(i,function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return qr(r,r.id.toString(),e)})}(await Wr(s),!0),!0)}const zn={name:"Comments",components:{Comment:qn,NcEmptyContent:h.A,NcButton:p.A,IconRefresh:y.A,IconMessageReplyTextOutline:m,IconAlertCircleOutline:f.A},directives:{elementVisibility:u.Zx},mixins:[Vn],data:()=>({error:"",loading:!1,done:!1,offset:0,comments:[],cancelRequest:()=>{},Comment:qn,userData:{}}),computed:{hasComments(){return this.comments.length>0},isFirstLoading(){return this.loading&&0===this.offset}},watch:{resourceId(){this.currentResourceId=this.resourceId}},methods:{t:s.Tl,async onVisibilityChange(t){if(t)try{await function(t,e,r){const n=["",t,e].join("/"),o=r.toUTCString();return xn.customRequest(n,{method:"PROPPATCH",data:`\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${o}\n\t\t\t\t\n\t\t\t\n\t\t\t`})}(this.resourceType,this.currentResourceId,new Date)}catch(t){(0,c.Qg)(t.message||(0,s.Tl)("comments","Failed to mark comments as read"))}},async update(t){this.currentResourceId=t,this.resetState(),await this.getComments()},onScrollBottomReached(){this.error||this.done||this.loading||this.getComments()},async getComments(){this.cancelRequest("cancel");try{this.loading=!0,this.error="";const{request:t,abort:e}=function(t){const e=new AbortController,r=e.signal;return{request:async function(e,n){return await t(e,{signal:r,...n})},abort:()=>e.abort()}}(Gn);this.cancelRequest=e;const{data:r}=await t({resourceType:this.resourceType,resourceId:this.currentResourceId},{offset:this.offset})||{data:[]};this.logger.debug(`Processed ${r.length} comments`,{comments:r}),r.length<20&&(this.done=!0);for(const t of r)t.props.actorId=t.props.actorId.toString();this.comments=[...this.comments,...r],this.offset+=20}catch(t){if("cancel"===t.message)return;this.error=(0,s.Tl)("comments","Unable to load the comments list"),o.error("Error loading the comments list",{error:t})}finally{this.loading=!1}},onNewComment(t){this.comments.unshift(t)},onDelete(t){const e=this.comments.findIndex(e=>e.props.id===t);e>-1?this.comments.splice(e,1):o.error("Could not find the deleted comment in the list",{id:t})},resetState(){this.error="",this.loading=!1,this.done=!1,this.offset=0,this.comments=[]}}},Kn=zn;var Yn=n(94262),Xn={};Xn.styleTagTransform=Un(),Xn.setAttributes=Mn(),Xn.insert=kn().bind(null,"head"),Xn.domAPI=Pn(),Xn.insertStyleElement=Dn(),Nn()(Yn.A,Xn),Yn.A&&Yn.A.locals&&Yn.A.locals;const Zn=(0,g.A)(Kn,function(){var t=this,e=t._self._c;return e("div",{directives:[{name:"element-visibility",rawName:"v-element-visibility",value:t.onVisibilityChange,expression:"onVisibilityChange"}],staticClass:"comments",class:{"icon-loading":t.isFirstLoading}},[e("Comment",t._b({staticClass:"comments__writer",attrs:{"auto-complete":t.autoComplete,"resource-type":t.resourceType,editor:!0,"user-data":t.userData,"resource-id":t.currentResourceId},on:{new:t.onNewComment}},"Comment",t.editorData,!1)),t._v(" "),t.isFirstLoading?t._e():[!t.hasComments&&t.done?e("NcEmptyContent",{staticClass:"comments__empty",attrs:{name:t.t("comments","No comments yet, start the conversation!")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconMessageReplyTextOutline")]},proxy:!0}],null,!1,326612300)}):e("ul",t._l(t.comments,function(r){return e("Comment",t._b({key:r.props.id,staticClass:"comments__list",attrs:{tag:"li","auto-complete":t.autoComplete,"resource-type":t.resourceType,message:r.props.message,"resource-id":t.currentResourceId,"user-data":t.genMentionsData(r.props.mentions)},on:{"update:message":function(e){return t.$set(r.props,"message",e)},delete:t.onDelete}},"Comment",r.props,!1))}),1),t._v(" "),t.loading&&!t.isFirstLoading?e("div",{staticClass:"comments__info icon-loading"}):t.hasComments&&t.done?e("div",{staticClass:"comments__info"},[t._v("\n\t\t\t"+t._s(t.t("comments","No more messages"))+"\n\t\t")]):t.error?[e("NcEmptyContent",{staticClass:"comments__error",attrs:{name:t.error},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconAlertCircleOutline")]},proxy:!0}],null,!1,3663249556)}),t._v(" "),e("NcButton",{staticClass:"comments__retry",on:{click:t.getComments},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconRefresh")]},proxy:!0}],null,!1,2997625269)},[t._v("\n\t\t\t\t"+t._s(t.t("comments","Retry"))+"\n\t\t\t")])]:t._e()]],2)},[],!1,null,"6c8c157a",null).exports;l.Ay.use(a.R2),n.nc=(0,i.aV)(),l.Ay.mixin({data:()=>({logger:o}),methods:{t:s.t,n:s.n}}),window.OCA&&!window.OCA.Comments&&Object.assign(window.OCA,{Comments:{}}),Object.assign(window.OCA.Comments,{View:class{constructor(t="files",e={}){const r=(0,a.Ey)();return e={...e,propsData:{...e.propsData??{},resourceType:t},pinia:r},new(l.Ay.extend(Zn))(e)}}}),o.debug("OCA.Comments.View initialized")},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,l=r.indexOf(t),c=r.indexOf(e,l+1),u=l;if(l>=0&&c>0){if(t===e)return[l,c];for(n=[],i=r.length;u>=0&&!a;)u==l?(n.push(u),l=r.indexOf(t,u+1)):1==n.length?a=[n.pop(),c]:((o=n.pop())=0?l:c;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l=/[\t\n\f\r ]/g,c={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,l="",c=-1,u=t.length-i;++c>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(c)<<8,r=t.charCodeAt(++c),l+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(c),l+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),l},decode:function(t){var e=(t=String(t).replace(l,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",c=-1;++c>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return c}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),m(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(l)}(t),!0).map(u)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function c(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function u(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(l).join(".")}function p(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var l=p(s);return s.length&&(a[a.length-1]+=l.shift(),a.push.apply(a,l)),e.push.apply(e,a),e}function h(t){return"{"+t+"}"}function f(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function m(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?m(o.post,!1):[""];if(/\$$/.test(o.pre))for(var l=0;l=0;if(!A&&!x)return o.post.match(/,(?!,).*\}/)?m(t=o.pre+"{"+o.body+s+o.post):[t];if(A)y=o.body.split(/\.\./);else if(1===(y=p(o.body)).length&&1===(y=m(y[0],!1).map(h)).length)return a.map(function(t){return o.pre+y[0]+t});if(A){var E=c(y[0]),S=c(y[1]),_=Math.max(y[0].length,y[1].length),O=3==y.length?Math.abs(c(y[2])):1,C=d;S0){var R=new Array(P+1).join("0");j=N<0?"-"+R+j.slice(1):R+j}}b.push(j)}}else{b=[];for(var k=0;k0?r:0),!0)},o?o(t.exports,"apply",{value:s}):t.exports.apply=s},36556(t,e,r){"use strict";var n=r(70453),o=r(73126),i=o([n("%String.prototype.indexOf%")]);t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&i(t,".prototype.")>-1?o([r]):r}},22408(t,e,r){"use strict";r.d(e,{A:()=>a});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}","",{version:3,sources:["webpack://./apps/comments/src/components/Comment.vue"],names:[],mappings:"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB",sourcesContent:['\n@use "sass:math";\n\n$comment-padding: 10px;\n\n.comment {\n\tdisplay: flex;\n\tgap: 8px;\n\tpadding: 5px $comment-padding;\n\n\t&__side {\n\t\tdisplay: flex;\n\t\talign-items: flex-start;\n\t\tpadding-top: 6px;\n\t}\n\n\t&__body {\n\t\tdisplay: flex;\n\t\tflex-grow: 1;\n\t\tflex-direction: column;\n\t\tcontainer-type: inline-size;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tmin-height: 44px;\n\t}\n\n\t&__actions {\n\t\tmargin-inline-start: $comment-padding !important;\n\t}\n\n\t&__author {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&_loading,\n\t&__timestamp {\n\t\tmargin-inline-start: auto;\n\t\ttext-align: end;\n\t\twhite-space: nowrap;\n\t\tcolor: var(--color-text-maxcontrast);\n\t}\n\n\t&__editor-group {\n\t\tposition: relative;\n\t}\n\n\t&__editor-description {\n\t\tcolor: var(--color-text-maxcontrast);\n\t\tpadding-block: var(--default-grid-baseline);\n\t}\n\n\t&__submit {\n\t\tposition: absolute !important;\n\t\tbottom: 5px;\n\t\tinset-inline-end: 0;\n\t}\n\n\t&__message {\n\t\twhite-space: pre-wrap;\n\t\tword-break: normal;\n\t\tmax-height: 200px;\n\t\toverflow: auto;\n\t\tscrollbar-gutter: stable;\n\t\tscrollbar-width: thin;\n\t\tmargin-top: -6px;\n\t\t&--expanded {\n\t\t\tmax-height: none;\n\t\t\toverflow: visible;\n\t\t}\n\t\t:deep(img) {\n\t\t\tmax-width: 100%;\n\t\t\theight: auto;\n\t\t}\n\t}\n}\n\n.rich-contenteditable__input {\n\tmin-height: 44px;\n\tmargin: 0;\n\tpadding: $comment-padding;\n}\n\n'],sourceRoot:""}]);const a=s},94262(t,e,r){"use strict";r.d(e,{A:()=>a});var n=r(71354),o=r.n(n),i=r(76314),s=r.n(i)()(o());s.push([t.id,".comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}","",{version:3,sources:["webpack://./apps/comments/src/views/Comments.vue"],names:[],mappings:"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA",sourcesContent:["\n.comments {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t&__empty,\n\t&__error {\n\t\tflex: 1 0;\n\t}\n\n\t&__retry {\n\t\tmargin: 0 auto;\n\t}\n\n\t&__info {\n\t\theight: 60px;\n\t\tcolor: var(--color-text-maxcontrast);\n\t\ttext-align: center;\n\t\tline-height: 60px;\n\t}\n}\n"],sourceRoot:""}]);const a=s},30041(t,e,r){"use strict";var n=r(30655),o=r(58068),i=r(69675),s=r(75795);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new i("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,l=arguments.length>4?arguments[4]:null,c=arguments.length>5?arguments[5]:null,u=arguments.length>6&&arguments[6],p=!!s&&s(t,e);if(n)n(t,e,{configurable:null===c&&p?p.configurable:!c,enumerable:null===a&&p?p.enumerable:!a,value:r,writable:null===l&&p?p.writable:!l});else{if(!u&&(a||l||c))throw new o("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},7176(t,e,r){"use strict";var n,o=r(73126),i=r(75795);try{n=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var s=!!n&&i&&i(Object.prototype,"__proto__"),a=Object,l=a.getPrototypeOf;t.exports=s&&"function"==typeof s.get?o([s.get]):"function"==typeof l&&function(t){return l(null==t?t:a(t))}},30655(t){"use strict";var e=Object.defineProperty||!1;if(e)try{e({},"a",{value:1})}catch(t){e=!1}t.exports=e},41237(t){"use strict";t.exports=EvalError},69383(t){"use strict";t.exports=Error},79290(t){"use strict";t.exports=RangeError},79538(t){"use strict";t.exports=ReferenceError},58068(t){"use strict";t.exports=SyntaxError},69675(t){"use strict";t.exports=TypeError},35345(t){"use strict";t.exports=URIError},79612(t){"use strict";t.exports=Object},82682(t,e,r){"use strict";var n=r(69600),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){if(!n(e))throw new TypeError("iterator must be a function");var s,a;arguments.length>=3&&(s=r),a=t,"[object Array]"===o.call(a)?function(t,e,r){for(var n=0,o=t.length;ne},70453(t,e,r){"use strict";var n,o=r(79612),i=r(69383),s=r(41237),a=r(79290),l=r(79538),c=r(58068),u=r(69675),p=r(35345),h=r(71514),f=r(58968),d=r(6188),g=r(68002),m=r(75880),y=r(70414),b=r(73093),v=Function,w=function(t){try{return v('"use strict"; return ('+t+").constructor;")()}catch(t){}},A=r(75795),x=r(30655),E=function(){throw new u},S=A?function(){try{return E}catch(t){try{return A(arguments,"callee").get}catch(t){return E}}}():E,_=r(64039)(),O=r(93628),C=r(71064),T=r(48648),N=r(11002),j=r(10076),P={},R="undefined"!=typeof Uint8Array&&O?O(Uint8Array):n,k={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":_&&O?O([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":P,"%AsyncGenerator%":P,"%AsyncGeneratorFunction%":P,"%AsyncIteratorPrototype%":P,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":s,"%Float16Array%":"undefined"==typeof Float16Array?n:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":v,"%GeneratorFunction%":P,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":_&&O?O(O([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&_&&O?O((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":o,"%Object.getOwnPropertyDescriptor%":A,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":a,"%ReferenceError%":l,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&_&&O?O((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":_&&O?O(""[Symbol.iterator]()):n,"%Symbol%":_?Symbol:n,"%SyntaxError%":c,"%ThrowTypeError%":S,"%TypedArray%":R,"%TypeError%":u,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet,"%Function.prototype.call%":j,"%Function.prototype.apply%":N,"%Object.defineProperty%":x,"%Object.getPrototypeOf%":C,"%Math.abs%":h,"%Math.floor%":f,"%Math.max%":d,"%Math.min%":g,"%Math.pow%":m,"%Math.round%":y,"%Math.sign%":b,"%Reflect.getPrototypeOf%":T};if(O)try{null.error}catch(t){var I=O(O(t));k["%Error.prototype%"]=I}var M=function t(e){var r;if("%AsyncFunction%"===e)r=w("async function () {}");else if("%GeneratorFunction%"===e)r=w("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=w("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var o=t("%AsyncGenerator%");o&&O&&(r=O(o.prototype))}return k[e]=r,r},L={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},D=r(66743),$=r(9957),U=D.call(j,Array.prototype.concat),F=D.call(N,Array.prototype.splice),B=D.call(j,String.prototype.replace),W=D.call(j,String.prototype.slice),q=D.call(j,RegExp.prototype.exec),H=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,V=/\\(\\)?/g,G=function(t,e){var r,n=t;if($(L,n)&&(n="%"+(r=L[n])[0]+"%"),$(k,n)){var o=k[n];if(o===P&&(o=M(n)),void 0===o&&!e)throw new u("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:o}}throw new c("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new u("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new u('"allowMissing" argument must be a boolean');if(null===q(/^%?[^%]*%?$/,t))throw new c("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=W(t,0,1),r=W(t,-1);if("%"===e&&"%"!==r)throw new c("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new c("invalid intrinsic syntax, expected opening `%`");var n=[];return B(t,H,function(t,e,r,o){n[n.length]=r?B(o,V,"$1"):e||t}),n}(t),n=r.length>0?r[0]:"",o=G("%"+n+"%",e),i=o.name,s=o.value,a=!1,l=o.alias;l&&(n=l[0],F(r,U([0,1],l)));for(var p=1,h=!0;p=r.length){var m=A(s,f);s=(h=!!m)&&"get"in m&&!("originalValue"in m.get)?m.get:s[f]}else h=$(s,f),s=s[f];h&&!a&&(k[i]=s)}}return s}},71064(t,e,r){"use strict";var n=r(79612);t.exports=n.getPrototypeOf||null},48648(t){"use strict";t.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},93628(t,e,r){"use strict";var n=r(48648),o=r(71064),i=r(7176);t.exports=n?function(t){return n(t)}:o?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return o(t)}:i?function(t){return i(t)}:null},6549(t){"use strict";t.exports=Object.getOwnPropertyDescriptor},75795(t,e,r){"use strict";var n=r(6549);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},30592(t,e,r){"use strict";var n=r(30655),o=function(){return!!n};o.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=o},64039(t,e,r){"use strict";var n="undefined"!=typeof Symbol&&Symbol,o=r(41333);t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&o()}},41333(t){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var n in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var o=Object.getOwnPropertySymbols(t);if(1!==o.length||o[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},49092(t,e,r){"use strict";var n=r(41333);t.exports=function(){return n()&&!!Symbol.toStringTag}},9957(t,e,r){"use strict";var n=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=r(66743);t.exports=i.call(n,o)},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},69600(t){"use strict";var e,r,n=Function.prototype.toString,o="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof o&&"function"==typeof Object.defineProperty)try{e=Object.defineProperty({},"length",{get:function(){throw r}}),r={},o(function(){throw 42},null,e)}catch(t){t!==r&&(o=null)}else o=null;var i=/^\s*class\b/,s=function(t){try{var e=n.call(t);return i.test(e)}catch(t){return!1}},a=function(t){try{return!s(t)&&(n.call(t),!0)}catch(t){return!1}},l=Object.prototype.toString,c="function"==typeof Symbol&&!!Symbol.toStringTag,u=!(0 in[,]),p=function(){return!1};if("object"==typeof document){var h=document.all;l.call(h)===l.call(document.all)&&(p=function(t){if((u||!t)&&(void 0===t||"object"==typeof t))try{var e=l.call(t);return("[object HTMLAllCollection]"===e||"[object HTML document.all class]"===e||"[object HTMLCollection]"===e||"[object Object]"===e)&&null==t("")}catch(t){}return!1})}t.exports=o?function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;try{o(t,null,e)}catch(t){if(t!==r)return!1}return!s(t)&&a(t)}:function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;if(c)return a(t);if(s(t))return!1;var e=l.call(t);return!("[object Function]"!==e&&"[object GeneratorFunction]"!==e&&!/^\[object HTML/.test(e))&&a(t)}},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),l=n("Function.prototype.toString"),c=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(l(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=c();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var l=o("RegExp.prototype.exec"),c={},u=function(){throw c},p={toString:u,valueOf:u};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=u),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{l(t,p)}catch(t){return t===c}}}else{var h=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===h(t)}}t.exports=n},35680(t,e,r){"use strict";var n=r(25767);t.exports=function(t){return!!n(t)}},71514(t){"use strict";t.exports=Math.abs},58968(t){"use strict";t.exports=Math.floor},94459(t){"use strict";t.exports=Number.isNaN||function(t){return t!=t}},6188(t){"use strict";t.exports=Math.max},68002(t){"use strict";t.exports=Math.min},75880(t){"use strict";t.exports=Math.pow},70414(t){"use strict";t.exports=Math.round},73093(t,e,r){"use strict";var n=r(94459);t.exports=function(t){return n(t)||0===t?t:t<0?-1:1}},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!l(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=l(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,l=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=a&&l&&"function"==typeof l.get?l.get:null,u=a&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,h="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,f="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,m=Function.prototype.toString,y=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,A=String.prototype.toLowerCase,x=RegExp.prototype.test,E=Array.prototype.concat,S=Array.prototype.join,_=Array.prototype.slice,O=Math.floor,C="function"==typeof BigInt?BigInt.prototype.valueOf:null,T=Object.getOwnPropertySymbols,N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,j="function"==typeof Symbol&&"object"==typeof Symbol.iterator,P="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,R=Object.prototype.propertyIsEnumerable,k=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||x.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-O(-t):O(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function F(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function B(t){return v.call(String(t),/"/g,""")}function W(t){return!P||!("object"==typeof t&&(P in t||void 0!==t[P]))}function q(t){return"[object Array]"===K(t)&&W(t)}function H(t){return"[object RegExp]"===K(t)&&W(t)}function V(t){if(j)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!N)return!1;try{return N.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var l=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof l&&"symbol"!==l)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return X(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var x=String(e)+"n";return g?I(e,x):x}var O=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=O&&O>0&&"object"==typeof e)return q(e)?"[Array]":"[Object]";var T,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=S.call(Array(t.indent+1)," ")}return{base:r,prev:S.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(Y(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=_.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!H(e)){var G=function(t){if(t.name)return t.name;var e=y.call(m.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),Z=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(Z.length>0?" { "+S.call(Z,", ")+" }":"")}if(V(e)){var nt=j?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):N.call(e);return"object"!=typeof e||j?nt:J(nt)}if((T=e)&&"object"==typeof T&&("undefined"!=typeof HTMLElement&&T instanceof HTMLElement||"string"==typeof T.nodeName&&"function"==typeof T.getAttribute)){for(var ot="<"+A.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(q(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+S.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&W(t)}(e)){var lt=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||R.call(e,"cause")?0===lt.length?"["+String(e)+"]":"{ ["+String(e)+"] "+S.call(lt,", ")+" }":"{ ["+String(e)+"] "+S.call(E.call("[cause]: "+U(e.cause),lt),", ")+" }"}if("object"==typeof e&&l){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:O-n});if("symbol"!==l&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var ct=[];return s&&s.call(e,function(t,r){ct.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),ct,L)}if(function(t){if(!c||!t||"object"!=typeof t)return!1;try{c.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ut=[];return u&&u.call(e,function(t){ut.push(U(t,e))}),tt("Set",c.call(e),ut,L)}if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{h.call(t,h)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return Q("WeakMap");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{h.call(t,h);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return Q("WeakSet");if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{return f.call(t),!0}catch(t){}return!1}(e))return Q("WeakRef");if(function(t){return"[object Number]"===K(t)&&W(t)}(e))return J(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!C)return!1;try{return C.call(t),!0}catch(t){}return!1}(e))return J(U(C.call(e)));if(function(t){return"[object Boolean]"===K(t)&&W(t)}(e))return J(d.call(e));if(function(t){return"[object String]"===K(t)&&W(t)}(e))return J(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&W(t)}(e)&&!H(e)){var pt=rt(e,U),ht=k?k(e)===Object.prototype:e instanceof Object||e.constructor===Object,ft=e instanceof Object?"":"null prototype",dt=!ht&&P&&Object(e)===e&&P in e?b.call(K(e),8,-1):ft?"Object":"",gt=(ht||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||ft?"["+S.call(E.call([],dt||[],ft||[]),": ")+"] ":"");return 0===pt.length?gt+"{}":L?gt+"{"+et(pt,L)+"}":gt+"{ "+S.call(pt,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function Y(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return X(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,F(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,Z),"single",e)}function Z(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function J(t){return"Object("+t+")"}function Q(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):S.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+S.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=q(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},l.normalize=function(t){var e=l.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},l.isAbsolute=function(t){return"/"===t.charAt(0)},l.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=l.resolve(t).substr(1),e=l.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,f=String.fromCharCode;function d(t){throw new RangeError(p[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function m(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(u,".")).split("."),e).join(".")}function y(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=f((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+f(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function A(t,e,r){var n=0;for(t=r?h(t/700):t>>1,t+=h(t/e);t>455;n+=a)t=h(t/35);return h(n+36*t/(t+38))}function x(t){var e,r,n,o,i,l,c,u,p,f,g=[],m=t.length,y=0,w=128,x=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=m&&d("invalid-input"),((u=v(t.charCodeAt(o++)))>=a||u>h((s-y)/l))&&d("overflow"),y+=u*l,!(u<(p=c<=x?1:c>=x+26?26:c-x));c+=a)l>h(s/(f=a-p))&&d("overflow"),l*=f;x=A(y-i,e=g.length+1,0==i),h(y/e)>s-w&&d("overflow"),w+=h(y/e),y%=e,g.splice(y++,0,w)}return b(g)}function E(t){var e,r,n,o,i,l,c,u,p,g,m,b,v,x,E,S=[];for(b=(t=y(t)).length,e=128,r=0,i=72,l=0;l=e&&mh((s-r)/(v=n+1))&&d("overflow"),r+=(c-e)*v,e=c,l=0;ls&&d("overflow"),m==e){for(u=r,p=a;!(u<(g=p<=i?1:p>=i+26?26:p-i));p+=a)E=u-g,x=a-g,S.push(f(w(g+E%x,0))),u=h(E/x);S.push(f(w(u,0))),i=A(r,v,n==o),r=0,++n}++r,++e}return S.join("")}i={version:"1.4.1",ucs2:{decode:y,encode:b},decode:x,encode:E,toASCII:function(t){return m(t,function(t){return c.test(t)?"xn--"+E(t):t})},toUnicode:function(t){return m(t,function(t){return l.test(t)?x(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},l=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},c=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a[a.length]=s}for(var l=0;null!==(i=n.exec(r))&&l0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:l(e,r,i),c=t.length-1;c>=0;--c){var u,p=t[c];if("[]"===p&&r.parseArrays)u=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{u=r.plainObjects?{__proto__:null}:{};var h="["===p.charAt(0)&&"]"===p.charAt(p.length-1)?p.slice(1,-1):p,f=r.decodeDotInKeys?h.replace(/%2E/g,"."):h,d=parseInt(f,10),g=!isNaN(d)&&p!==f&&String(d)===f&&d>=0&&r.parseArrays;if(r.parseArrays||""!==f)if(g&&du)throw new RangeError("Parameter limit exceeded. Only "+u+" parameter"+(1===u?"":"s")+" allowed.");var h,f=-1,d=e.charset;if(e.charsetSentinel)for(h=0;h-1&&(m=i(m)?[m]:m),e.comma&&i(m)&&m.length>e.arrayLimit){if(e.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");m=n.combine([],m,e.arrayLimit,e.plainObjects)}if(null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],m,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=m)}}return r}(t,r):t,p=r.plainObjects?{__proto__:null}:{},h=Object.keys(u),f=0;f0?O.join(",")||null:void 0}];else if(l(m))P=m;else{var k=Object.keys(O);P=y?k.sort(y):k}var I=h?String(r).replace(/\./g,"%2E"):String(r),M=s&&l(O)&&1===O.length?I+"[]":I;if(a&&l(O)&&0===O.length)return M+"[]";for(var L=0;L0?A+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),l=function(t,e){return a.set(t,e),t},c=function(t){return a.has(t)},u=function(t){return a.get(t)},p=function(t,e){a.set(t,e)},h=function(){for(var t=[],e=0;e<256;++e)t[t.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return t}(),f=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?l(f(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(l,l+d):s,u=[],p=0;p=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||i===n.RFC1738&&(40===f||41===f)?u[u.length]=c.charAt(p):f<128?u[u.length]=h[f]:f<2048?u[u.length]=h[192|f>>6]+h[128|63&f]:f<55296||f>=57344?u[u.length]=h[224|f>>12]+h[128|f>>6&63]+h[128|63&f]:(p+=1,f=65536+((1023&f)<<10|1023&c.charCodeAt(p)),u[u.length]=h[240|f>>18]+h[128|f>>12&63]+h[128|f>>6&63]+h[128|63&f])}a+=u.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:c,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},markOverflow:l,maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;nn.arrayLimit)return l(f(e.concat(r),n),o);e[o]=r}else{if(!e||"object"!=typeof e)return[e,r];if(c(e)){var a=u(e)+1;e[a]=r,p(e,a)}else(n&&(n.plainObjects||n.allowPrototypes)||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e){if(c(r)){for(var h=Object.keys(r),d=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},g=0;gn.arrayLimit?l(f(m,n),m.length-1):m}var y=e;return s(e)&&!s(r)&&(y=f(e,n)),s(e)&&s(r)?(r.forEach(function(r,o){if(i.call(e,o)){var s=e[o];s&&"object"==typeof s&&r&&"object"==typeof r?e[o]=t(s,r,n):e[e.length]=r}else e[o]=r}),e):Object.keys(r).reduce(function(e,o){var s=r[o];if(i.call(e,o)?e[o]=t(e[o],s,n):e[o]=s,c(r)&&!c(e)&&l(e,u(r)),c(e)){var a=parseInt(o,10);String(a)===o&&a>=0&&a>u(e)&&p(e,a)}return e},y)}}},73992(t,e){"use strict";var r=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var n,i,s=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((n=t[i])||null!=n&&!isNaN(n)||(n=""),i=o(i),n=o(n),null===i||null===n)continue;s.push(i+"="+n)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,o={};e=r.exec(t);){var i=n(e[1]),s=n(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},92063(t){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},99721(t,e,r){"use strict";var n=r(36556),o=r(14035),i=n("RegExp.prototype.exec"),s=r(69675);t.exports=function(t){if(!o(t))throw new s("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},96897(t,e,r){"use strict";var n=r(70453),o=r(30041),i=r(30592)(),s=r(75795),a=r(69675),l=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new a("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||l(e)!==e)throw new a("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,c=!0;if("length"in t&&s){var u=s(t,"length");u&&!u.configurable&&(n=!1),u&&!u.writable&&(c=!1)}return(n||c||!r)&&(i?o(t,"length",e,!0,!0):o(t,"length",e)),t}},14803(t,e,r){"use strict";var n=r(58859),o=r(69675),i=function(t,e,r){for(var n,o=t;null!=(n=o.next);o=n)if(n.key===e)return o.next=n.next,r||(n.next=t.next,t.next=n),n};t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new o("Side channel does not contain "+n(t))},delete:function(e){var r=t&&t.next,n=function(t,e){if(t)return i(t,e,!0)}(t,e);return n&&r&&r===n&&(t=void 0),!!n},get:function(e){return function(t,e){if(t){var r=i(t,e);return r&&r.value}}(t,e)},has:function(e){return function(t,e){return!!t&&!!i(t,e)}(t,e)},set:function(e,r){t||(t={next:void 0}),function(t,e,r){var n=i(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(t,e,r)}};return e}},80507(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(69675),a=n("%Map%",!0),l=o("Map.prototype.get",!0),c=o("Map.prototype.set",!0),u=o("Map.prototype.has",!0),p=o("Map.prototype.delete",!0),h=o("Map.prototype.size",!0);t.exports=!!a&&function(){var t,e={assert:function(t){if(!e.has(t))throw new s("Side channel does not contain "+i(t))},delete:function(e){if(t){var r=p(t,e);return 0===h(t)&&(t=void 0),r}return!1},get:function(e){if(t)return l(t,e)},has:function(e){return!!t&&u(t,e)},set:function(e,r){t||(t=new a),c(t,e,r)}};return e}},72271(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(80507),a=r(69675),l=n("%WeakMap%",!0),c=o("WeakMap.prototype.get",!0),u=o("WeakMap.prototype.set",!0),p=o("WeakMap.prototype.has",!0),h=o("WeakMap.prototype.delete",!0);t.exports=l?function(){var t,e,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},delete:function(r){if(l&&r&&("object"==typeof r||"function"==typeof r)){if(t)return h(t,r)}else if(s&&e)return e.delete(r);return!1},get:function(r){return l&&r&&("object"==typeof r||"function"==typeof r)&&t?c(t,r):e&&e.get(r)},has:function(r){return l&&r&&("object"==typeof r||"function"==typeof r)&&t?p(t,r):!!e&&e.has(r)},set:function(r,n){l&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new l),u(t,r,n)):s&&(e||(e=s()),e.set(r,n))}};return r}:s},920(t,e,r){"use strict";var n=r(69675),o=r(58859),i=r(14803),s=r(80507),a=r(72271)||s||i;t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new n("Side channel does not contain "+o(t))},delete:function(e){return!!t&&t.delete(e)},get:function(e){return t&&t.get(e)},has:function(e){return!!t&&t.has(e)},set:function(e,r){t||(t=a()),t.set(e,r)}};return e}},11568(t,e,r){var n=r(55537),o=r(6917),i=r(57510),s=r(86866),a=r(88835),l=e;l.request=function(t,e){t="string"==typeof t?a.parse(t):i(t);var r=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||r,s=t.hostname||t.host,l=t.port,c=t.path||"/";s&&-1!==s.indexOf(":")&&(s="["+s+"]"),t.url=(s?o+"//"+s:"")+(l?":"+l:"")+c,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var u=new n(t);return e&&u.on("response",e),u},l.get=function(t,e){var r=l.request(t,e);return r.end(),r},l.ClientRequest=n,l.IncomingMessage=o.IncomingMessage,l.Agent=function(){},l.Agent.defaultMaxSockets=4,l.globalAgent=new l.Agent,l.STATUS_CODES=s,l.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},6688(t,e){var r;function n(){if(void 0!==r)return r;if(globalThis.XMLHttpRequest){r=new globalThis.XMLHttpRequest;try{r.open("GET",globalThis.XDomainRequest?"/":"https://example.com")}catch(t){r=null}}else r=null;return r}function o(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(globalThis.fetch)&&i(globalThis.ReadableStream),e.writableStream=i(globalThis.WritableStream),e.abortController=i(globalThis.AbortController),e.arraybuffer=e.fetch||o("arraybuffer"),e.msstream=!e.fetch&&o("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&o("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),r=null},55537(t,e,r){var n=r(62045).hp,o=r(65606),i=r(6688),s=r(56698),a=r(6917),l=r(63242),c=a.IncomingMessage,u=a.readyStates,p=t.exports=function(t){var e,r=this;l.Writable.call(r),r._opts=t,r._body=[],r._headers={},t.auth&&r.setHeader("Authorization","Basic "+n.from(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){r.setHeader(e,t.headers[e])});var o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!i.abortController)o=!1,e=!0;else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!i.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}r._mode=function(t,e){return i.fetch&&e?"fetch":i.mozchunkedarraybuffer?"moz-chunked-arraybuffer":i.msstream?"ms-stream":i.arraybuffer&&t?"arraybuffer":"text"}(e,o),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",function(){r._onFinish()})};s(p,l.Writable),p.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===h.indexOf(r)&&(this._headers[r]={name:t,value:e})},p.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},p.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},p.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts;"timeout"in e&&0!==e.timeout&&t.setTimeout(e.timeout);var r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=new Blob(t._body,{type:(r["content-type"]||{}).value||""}));var s=[];if(Object.keys(r).forEach(function(t){var e=r[t].name,n=r[t].value;Array.isArray(n)?n.forEach(function(t){s.push([e,t])}):s.push([e,n])}),"fetch"===t._mode){var a=null;if(i.abortController){var l=new AbortController;a=l.signal,t._fetchAbortController=l,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=globalThis.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}globalThis.fetch(t._opts.url,{method:t._opts.method,headers:s,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:a}).then(function(e){t._fetchResponse=e,t._resetTimers(!1),t._connect()},function(e){t._resetTimers(!0),t._destroyed||t.emit("error",e)})}else{var c=t._xhr=new globalThis.XMLHttpRequest;try{c.open(t._opts.method,t._opts.url,!0)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}"responseType"in c&&(c.responseType=t._mode),"withCredentials"in c&&(c.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in c&&c.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(c.timeout=e.requestTimeout,c.ontimeout=function(){t.emit("requestTimeout")}),s.forEach(function(t){c.setRequestHeader(t[0],t[1])}),t._response=null,c.onreadystatechange=function(){switch(c.readyState){case u.LOADING:case u.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(c.onprogress=function(){t._onXHRProgress()}),c.onerror=function(){t._destroyed||(t._resetTimers(!0),t.emit("error",new Error("XHR error")))};try{c.send(n)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}}}},p.prototype._onXHRProgress=function(){var t=this;t._resetTimers(!1),function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress(t._resetTimers.bind(t)))},p.prototype._connect=function(){var t=this;t._destroyed||(t._response=new c(t._xhr,t._fetchResponse,t._mode,t._resetTimers.bind(t)),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},p.prototype._write=function(t,e,r){this._body.push(t),r()},p.prototype._resetTimers=function(t){var e=this;globalThis.clearTimeout(e._socketTimer),e._socketTimer=null,t?(globalThis.clearTimeout(e._fetchTimer),e._fetchTimer=null):e._socketTimeout&&(e._socketTimer=globalThis.setTimeout(function(){e.emit("timeout")},e._socketTimeout))},p.prototype.abort=p.prototype.destroy=function(t){var e=this;e._destroyed=!0,e._resetTimers(!0),e._response&&(e._response._destroyed=!0),e._xhr?e._xhr.abort():e._fetchAbortController&&e._fetchAbortController.abort(),t&&e.emit("error",t)},p.prototype.end=function(t,e,r){"function"==typeof t&&(r=t,t=void 0),l.Writable.prototype.end.call(this,t,e,r)},p.prototype.setTimeout=function(t,e){var r=this;e&&r.once("timeout",e),r._socketTimeout=t,r._resetTimers(!1)},p.prototype.flushHeaders=function(){},p.prototype.setNoDelay=function(){},p.prototype.setSocketKeepAlive=function(){};var h=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},6917(t,e,r){var n=r(65606),o=r(62045).hp,i=r(6688),s=r(56698),a=r(63242),l=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},c=e.IncomingMessage=function(t,e,r,s){var l=this;if(a.Readable.call(l),l._mode=r,l.headers={},l.rawHeaders=[],l.trailers={},l.rawTrailers=[],l.on("end",function(){n.nextTick(function(){l.emit("close")})}),"fetch"===r){if(l._fetchResponse=e,l.url=e.url,l.statusCode=e.status,l.statusMessage=e.statusText,e.headers.forEach(function(t,e){l.headers[e.toLowerCase()]=t,l.rawHeaders.push(e,t)}),i.writableStream){var c=new WritableStream({write:function(t){return s(!1),new Promise(function(e,r){l._destroyed?r():l.push(o.from(t))?e():l._resumeFetch=e})},close:function(){s(!0),l._destroyed||l.push(null)},abort:function(t){s(!0),l._destroyed||l.emit("error",t)}});try{return void e.body.pipeTo(c).catch(function(t){s(!0),l._destroyed||l.emit("error",t)})}catch(t){}}var u=e.body.getReader();!function t(){u.read().then(function(e){l._destroyed||(s(e.done),e.done?l.push(null):(l.push(o.from(e.value)),t()))}).catch(function(t){s(!0),l._destroyed||l.emit("error",t)})}()}else if(l._xhr=t,l._pos=0,l.url=t.responseURL,l.statusCode=t.status,l.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var r=e[1].toLowerCase();"set-cookie"===r?(void 0===l.headers[r]&&(l.headers[r]=[]),l.headers[r].push(e[2])):void 0!==l.headers[r]?l.headers[r]+=", "+e[2]:l.headers[r]=e[2],l.rawHeaders.push(e[1],e[2])}}),l._charset="x-user-defined",!i.overrideMimeType){var p=l.rawHeaders["mime-type"];if(p){var h=p.match(/;\s*charset=([^;])(;|$)/);h&&(l._charset=h[1].toLowerCase())}l._charset||(l._charset="utf-8")}};s(c,a.Readable),c.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},c.prototype._onXHRProgress=function(t){var e=this,r=e._xhr,n=null;switch(e._mode){case"text":if((n=r.responseText).length>e._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(c.result.slice(e._pos)))),e._pos=c.result.byteLength)},c.onload=function(){t(!0),e.push(null)},c.readAsArrayBuffer(n)}e._xhr.readyState===l.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,l;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var c=("number"!=typeof l&&(l=0),l+1>(a=t).length||-1===a.indexOf(".",l)?"argument":"property");s='The "'.concat(t,'" ').concat(c," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=u;var i=r(52341),s=r(9573);r(56698)(u,i);for(var a=o(s.prototype),l=0;l0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===l.prototype||(e=function(t){return l.from(t)}(e)),n)a.endEmitted?x(t,new A):C(t,a,e,!0);else if(a.ended)x(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?C(t,a,e,!1):R(t,a)):C(t,a,e,!1)}else n||(a.reading=!1,R(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=T?t=T:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function j(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(P,t))}function P(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function R(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(k,t,e))}function k(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(F,e,t))}function F(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function B(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):j(this),null;if(0===(t=N(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},_.prototype._read=function(t){x(this,new w("_read()"))},_.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:l;function l(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",f),t.removeListener("finish",d),t.removeListener("drain",c),t.removeListener("error",h),t.removeListener("unpipe",e),r.removeListener("end",l),r.removeListener("end",g),r.removeListener("data",p),u=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||c())});var c=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",c);var u=!1;function p(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==B(n.pipes,t))&&!u&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function h(e){i("onerror",e),g(),t.removeListener("error",h),0===s(t,"error")&&x(t,e)}function f(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",f),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",p),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",h),t.once("close",f),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},_.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?j(this):n.reading||o.nextTick(M,this))),r},_.prototype.addListener=_.prototype.on,_.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},_.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},_.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},_.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},_.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new A(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(_.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(_.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),_.prototype._write=function(t,e,r){r(new g("_write()"))},_.prototype._writev=null,_.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,P(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(_.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(_.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),_.prototype.destroy=p.destroy,_.prototype._undestroy=p.undestroy,_.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),l=Symbol("lastReject"),c=Symbol("error"),u=Symbol("ended"),p=Symbol("lastPromise"),h=Symbol("handlePromise"),f=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[f].read();null!==r&&(t[p]=null,t[a]=null,t[l]=null,e(d(r,!1)))}}function m(t){o.nextTick(g,t)}var y=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[f]},next:function(){var t=this,e=this[c];if(null!==e)return Promise.reject(e);if(this[u])return Promise.resolve(d(void 0,!0));if(this[f].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[c]?r(t[c]):e(d(void 0,!0))})});var r,n=this[p];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[u]?r(d(void 0,!0)):e[h](r,n)},n)}}(n,this));else{var i=this[f].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[h])}return this[p]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[f].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),y);t.exports=function(t){var e,r=Object.create(b,(i(e={},f,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:null,writable:!0}),i(e,u,{value:t._readableState.endEmitted,writable:!0}),i(e,h,{value:function(t,e){var n=r[f].read();n?(r[p]=null,r[a]=null,r[l]=null,t(d(n,!1))):(r[a]=t,r[l]=e)},writable:!0}),e));return r[p]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[l];return null!==e&&(r[p]=null,r[a]=null,r[l]=null,e(t)),void(r[c]=t)}var n=r[a];null!==n&&(r[p]=null,r[a]=null,r[l]=null,n(d(void 0,!0))),r[u]=!0}),t.on("readable",m.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return l.alloc(0);for(var e=l.allocUnsafe(t>>>0),r=this.head,n=0;r;)p(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=l.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:u,value:function(t,e){return c(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,l=this._writableState&&this._writableState.destroyed;return a||l?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){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)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){u||(u=t),t&&h.forEach(l),i||(h.forEach(l),p(u))})});return e.reduce(c)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,l=/:\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,u=/^[a-zA-Z]:/;function p(t){return(t||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new y(unescape(t.pathname),{});else if("string"===o)for(e in n=new y(t,{}),f)delete n[e];else if("object"===o){for(e in t)e in f||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function m(t,e){t=(t=p(t)).replace(s,""),e=e||{};var r,n=c.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],l=0;return i?a?(r=n[2]+n[3]+n[4],l=n[2].length+n[3].length):(r=n[2]+n[4],l=n[2].length):a?(r=n[3]+n[4],l=n[3].length):r=n[4],"file:"===o?l>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):l>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:l,rest:r}}function y(t,e,r){if(t=(t=p(t)).replace(s,""),!(this instanceof y))return new y(t,e,r);var i,a,l,c,f,b,v=h.slice(),w=typeof e,A=this,x=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=m(t||"",e=d(e))).protocol&&!a.slashes,A.slashes=a.slashes||i&&e.slashes,A.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||u.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(A.protocol)))&&(v[3]=[/(.*)/,"pathname"]);x",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(l),u=["%","/","?",";","#"].concat(c),p=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,f=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?R+="x":R+=P[k];if(!R.match(h)){var M=N.slice(0,O),L=N.slice(O+1),D=P.match(f);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),T||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,T&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[A])for(O=0,j=c.length;O0)&&r.host.split("@"))&&(r.auth=T.shift(),r.hostname=T.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!x.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var S=x.slice(-1)[0],_=(r.host||t.host||x.length>1)&&("."===S||".."===S)||""===S,O=0,C=x.length;C>=0;C--)"."===(S=x[C])?x.splice(C,1):".."===S?(x.splice(C,1),O++):O&&(x.splice(C,1),O--);if(!w&&!A)for(;O--;O)x.unshift("..");!w||""===x[0]||x[0]&&"/"===x[0].charAt(0)||x.unshift(""),_&&"/"!==x.join("/").substr(-1)&&x.push("");var T,N=""===x[0]||x[0]&&"/"===x[0].charAt(0);return E&&(r.hostname=N?"":x.length?x.shift():"",r.host=r.hostname,(T=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=T.shift(),r.hostname=T.shift(),r.host=r.hostname)),(w=w||r.host&&x.length)&&!N&&x.unshift(""),x.length>0?r.pathname=x.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var l="undefined"!=typeof BigInt,c="undefined"!=typeof Symbol,u=a(Object.prototype.toString),p=a(Number.prototype.valueOf),h=a(String.prototype.valueOf),f=a(Boolean.prototype.valueOf);if(l)var d=a(BigInt.prototype.valueOf);if(c)var g=a(Symbol.prototype.valueOf);function m(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function y(t){return"[object Map]"===u(t)}function b(t){return"[object Set]"===u(t)}function v(t){return"[object WeakMap]"===u(t)}function w(t){return"[object WeakSet]"===u(t)}function A(t){return"[object ArrayBuffer]"===u(t)}function x(t){return"undefined"!=typeof ArrayBuffer&&(A.working?A(t):t instanceof ArrayBuffer)}function E(t){return"[object DataView]"===u(t)}function S(t){return"undefined"!=typeof DataView&&(E.working?E(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||S(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},y.working="undefined"!=typeof Map&&y(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(y.working?y(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},A.working="undefined"!=typeof ArrayBuffer&&A(new ArrayBuffer),e.isArrayBuffer=x,E.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&E(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=S;var _="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function O(t){return"[object SharedArrayBuffer]"===u(t)}function C(t){return void 0!==_&&(void 0===O.working&&(O.working=O(new _)),O.working?O(t):t instanceof _)}function T(t){return m(t,p)}function N(t){return m(t,h)}function j(t){return m(t,f)}function P(t){return l&&m(t,d)}function R(t){return c&&m(t,g)}e.isSharedArrayBuffer=C,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===u(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===u(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===u(t)},e.isGeneratorObject=function(t){return"[object Generator]"===u(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===u(t)},e.isNumberObject=T,e.isStringObject=N,e.isBooleanObject=j,e.isBigIntObject=P,e.isSymbolObject=R,e.isBoxedPrimitive=function(t){return T(t)||N(t)||j(t)||P(t)||R(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(x(t)||C(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),h(n,t,n.depth)}function u(t,e){var r=c.styles[e];return r?"["+c.colors[r][0]+"m"+t+"["+c.colors[r][1]+"m":t}function p(t,e){return t}function h(t,r,n){if(t.customInspect&&r&&_(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=h(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),S(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return f(r);if(0===s.length){if(_(r)){var l=r.name?": "+r.name:"";return t.stylize("[Function"+l+"]","special")}if(A(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(E(r))return t.stylize(Date.prototype.toString.call(r),"date");if(S(r))return f(r)}var c,u="",p=!1,x=["{","}"];return g(r)&&(p=!0,x=["[","]"]),_(r)&&(u=" [Function"+(r.name?": "+r.name:"")+"]"),A(r)&&(u=" "+RegExp.prototype.toString.call(r)),E(r)&&(u=" "+Date.prototype.toUTCString.call(r)),S(r)&&(u=" "+f(r)),0!==s.length||p&&0!=r.length?n<0?A(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),c=p?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(c,u,x)):x[0]+u+x[1]}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,l;if((l=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=l.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):l.set&&(a=t.stylize("[Setter]","special")),N(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(l.value)<0?(a=y(r)?h(t,l.value,null):h(t,l.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return" "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return" "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function m(t){return"boolean"==typeof t}function y(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function A(t){return x(t)&&"[object RegExp]"===O(t)}function x(t){return"object"==typeof t&&null!==t}function E(t){return x(t)&&"[object Date]"===O(t)}function S(t){return x(t)&&("[object Error]"===O(t)||t instanceof Error)}function _(t){return"function"==typeof t}function O(t){return Object.prototype.toString.call(t)}function C(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=c,c.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=m,e.isNull=y,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=A,e.types.isRegExp=A,e.isObject=x,e.isDate=E,e.types.isDate=E,e.isError=S,e.types.isNativeError=S,e.isFunction=_,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function N(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[C((t=new Date).getHours()),C(t.getMinutes()),C(t.getSeconds())].join(":"),[t.getDate(),T[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!x(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var j="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function P(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(j&&t[j]){var e;if("function"!=typeof(e=t[j]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,j,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;i-1?e:"Object"===e&&function(t){var e=!1;return n(g,function(r,n){if(!e)try{r(t),e=f(n,1)}catch(t){}}),e}(t)}return a?function(t){var e=!1;return n(g,function(r,n){if(!e)try{"$"+r(t)===n&&(e=f(n,1))}catch(t){}}),e}(t):null}},57510(t){t.exports=function(){for(var t={},r=0;r{if(!r){var i=1/0;for(u=0;u=o)&&Object.keys(s.O).every(t=>s.O[t](r[l]))?r.splice(l--,1):(a=!1,o0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[r,n,o]},s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce((e,r)=>(s.f[r](t,e),e),[])),s.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"428c2ff62c4b8b3c97fc",4508:"bd9a6bf4d650882814a8",5448:"71cfe268d6f1213c4735",5528:"fa22a350943490669cfb",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8815:"9a5c507c75429c9c04e4"}[t],s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r={},n="nextcloud-ui-legacy:",s.l=(t,e,o,i)=>{if(r[t])r[t].push(e);else{var a,l;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u{a.onerror=a.onload=null,clearTimeout(f);var o=r[t];if(delete r[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),e)return e(n)},f=setTimeout(h.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=h.bind(null,a.onerror),a.onload=h.bind(null,a.onload),l&&document.head.appendChild(a)}},s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),s.j=7062,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{s.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={7062:0};s.f.j=(e,r)=>{var n=s.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var i=s.p+s.u(e),a=new Error;s.l(i,r=>{if(s.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),i=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+i+")",a.name="ChunkLoadError",a.type=o,a.request=i,n[1](a)}},"chunk-"+e,e)}},s.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[i,a,l]=r,c=0;if(i.some(e=>0!==t[e])){for(n in a)s.o(a,n)&&(s.m[n]=a[n]);if(l)var u=l(s)}for(e&&e(r);cs(15256));a=s.O(a)})(); +//# sourceMappingURL=comments-comments-app.js.map?v=22e3bd42cb6cda3042da \ No newline at end of file diff --git a/dist/comments-comments-app.js.license b/dist/comments-comments-app.js.license index de6795933ef65..f15984cc05d57 100644 --- a/dist/comments-comments-app.js.license +++ b/dist/comments-comments-app.js.license @@ -233,7 +233,7 @@ This file is generated from multiple sources. Included packages: - version: 1.1.4 - license: MIT - fast-xml-parser - - version: 5.5.6 + - version: 5.5.7 - license: MIT - floating-vue - version: 1.0.0-beta.19 @@ -389,7 +389,7 @@ This file is generated from multiple sources. Included packages: - version: 3.2.0 - license: MIT - strnum - - version: 2.1.2 + - version: 2.2.1 - license: MIT - style-loader - version: 4.0.0 diff --git a/dist/comments-comments-app.js.map b/dist/comments-comments-app.js.map index 88217e6a088cf..a33286d73b9e7 100644 --- a/dist/comments-comments-app.js.map +++ b/dist/comments-comments-app.js.map @@ -1 +1 @@ -{"version":3,"file":"comments-comments-app.js?v=8867f3b65f45ff869632","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?87e1","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Matcher.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Expression.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/fxb.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/apps/comments/src/utils/decodeHtmlEntities.js","webpack:///nextcloud/apps/comments/src/store/deletedCommentLimbo.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7275","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack://nextcloud/./apps/comments/src/components/Comment.vue?d1f7","webpack:///nextcloud/apps/comments/src/mixins/CommentView.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/services/ReadComments.ts","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/comments/src/views/Comments.vue?4d55","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack://nextcloud/./apps/comments/src/views/Comments.vue?0e41","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/actualApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/applyBind.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionCall.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/reflectApply.js","webpack:///nextcloud/node_modules/call-bind/index.js","webpack:///nextcloud/node_modules/call-bound/index.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/define-data-property/index.js","webpack:///nextcloud/node_modules/dunder-proto/get.js","webpack:///nextcloud/node_modules/es-define-property/index.js","webpack:///nextcloud/node_modules/es-errors/eval.js","webpack:///nextcloud/node_modules/es-errors/index.js","webpack:///nextcloud/node_modules/es-errors/range.js","webpack:///nextcloud/node_modules/es-errors/ref.js","webpack:///nextcloud/node_modules/es-errors/syntax.js","webpack:///nextcloud/node_modules/es-errors/type.js","webpack:///nextcloud/node_modules/es-errors/uri.js","webpack:///nextcloud/node_modules/es-object-atoms/index.js","webpack:///nextcloud/node_modules/for-each/index.js","webpack:///nextcloud/node_modules/function-bind/implementation.js","webpack:///nextcloud/node_modules/function-bind/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/get-intrinsic/index.js","webpack:///nextcloud/node_modules/get-proto/Object.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/Reflect.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/index.js","webpack:///nextcloud/node_modules/gopd/gOPD.js","webpack:///nextcloud/node_modules/gopd/index.js","webpack:///nextcloud/node_modules/has-property-descriptors/index.js","webpack:///nextcloud/node_modules/has-symbols/index.js","webpack:///nextcloud/node_modules/has-symbols/shams.js","webpack:///nextcloud/node_modules/has-tostringtag/shams.js","webpack:///nextcloud/node_modules/hasown/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-callable/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/is-typed-array/index.js","webpack:///nextcloud/node_modules/math-intrinsics/abs.js","webpack:///nextcloud/node_modules/math-intrinsics/floor.js","webpack:///nextcloud/node_modules/math-intrinsics/isNaN.js","webpack:///nextcloud/node_modules/math-intrinsics/max.js","webpack:///nextcloud/node_modules/math-intrinsics/min.js","webpack:///nextcloud/node_modules/math-intrinsics/pow.js","webpack:///nextcloud/node_modules/math-intrinsics/round.js","webpack:///nextcloud/node_modules/math-intrinsics/sign.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/possible-typed-array-names/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/set-function-length/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/which-typed-array/index.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/available-typed-arrays/index.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92\"\nimport script from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\nexport * from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon message-reply-text-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function assertError(err) {\n if (!isError(err)) {\n throw new Error(\"Parameter was not an error\");\n }\n}\nexport function isError(err) {\n return ((!!err &&\n typeof err === \"object\" &&\n objectToString(err) === \"[object Error]\") ||\n err instanceof Error);\n}\nfunction objectToString(obj) {\n return Object.prototype.toString.call(obj);\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n constructor(errorOptionsOrMessage, messageText) {\n const args = [...arguments];\n const { options, shortMessage } = parseArguments(args);\n let message = shortMessage;\n if (options.cause) {\n message = `${message}: ${options.cause.message}`;\n }\n super(message);\n this.message = message;\n if (options.name && typeof options.name === \"string\") {\n this.name = options.name;\n }\n else {\n this.name = getGlobalName();\n }\n if (options.cause) {\n Object.defineProperty(this, \"_cause\", { value: options.cause });\n }\n Object.defineProperty(this, \"_info\", { value: {} });\n if (options.info && typeof options.info === \"object\") {\n Object.assign(this._info, options.info);\n }\n if (Error.captureStackTrace) {\n const ctor = options.constructorOpt || this.constructor;\n Error.captureStackTrace(this, ctor);\n }\n }\n static cause(err) {\n assertError(err);\n if (!err._cause)\n return null;\n return isError(err._cause)\n ? err._cause\n : null;\n }\n static fullStack(err) {\n assertError(err);\n const cause = Layerr.cause(err);\n if (cause) {\n return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n }\n return err.stack ?? \"\";\n }\n static info(err) {\n assertError(err);\n const output = {};\n const cause = Layerr.cause(err);\n if (cause) {\n Object.assign(output, Layerr.info(cause));\n }\n if (err._info) {\n Object.assign(output, err._info);\n }\n return output;\n }\n toString() {\n let output = this.name ||\n this.constructor.name ||\n this.constructor.prototype.name;\n if (this.message) {\n output = `${output}: ${this.message}`;\n }\n return output;\n }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n let options, shortMessage = \"\";\n if (args.length === 0) {\n options = {};\n }\n else if (isError(args[0])) {\n options = {\n cause: args[0],\n };\n shortMessage = args.slice(1).join(\" \") || \"\";\n }\n else if (args[0] && typeof args[0] === \"object\") {\n options = Object.assign({}, args[0]);\n shortMessage = args.slice(1).join(\" \") || \"\";\n }\n else if (typeof args[0] === \"string\") {\n options = {};\n shortMessage = shortMessage = args.join(\" \") || \"\";\n }\n else {\n throw new Error(\"Invalid arguments passed to Layerr\");\n }\n return {\n options,\n shortMessage,\n };\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n return __name;\n}\nexport function setGlobalName(name = null) {\n __name = name ?? NAME;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n try {\n const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n const formatted = encodeURIComponent(replaced);\n return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n }\n catch (err) {\n throw new Layerr(err, \"Failed encoding path\");\n }\n}\nexport function getAllDirectories(directory) {\n if (!directory || directory === \"/\")\n return [];\n let currentPath = directory;\n const output = [];\n do {\n output.push(currentPath);\n currentPath = path.dirname(currentPath);\n } while (currentPath && currentPath !== \"/\");\n return output;\n}\nexport function makePathAbsolute(pathStr) {\n return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n let normalisedPath = pathStr;\n if (normalisedPath[0] !== \"/\") {\n normalisedPath = \"/\" + normalisedPath;\n }\n if (/^.+\\/$/.test(normalisedPath)) {\n normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n }\n return normalisedPath;\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n const url = new URL(fullURL);\n let urlPath = url.pathname;\n if (urlPath.length <= 0) {\n urlPath = \"/\";\n }\n return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n if (partIndex === 0 ||\n nextPart !== \"/\" ||\n (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n output.push(nextPart);\n }\n return output;\n }, []));\n}\nexport function normaliseHREF(href) {\n try {\n const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n return normalisedHref;\n }\n catch (err) {\n throw new Layerr(err, \"Failed normalising HREF\");\n }\n}\n","function normalize (strArray) {\n var resultArray = [];\n if (strArray.length === 0) { return ''; }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n var first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (var i = 0; i < strArray.length; i++) {\n var component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') { continue; }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n\n }\n\n var str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n var parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n return str;\n}\n\nexport default function urlJoin() {\n var input;\n\n if (typeof arguments[0] === 'object') {\n input = arguments[0];\n } else {\n input = [].slice.call(arguments);\n }\n\n return normalize(input);\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n const url = options.url.replace(\"//\", \"\");\n const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n const method = options.method ? options.method.toUpperCase() : \"GET\";\n const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n const ncString = `00000000${digest.nc}`.slice(-8);\n const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n const ha2 = md5(`${method}:${uri}`);\n const digestResponse = qop\n ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n : md5(`${ha1}:${digest.nonce}:${ha2}`);\n const authValues = {\n username: digest.username,\n realm: digest.realm,\n nonce: digest.nonce,\n uri,\n qop,\n response: digestResponse,\n nc: ncString,\n cnonce: digest.cnonce,\n algorithm: digest.algorithm,\n opaque: digest.opaque\n };\n const authHeader = [];\n for (const k in authValues) {\n if (authValues[k]) {\n if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n authHeader.push(`${k}=${authValues[k]}`);\n }\n else {\n authHeader.push(`${k}=\"${authValues[k]}\"`);\n }\n }\n }\n return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n let uid = \"\";\n for (let i = 0; i < NONCE_SIZE; ++i) {\n uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n }\n return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n const isDigest = responseIndicatesDigestAuth(response);\n if (!isDigest) {\n return false;\n }\n const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n for (;;) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n const match = re.exec(authHeader);\n if (!match) {\n break;\n }\n _digest[match[1]] = match[2] || match[3];\n }\n _digest.nc += 1;\n _digest.cnonce = makeNonce();\n return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n }\n return ha1Hash;\n}\n","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n /** Entities in text nodes that can end with any character. */\n DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n /** Only allow entities terminated with a semicolon. */\n DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n /** Entities in attributes have limitations on ending characters. */\n DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n constructor(\n /** The tree used to decode entities. */\n decodeTree, \n /**\n * The function that is called when a codepoint is decoded.\n *\n * For multi-byte named entities, this will be called multiple times,\n * with the second codepoint, and the same `consumed` value.\n *\n * @param codepoint The decoded codepoint.\n * @param consumed The number of bytes consumed by the decoder.\n */\n emitCodePoint, \n /** An object that is used to produce errors. */\n errors) {\n this.decodeTree = decodeTree;\n this.emitCodePoint = emitCodePoint;\n this.errors = errors;\n /** The current state of the decoder. */\n this.state = EntityDecoderState.EntityStart;\n /** Characters that were consumed while parsing an entity. */\n this.consumed = 1;\n /**\n * The result of the entity.\n *\n * Either the result index of a numeric entity, or the codepoint of a\n * numeric entity.\n */\n this.result = 0;\n /** The current index in the decode tree. */\n this.treeIndex = 0;\n /** The number of characters that were consumed in excess. */\n this.excess = 1;\n /** The mode in which the decoder is operating. */\n this.decodeMode = DecodingMode.Strict;\n }\n /** Resets the instance to make it reusable. */\n startEntity(decodeMode) {\n this.decodeMode = decodeMode;\n this.state = EntityDecoderState.EntityStart;\n this.result = 0;\n this.treeIndex = 0;\n this.excess = 1;\n this.consumed = 1;\n }\n /**\n * Write an entity to the decoder. This can be called multiple times with partial entities.\n * If the entity is incomplete, the decoder will return -1.\n *\n * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n * entity is incomplete, and resume when the next string is written.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n write(input, offset) {\n switch (this.state) {\n case EntityDecoderState.EntityStart: {\n if (input.charCodeAt(offset) === CharCodes.NUM) {\n this.state = EntityDecoderState.NumericStart;\n this.consumed += 1;\n return this.stateNumericStart(input, offset + 1);\n }\n this.state = EntityDecoderState.NamedEntity;\n return this.stateNamedEntity(input, offset);\n }\n case EntityDecoderState.NumericStart: {\n return this.stateNumericStart(input, offset);\n }\n case EntityDecoderState.NumericDecimal: {\n return this.stateNumericDecimal(input, offset);\n }\n case EntityDecoderState.NumericHex: {\n return this.stateNumericHex(input, offset);\n }\n case EntityDecoderState.NamedEntity: {\n return this.stateNamedEntity(input, offset);\n }\n }\n }\n /**\n * Switches between the numeric decimal and hexadecimal states.\n *\n * Equivalent to the `Numeric character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericStart(input, offset) {\n if (offset >= input.length) {\n return -1;\n }\n if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n this.state = EntityDecoderState.NumericHex;\n this.consumed += 1;\n return this.stateNumericHex(input, offset + 1);\n }\n this.state = EntityDecoderState.NumericDecimal;\n return this.stateNumericDecimal(input, offset);\n }\n addToNumericResult(input, start, end, base) {\n if (start !== end) {\n const digitCount = end - start;\n this.result =\n this.result * Math.pow(base, digitCount) +\n Number.parseInt(input.substr(start, digitCount), base);\n this.consumed += digitCount;\n }\n }\n /**\n * Parses a hexadecimal numeric entity.\n *\n * Equivalent to the `Hexademical character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericHex(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char) || isHexadecimalCharacter(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 16);\n return this.emitNumericEntity(char, 3);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 16);\n return -1;\n }\n /**\n * Parses a decimal numeric entity.\n *\n * Equivalent to the `Decimal character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNumericDecimal(input, offset) {\n const startIndex = offset;\n while (offset < input.length) {\n const char = input.charCodeAt(offset);\n if (isNumber(char)) {\n offset += 1;\n }\n else {\n this.addToNumericResult(input, startIndex, offset, 10);\n return this.emitNumericEntity(char, 2);\n }\n }\n this.addToNumericResult(input, startIndex, offset, 10);\n return -1;\n }\n /**\n * Validate and emit a numeric entity.\n *\n * Implements the logic from the `Hexademical character reference start\n * state` and `Numeric character reference end state` in the HTML spec.\n *\n * @param lastCp The last code point of the entity. Used to see if the\n * entity was terminated with a semicolon.\n * @param expectedLength The minimum number of characters that should be\n * consumed. Used to validate that at least one digit\n * was consumed.\n * @returns The number of characters that were consumed.\n */\n emitNumericEntity(lastCp, expectedLength) {\n var _a;\n // Ensure we consumed at least one digit.\n if (this.consumed <= expectedLength) {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n // Figure out if this is a legit end of the entity\n if (lastCp === CharCodes.SEMI) {\n this.consumed += 1;\n }\n else if (this.decodeMode === DecodingMode.Strict) {\n return 0;\n }\n this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n if (this.errors) {\n if (lastCp !== CharCodes.SEMI) {\n this.errors.missingSemicolonAfterCharacterReference();\n }\n this.errors.validateNumericCharacterReference(this.result);\n }\n return this.consumed;\n }\n /**\n * Parses a named entity.\n *\n * Equivalent to the `Named character reference state` in the HTML spec.\n *\n * @param input The string containing the entity (or a continuation of the entity).\n * @param offset The current offset.\n * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n */\n stateNamedEntity(input, offset) {\n const { decodeTree } = this;\n let current = decodeTree[this.treeIndex];\n // The mask is the number of bytes of the value, including the current byte.\n let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n for (; offset < input.length; offset++, this.excess++) {\n const char = input.charCodeAt(offset);\n this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n if (this.treeIndex < 0) {\n return this.result === 0 ||\n // If we are parsing an attribute\n (this.decodeMode === DecodingMode.Attribute &&\n // We shouldn't have consumed any characters after the entity,\n (valueLength === 0 ||\n // And there should be no invalid characters.\n isEntityInAttributeInvalidEnd(char)))\n ? 0\n : this.emitNotTerminatedNamedEntity();\n }\n current = decodeTree[this.treeIndex];\n valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n // If the branch is a value, store it and continue\n if (valueLength !== 0) {\n // If the entity is terminated by a semicolon, we are done.\n if (char === CharCodes.SEMI) {\n return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n }\n // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n if (this.decodeMode !== DecodingMode.Strict) {\n this.result = this.treeIndex;\n this.consumed += this.excess;\n this.excess = 0;\n }\n }\n }\n return -1;\n }\n /**\n * Emit a named entity that was not terminated with a semicolon.\n *\n * @returns The number of characters consumed.\n */\n emitNotTerminatedNamedEntity() {\n var _a;\n const { result, decodeTree } = this;\n const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n this.emitNamedEntityData(result, valueLength, this.consumed);\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n return this.consumed;\n }\n /**\n * Emit a named entity.\n *\n * @param result The index of the entity in the decode tree.\n * @param valueLength The number of bytes in the entity.\n * @param consumed The number of characters consumed.\n *\n * @returns The number of characters consumed.\n */\n emitNamedEntityData(result, valueLength, consumed) {\n const { decodeTree } = this;\n this.emitCodePoint(valueLength === 1\n ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n : decodeTree[result + 1], consumed);\n if (valueLength === 3) {\n // For multi-byte values, we need to emit the second byte.\n this.emitCodePoint(decodeTree[result + 2], consumed);\n }\n return consumed;\n }\n /**\n * Signal to the parser that the end of the input was reached.\n *\n * Remaining data will be emitted and relevant errors will be produced.\n *\n * @returns The number of characters consumed.\n */\n end() {\n var _a;\n switch (this.state) {\n case EntityDecoderState.NamedEntity: {\n // Emit a named entity if we have one.\n return this.result !== 0 &&\n (this.decodeMode !== DecodingMode.Attribute ||\n this.result === this.treeIndex)\n ? this.emitNotTerminatedNamedEntity()\n : 0;\n }\n // Otherwise, emit a numeric entity if we have one.\n case EntityDecoderState.NumericDecimal: {\n return this.emitNumericEntity(0, 2);\n }\n case EntityDecoderState.NumericHex: {\n return this.emitNumericEntity(0, 3);\n }\n case EntityDecoderState.NumericStart: {\n (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n return 0;\n }\n case EntityDecoderState.EntityStart: {\n // Return 0 if we have no entity.\n return 0;\n }\n }\n }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n let returnValue = \"\";\n const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n return function decodeWithTrie(input, decodeMode) {\n let lastIndex = 0;\n let offset = 0;\n while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n returnValue += input.slice(lastIndex, offset);\n decoder.startEntity(decodeMode);\n const length = decoder.write(input, \n // Skip the \"&\"\n offset + 1);\n if (length < 0) {\n lastIndex = offset + decoder.end();\n break;\n }\n lastIndex = offset + length;\n // If `length` is 0, skip the current `&` and continue.\n offset = length === 0 ? lastIndex + 1 : lastIndex;\n }\n const result = returnValue + input.slice(lastIndex);\n // Make sure we don't keep a reference to the final string.\n returnValue = \"\";\n return result;\n };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n // Case 1: Single branch encoded in jump offset\n if (branchCount === 0) {\n return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n }\n // Case 2: Multiple branches encoded in jump table\n if (jumpOffset) {\n const value = char - jumpOffset;\n return value < 0 || value >= branchCount\n ? -1\n : decodeTree[nodeIndex + value] - 1;\n }\n // Case 3: Multiple branches encoded in dictionary\n // Binary search for the character.\n let lo = nodeIndex;\n let hi = lo + branchCount - 1;\n while (lo <= hi) {\n const mid = (lo + hi) >>> 1;\n const midValue = decodeTree[mid];\n if (midValue < char) {\n lo = mid + 1;\n }\n else if (midValue > char) {\n hi = mid - 1;\n }\n else {\n return decodeTree[mid + branchCount];\n }\n }\n return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n /** Support only XML entities. */\n EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n /** Support HTML entities, which are a superset of XML entities. */\n EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n /**\n * The output is UTF-8 encoded. Only characters that need escaping within\n * XML will be escaped.\n */\n EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n /**\n * The output consists only of ASCII characters. Characters that need\n * escaping within HTML, and characters that aren't ASCII characters will\n * be escaped.\n */\n EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n /**\n * Encode all characters that have an equivalent entity, as well as all\n * characters that are not ASCII characters.\n */\n EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n /**\n * Encode all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n /**\n * Encode all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n */\n EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n const level = typeof options === \"number\" ? options : options.level;\n if (level === EntityLevel.HTML) {\n const mode = typeof options === \"object\" ? options.mode : undefined;\n return decodeHTML(input, mode);\n }\n return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n var _a;\n const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n switch (mode) {\n case EncodingMode.UTF8: {\n return escapeUTF8(input);\n }\n case EncodingMode.Attribute: {\n return escapeAttribute(input);\n }\n case EncodingMode.Text: {\n return escapeText(input);\n }\n case EncodingMode.ASCII: {\n return level === EntityLevel.HTML\n ? encodeNonAsciiHTML(input)\n : encodeXML(input);\n }\n // eslint-disable-next-line unicorn/no-useless-switch-case\n case EncodingMode.Extensive:\n default: {\n return level === EntityLevel.HTML\n ? encodeHTML(input)\n : encodeXML(input);\n }\n }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n if (isWeb()) {\n const txt = document.createElement(\"textarea\");\n txt.innerHTML = text;\n return txt.value;\n }\n return decodeHTML(text);\n}\nexport function fromBase64(text) {\n return base64.decode(text);\n}\nexport function toBase64(text) {\n return base64.encode(text);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n const encoded = toBase64(`${username}:${password}`);\n return `Basic ${encoded}`;\n}\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n [0, 65533],\n // C1 Unicode control character reference replacements\n [128, 8364],\n [130, 8218],\n [131, 402],\n [132, 8222],\n [133, 8230],\n [134, 8224],\n [135, 8225],\n [136, 710],\n [137, 8240],\n [138, 352],\n [139, 8249],\n [140, 338],\n [142, 381],\n [145, 8216],\n [146, 8217],\n [147, 8220],\n [148, 8221],\n [149, 8226],\n [150, 8211],\n [151, 8212],\n [152, 732],\n [153, 8482],\n [154, 353],\n [155, 8250],\n [156, 339],\n [158, 382],\n [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n let output = \"\";\n if (codePoint > 65535) {\n codePoint -= 65536;\n output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n codePoint = 56320 | (codePoint & 1023);\n }\n output += String.fromCharCode(codePoint);\n return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n var _a;\n if ((codePoint >= 55296 && codePoint <= 57343) ||\n codePoint > 1114111) {\n return 65533;\n }\n return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n [34, \""\"],\n [38, \"&\"],\n [39, \"'\"],\n [60, \"<\"],\n [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n ? (c.charCodeAt(index) - 55296) * 1024 +\n c.charCodeAt(index + 1) -\n 56320 +\n 65536\n : c.charCodeAt(index)\n : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n let returnValue = \"\";\n let lastIndex = 0;\n let match;\n while ((match = xmlReplacer.exec(input)) !== null) {\n const { index } = match;\n const char = input.charCodeAt(index);\n const next = xmlCodeMap.get(char);\n if (next === undefined) {\n returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n // Increase by 1 if we have a surrogate pair\n lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n }\n else {\n returnValue += input.substring(lastIndex, index) + next;\n lastIndex = index + 1;\n }\n }\n return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n return function escape(data) {\n let match;\n let lastIndex = 0;\n let result = \"\";\n while ((match = regex.exec(data))) {\n if (lastIndex !== match.index) {\n result += data.substring(lastIndex, match.index);\n }\n // We know that this character will be in the map.\n result += map.get(match[0].charCodeAt(0));\n // Every match will be of length 1\n lastIndex = match.index + 1;\n }\n return result + data.substring(lastIndex);\n };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n [34, \""\"],\n [38, \"&\"],\n [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n [38, \"&\"],\n [60, \"<\"],\n [62, \">\"],\n [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n ? self\n : typeof window !== \"undefined\"\n ? window\n : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n AuthType[\"Auto\"] = \"auto\";\n AuthType[\"Digest\"] = \"digest\";\n AuthType[\"None\"] = \"none\";\n AuthType[\"Password\"] = \"password\";\n AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n switch (context.authType) {\n case AuthType.Auto:\n if (username && password) {\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n }\n break;\n case AuthType.Digest:\n context.digest = createDigestContext(username, password, ha1);\n break;\n case AuthType.None:\n // Do nothing\n break;\n case AuthType.Password:\n context.headers.Authorization = generateBasicAuthHeader(username, password);\n break;\n case AuthType.Token:\n context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n break;\n default:\n throw new Layerr({\n info: {\n code: ErrorCode.InvalidAuthType\n }\n }, `Invalid auth type: ${context.authType}`);\n }\n}\n","export function generateTokenAuthHeader(token) {\n return `${token.token_type} ${token.access_token}`;\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n return {\n original: method,\n methods: [method],\n final: false\n };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n constructor() {\n this._configuration = {\n registry: {},\n getEmptyAction: \"null\"\n };\n this.__type__ = HOT_PATCHER_TYPE;\n }\n /**\n * Configuration object reference\n * @readonly\n */\n get configuration() {\n return this._configuration;\n }\n /**\n * The action to take when a non-set method is requested\n * Possible values: null/throw\n */\n get getEmptyAction() {\n return this.configuration.getEmptyAction;\n }\n set getEmptyAction(newAction) {\n this.configuration.getEmptyAction = newAction;\n }\n /**\n * Control another hot-patcher instance\n * Force the remote instance to use patched methods from calling instance\n * @param target The target instance to control\n * @param allowTargetOverrides Allow the target to override patched methods on\n * the controller (default is false)\n * @returns Returns self\n * @throws {Error} Throws if the target is invalid\n */\n control(target, allowTargetOverrides = false) {\n if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n }\n Object.keys(target.configuration.registry).forEach(foreignKey => {\n if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n if (allowTargetOverrides) {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n }\n else {\n this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n }\n });\n target._configuration = this.configuration;\n return this;\n }\n /**\n * Execute a patched method\n * @param key The method key\n * @param args Arguments to pass to the method (optional)\n * @see HotPatcher#get\n * @returns The output of the called method\n */\n execute(key, ...args) {\n const method = this.get(key) || NOOP;\n return method(...args);\n }\n /**\n * Get a method for a key\n * @param key The method key\n * @returns Returns the requested function or null if the function\n * does not exist and the host is configured to return null (and not throw)\n * @throws {Error} Throws if the configuration specifies to throw and the method\n * does not exist\n * @throws {Error} Throws if the `getEmptyAction` value is invalid\n */\n get(key) {\n const item = this.configuration.registry[key];\n if (!item) {\n switch (this.getEmptyAction) {\n case \"null\":\n return null;\n case \"throw\":\n throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n default:\n throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n }\n }\n return sequence(...item.methods);\n }\n /**\n * Check if a method has been patched\n * @param key The function key\n * @returns True if already patched\n */\n isPatched(key) {\n return !!this.configuration.registry[key];\n }\n /**\n * Patch a method name\n * @param key The method key to patch\n * @param method The function to set\n * @param opts Patch options\n * @returns Returns self\n */\n patch(key, method, opts = {}) {\n const { chain = false } = opts;\n if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n throw new Error(`Failed patching '${key}': Method marked as being final`);\n }\n if (typeof method !== \"function\") {\n throw new Error(`Failed patching '${key}': Provided method is not a function`);\n }\n if (chain) {\n // Add new method to the chain\n if (!this.configuration.registry[key]) {\n // New key, create item\n this.configuration.registry[key] = createNewItem(method);\n }\n else {\n // Existing, push the method\n this.configuration.registry[key].methods.push(method);\n }\n }\n else {\n // Replace the original\n if (this.isPatched(key)) {\n const { original } = this.configuration.registry[key];\n this.configuration.registry[key] = Object.assign(createNewItem(method), {\n original\n });\n }\n else {\n this.configuration.registry[key] = createNewItem(method);\n }\n }\n return this;\n }\n /**\n * Patch a method inline, execute it and return the value\n * Used for patching contents of functions. This method will not apply a patched\n * function if it has already been patched, allowing for external overrides to\n * function. It also means that the function is cached so that it is not\n * instantiated every time the outer function is invoked.\n * @param key The function key to use\n * @param method The function to patch (once, only if not patched)\n * @param args Arguments to pass to the function\n * @returns The output of the patched function\n * @example\n * function mySpecialFunction(a, b) {\n * return hotPatcher.patchInline(\"func\", (a, b) => {\n * return a + b;\n * }, a, b);\n * }\n */\n patchInline(key, method, ...args) {\n if (!this.isPatched(key)) {\n this.patch(key, method);\n }\n return this.execute(key, ...args);\n }\n /**\n * Patch a method (or methods) in sequential-mode\n * See `patch()` with the option `chain: true`\n * @see patch\n * @param key The key to patch\n * @param methods The methods to patch\n * @returns Returns self\n */\n plugin(key, ...methods) {\n methods.forEach(method => {\n this.patch(key, method, { chain: true });\n });\n return this;\n }\n /**\n * Restore a patched method if it has been overridden\n * @param key The method key\n * @returns Returns self\n */\n restore(key) {\n if (!this.isPatched(key)) {\n throw new Error(`Failed restoring method: No method present for key: ${key}`);\n }\n else if (typeof this.configuration.registry[key].original !== \"function\") {\n throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n }\n this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n return this;\n }\n /**\n * Set a method as being final\n * This sets a method as having been finally overridden. Attempts at overriding\n * again will fail with an error.\n * @param key The key to make final\n * @returns Returns self\n */\n setFinal(key) {\n if (!this.configuration.registry.hasOwnProperty(key)) {\n throw new Error(`Failed marking '${key}' as final: No method found for key`);\n }\n this.configuration.registry[key].final = true;\n return this;\n }\n}\n","export function sequence(...methods) {\n if (methods.length === 0) {\n throw new Error(\"Failed creating sequence: No functions provided\");\n }\n return function __executeSequence(...args) {\n let result = args;\n const _this = this;\n while (methods.length > 0) {\n const method = methods.shift();\n result = [method.apply(_this, result)];\n }\n return result[0];\n };\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n if (!__patcher) {\n __patcher = new HotPatcher();\n }\n return __patcher;\n}\n","export function isReactNative() {\n return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","export function cloneShallow(obj) {\n return isPlainObject(obj)\n ? Object.assign({}, obj)\n : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n if (typeof obj !== \"object\" ||\n obj === null ||\n Object.prototype.toString.call(obj) != \"[object Object]\") {\n // Not an object\n return false;\n }\n if (Object.getPrototypeOf(obj) === null) {\n return true;\n }\n let proto = obj;\n // Find the prototype\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n let output = null, items = [...args];\n while (items.length > 0) {\n const nextItem = items.shift();\n if (!output) {\n output = cloneShallow(nextItem);\n }\n else {\n output = mergeObjects(output, nextItem);\n }\n }\n return output;\n}\nfunction mergeObjects(obj1, obj2) {\n const output = cloneShallow(obj1);\n Object.keys(obj2).forEach(key => {\n if (!output.hasOwnProperty(key)) {\n output[key] = obj2[key];\n return;\n }\n if (Array.isArray(obj2[key])) {\n output[key] = Array.isArray(output[key])\n ? [...output[key], ...obj2[key]]\n : [...obj2[key]];\n }\n else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n output[key] =\n typeof output[key] === \"object\" && !!output[key]\n ? mergeObjects(output[key], obj2[key])\n : cloneShallow(obj2[key]);\n }\n else {\n output[key] = obj2[key];\n }\n });\n return output;\n}\n","export function convertResponseHeaders(headers) {\n const output = {};\n for (const key of headers.keys()) {\n output[key] = headers.get(key);\n }\n return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n if (headerPayloads.length === 0)\n return {};\n const headerKeys = {};\n return headerPayloads.reduce((output, headers) => {\n Object.keys(headers).forEach(header => {\n const lowerHeader = header.toLowerCase();\n if (headerKeys.hasOwnProperty(lowerHeader)) {\n output[headerKeys[lowerHeader]] = headers[header];\n }\n else {\n headerKeys[lowerHeader] = header;\n output[header] = headers[header];\n }\n });\n return output;\n }, {});\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n return (hasArrayBuffer &&\n (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n return (value != null &&\n value.constructor != null &&\n typeof value.constructor.isBuffer === \"function\" &&\n value.constructor.isBuffer(value));\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n let headers = {};\n // Handle standard options\n const opts = {\n method: requestOptions.method\n };\n if (requestOptions.headers) {\n headers = mergeHeaders(headers, requestOptions.headers);\n }\n if (typeof requestOptions.data !== \"undefined\") {\n const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n opts.body = body;\n headers = mergeHeaders(headers, newHeaders);\n }\n if (requestOptions.signal) {\n opts.signal = requestOptions.signal;\n }\n if (requestOptions.withCredentials) {\n opts.credentials = \"include\";\n }\n // Check for node-specific options\n if (!isWeb() && !isReactNative()) {\n if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n opts.agent = (parsedURL) => {\n if (parsedURL.protocol === \"http:\") {\n return requestOptions.httpAgent || new HTTPAgent();\n }\n return requestOptions.httpsAgent || new HTTPSAgent();\n };\n }\n }\n // Attach headers\n opts.headers = headers;\n return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n const finalOptions = cloneShallow(requestOptions);\n finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n if (typeof userOptions.data !== \"undefined\") {\n finalOptions.data = userOptions.data;\n }\n if (userOptions.signal) {\n finalOptions.signal = userOptions.signal;\n }\n if (context.httpAgent) {\n finalOptions.httpAgent = context.httpAgent;\n }\n if (context.httpsAgent) {\n finalOptions.httpsAgent = context.httpsAgent;\n }\n if (context.digest) {\n finalOptions._digest = context.digest;\n }\n if (typeof context.withCredentials === \"boolean\") {\n finalOptions.withCredentials = context.withCredentials;\n }\n return finalOptions;\n}\nexport async function request(requestOptions, context) {\n if (context.authType === AuthType.Auto) {\n return requestAuto(requestOptions, context);\n }\n if (requestOptions._digest) {\n return requestDigest(requestOptions);\n }\n return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n const response = await requestStandard(requestOptions);\n if (response.ok) {\n context.authType = AuthType.Password;\n return response;\n }\n if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n context.authType = AuthType.Digest;\n setupAuth(context, context.username, context.password, undefined, undefined);\n requestOptions._digest = context.digest;\n return requestDigest(requestOptions);\n }\n return response;\n}\nasync function requestDigest(requestOptions) {\n // Remove client's digest authentication object from request options\n const _digest = requestOptions._digest;\n delete requestOptions._digest;\n // If client is already using digest authentication, include the digest authorization header\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n }\n // Perform digest request + check\n const response = await requestStandard(requestOptions);\n if (response.status == 401) {\n _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n if (_digest.hasDigestAuth) {\n requestOptions = merge(requestOptions, {\n headers: {\n Authorization: generateDigestAuthHeader(requestOptions, _digest)\n }\n });\n const response2 = await requestStandard(requestOptions);\n if (response2.status == 401) {\n _digest.hasDigestAuth = false;\n }\n else {\n _digest.nc++;\n }\n return response2;\n }\n }\n else {\n _digest.nc++;\n }\n return response;\n}\nfunction requestStandard(requestOptions) {\n const patcher = getPatcher();\n return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n // @ts-ignore\n return [data, {}];\n }\n if (typeof data === \"string\") {\n return [data, {}];\n }\n else if (isBuffer(data)) {\n return [data, {}];\n }\n else if (isArrayBuffer(data)) {\n return [data, {}];\n }\n else if (data && typeof data === \"object\") {\n return [\n JSON.stringify(data),\n {\n \"content-type\": \"application/json\"\n }\n ];\n }\n throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes. For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n return windowsPathsNoEscape\n ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n]);\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n]);\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n]);\nconst usurpMap = new Map([\n ['!', new Map([['!', '@']])],\n ['?', new Map([['*', '*'], ['+', '*']])],\n ['@', new Map([['!', '!'], ['?', '?'], ['@', '@'], ['*', '*'], ['+', '+']])],\n ['+', new Map([['?', '*'], ['*', '*']])],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n if (this.#toString !== undefined)\n return this.#toString;\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''));\n }\n else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n }\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' && !(p instanceof _a && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null\n ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof _a && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new _a(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt, extDepth) {\n const maxDepth = opt.maxExtglobRecursion ?? 2;\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth;\n if (doRecurse) {\n ast.push(acc);\n acc = '';\n const ext = new _a(c, ast);\n i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new _a(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n part.push(acc);\n acc = '';\n const ext = new _a(c, part);\n part.push(ext);\n i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new _a(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n #canAdoptWithSpace(child) {\n return this.#canAdopt(child, adoptionWithSpaceMap);\n }\n #canAdopt(child, map = adoptionMap) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canAdoptType(gc.type, map);\n }\n #canAdoptType(c, map = adoptionAnyMap) {\n return !!map.get(this.type)?.includes(c);\n }\n #adoptWithSpace(child, index) {\n const gc = child.#parts[0];\n const blank = new _a(null, gc, this.options);\n blank.#parts.push('');\n gc.push(blank);\n this.#adopt(child, index);\n }\n #adopt(child, index) {\n const gc = child.#parts[0];\n this.#parts.splice(index, 1, ...gc.#parts);\n for (const p of gc.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.#toString = undefined;\n }\n #canUsurpType(c) {\n const m = usurpMap.get(this.type);\n return !!(m?.has(c));\n }\n #canUsurp(child) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canUsurpType(gc.type);\n }\n #usurp(child) {\n const m = usurpMap.get(this.type);\n const gc = child.#parts[0];\n const nt = m?.get(gc.type);\n /* c8 ignore start - impossible */\n if (!nt)\n return false;\n /* c8 ignore stop */\n this.#parts = gc.#parts;\n for (const p of this.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.type = nt;\n this.#toString = undefined;\n this.#emptyExt = false;\n }\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object')\n p.#flatten();\n }\n }\n else {\n let iterations = 0;\n let done = false;\n do {\n done = true;\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i];\n if (typeof c === 'object') {\n c.#flatten();\n if (this.#canAdopt(c)) {\n done = false;\n this.#adopt(c, i);\n }\n else if (this.#canAdoptWithSpace(c)) {\n done = false;\n this.#adoptWithSpace(c, i);\n }\n else if (this.#canUsurp(c)) {\n done = false;\n this.#usurp(c);\n }\n }\n }\n } while (!done && ++iterations < 10);\n }\n this.#toString = undefined;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new _a(null, undefined, options);\n _a.#parseAST(pattern, ast, 0, options, 0);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this) {\n this.#flatten();\n this.#fillNegs();\n }\n if (!isExtglobAST(this)) {\n const noEmpty = this.isStart() && this.isEnd();\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string'\n ? _a.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n const me = this;\n me.#parts = [s];\n me.type = null;\n me.#hasMagic = undefined;\n return [s, unescape(this.toString()), false, false];\n }\n // XXX abstract out this map method\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n ? ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!'\n ? // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@'\n ? ')'\n : this.type === '?'\n ? ')?'\n : this.type === '+' && bodyDotAllowed\n ? ')'\n : this.type === '*' && bodyDotAllowed\n ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n inStar = false;\n continue;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n inStar = false;\n continue;\n }\n }\n if (c === '*') {\n if (inStar)\n continue;\n inStar = true;\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n hasMagic = true;\n continue;\n }\n else {\n inStar = false;\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, unescape(glob), !!hasMagic, uflag];\n }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n assertValidPattern(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch;\n }\n const orig = minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR,\n });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern);\n // Thanks to Yeting Li for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n maxGlobstarRecursion;\n regexp;\n constructor(pattern, options = {}) {\n assertValidPattern(pattern);\n options = options || {};\n this.options = options;\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n //
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(GLOBSTAR);\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0))\n                return false;\n            fileIndex += head.length;\n        }\n        let fileTailMatch = 0;\n        if (tail.length) {\n            if (tail.length + fileIndex > file.length)\n                return false;\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0))\n                    return false;\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return partial || sawSome;\n        }\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false)\n                    return sub;\n            }\n            const f = file[fileIndex];\n            if (f === '.' || f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex, pi = patternIndex,\n            fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            /* c8 ignore start */\n            if (p === false || p === GLOBSTAR)\n                return false;\n            /* c8 ignore stop */\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        if (fi === fl && pi === pl) {\n            return true;\n        }\n        else if (fi === fl) {\n            return partial;\n        }\n        else if (pi === pl) {\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function (string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n/**\n * Dangerous property names that could lead to prototype pollution or security issues\n */\nexport const DANGEROUS_PROPERTY_NAMES = [\n  // '__proto__',\n  // 'constructor',\n  // 'prototype',\n  'hasOwnProperty',\n  'toString',\n  'valueOf',\n  '__defineGetter__',\n  '__defineSetter__',\n  '__lookupGetter__',\n  '__lookupSetter__'\n];\n\nexport const criticalProperties = [\"__proto__\", \"constructor\", \"prototype\"];","import { DANGEROUS_PROPERTY_NAMES, criticalProperties } from \"../util.js\";\n\nconst defaultOnDangerousProperty = (name) => {\n  if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return \"__\" + name;\n  }\n  return name;\n};\n\n\nexport const defaultOptions = {\n  preserveOrder: false,\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  removeNSPrefix: false, // remove NS from tag name or attribute name if true\n  allowBooleanAttributes: false, //a tag can have attributes without any value\n  //ignoreRootElement : false,\n  parseTagValue: true,\n  parseAttributeValue: false,\n  trimValues: true, //Trim string values of tag and attributes\n  cdataPropName: false,\n  numberParseOptions: {\n    hex: true,\n    leadingZeros: true,\n    eNotation: true\n  },\n  tagValueProcessor: function (tagName, val) {\n    return val;\n  },\n  attributeValueProcessor: function (attrName, val) {\n    return val;\n  },\n  stopNodes: [], //nested tags will not be parsed even for errors\n  alwaysCreateTextNode: false,\n  isArray: () => false,\n  commentPropName: false,\n  unpairedTags: [],\n  processEntities: true,\n  htmlEntities: false,\n  ignoreDeclaration: false,\n  ignorePiTags: false,\n  transformTagName: false,\n  transformAttributeName: false,\n  updateTag: function (tagName, jPath, attrs) {\n    return tagName\n  },\n  // skipEmptyListItem: false\n  captureMetaData: false,\n  maxNestedTags: 100,\n  strictReservedNames: true,\n  jPath: true, // if true, pass jPath string to callbacks; if false, pass matcher instance\n  onDangerousProperty: defaultOnDangerousProperty\n};\n\n\n/**\n * Validates that a property name is safe to use\n * @param {string} propertyName - The property name to validate\n * @param {string} optionName - The option field name (for error message)\n * @throws {Error} If property name is dangerous\n */\nfunction validatePropertyName(propertyName, optionName) {\n  if (typeof propertyName !== 'string') {\n    return; // Only validate string property names\n  }\n\n  const normalized = propertyName.toLowerCase();\n  if (DANGEROUS_PROPERTY_NAMES.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n\n  if (criticalProperties.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n}\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n  // Boolean backward compatibility\n  if (typeof value === 'boolean') {\n    return {\n      enabled: value, // true or false\n      maxEntitySize: 10000,\n      maxExpansionDepth: 10,\n      maxTotalExpansions: 1000,\n      maxExpandedLength: 100000,\n      maxEntityCount: 100,\n      allowedTags: null,\n      tagFilter: null\n    };\n  }\n\n  // Object config - merge with defaults\n  if (typeof value === 'object' && value !== null) {\n    return {\n      enabled: value.enabled !== false, // default true if not specified\n      maxEntitySize: value.maxEntitySize ?? 10000,\n      maxExpansionDepth: value.maxExpansionDepth ?? 10,\n      maxTotalExpansions: value.maxTotalExpansions ?? 1000,\n      maxExpandedLength: value.maxExpandedLength ?? 100000,\n      maxEntityCount: value.maxEntityCount ?? 100,\n      allowedTags: value.allowedTags ?? null,\n      tagFilter: value.tagFilter ?? null\n    };\n  }\n\n  // Default to enabled with limits\n  return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n  const built = Object.assign({}, defaultOptions, options);\n\n  // Validate property names to prevent prototype pollution\n  const propertyNameOptions = [\n    { value: built.attributeNamePrefix, name: 'attributeNamePrefix' },\n    { value: built.attributesGroupName, name: 'attributesGroupName' },\n    { value: built.textNodeName, name: 'textNodeName' },\n    { value: built.cdataPropName, name: 'cdataPropName' },\n    { value: built.commentPropName, name: 'commentPropName' }\n  ];\n\n  for (const { value, name } of propertyNameOptions) {\n    if (value) {\n      validatePropertyName(value, name);\n    }\n  }\n\n  if (built.onDangerousProperty === null) {\n    built.onDangerousProperty = defaultOnDangerousProperty;\n  }\n\n  // Always normalize processEntities for backward compatibility and validation\n  built.processEntities = normalizeProcessEntities(built.processEntities);\n\n  // Convert old-style stopNodes for backward compatibility\n  if (built.stopNodes && Array.isArray(built.stopNodes)) {\n    built.stopNodes = built.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Old syntax: *.tagname meant \"tagname anywhere\"\n        // Convert to new syntax: ..tagname\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n  //console.debug(built.processEntities)\n  return built;\n};","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = Object.create(null); //attributes map\n  }\n  add(key, val) {\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if (key === \"__proto__\") key = \"#__proto__\";\n    this.child.push({ [key]: val });\n  }\n  addChild(node, startIndex) {\n    if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n      this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    } else {\n      this.child.push({ [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n    constructor(options) {\n        this.suppressValidationErr = !options;\n        this.options = options;\n    }\n\n    readDocType(xmlData, i) {\n        const entities = Object.create(null);\n        let entityCount = 0;\n\n        if (xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E') {\n            i = i + 9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for (; i < xmlData.length; i++) {\n                if (xmlData[i] === '<' && !comment) { //Determine the tag type\n                    if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n                        i += 7;\n                        let entityName, val;\n                        [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n                        if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n                            if (this.options.enabled !== false &&\n                                this.options.maxEntityCount &&\n                                entityCount >= this.options.maxEntityCount) {\n                                throw new Error(\n                                    `Entity count (${entityCount + 1}) exceeds maximum allowed (${this.options.maxEntityCount})`\n                                );\n                            }\n                            //const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n                            const escaped = entityName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n                            entities[entityName] = {\n                                regx: RegExp(`&${escaped};`, \"g\"),\n                                val: val\n                            };\n                            entityCount++;\n                        }\n                    }\n                    else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n                        i += 8;//Not supported\n                        const { index } = this.readElementExp(xmlData, i + 1);\n                        i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n                        i += 8;//Not supported\n                        // const {index} = this.readAttlistExp(xmlData,i+1);\n                        // i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n                        i += 9;//Not supported\n                        const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n                        i = index;\n                    } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n                    else throw new Error(`Invalid DOCTYPE`);\n\n                    angleBracketsCount++;\n                    exp = \"\";\n                } else if (xmlData[i] === '>') { //Read tag content\n                    if (comment) {\n                        if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    } else {\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                        break;\n                    }\n                } else if (xmlData[i] === '[') {\n                    hasBody = true;\n                } else {\n                    exp += xmlData[i];\n                }\n            }\n            if (angleBracketsCount !== 0) {\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        } else {\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return { entities, i };\n    }\n    readEntityExp(xmlData, i) {\n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after  this.options.maxEntitySize) {\n            throw new Error(\n                `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n            );\n        }\n\n        i--;\n        return [entityName, entityValue, i];\n    }\n\n    readNotationExp(xmlData, i) {\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n\n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n    for (let j = 0; j < seq.length; j++) {\n        if (seq[j] !== data[i + j + 1]) return false;\n    }\n    return true;\n}\n\nfunction validateEntityName(name) {\n    if (isName(name))\n        return name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n    hex :  true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    \n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if(str===\"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n    // }else if (options.oct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n        return resolveEnotation(str,trimmedStr,options);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        // +00.123 => [ , '+', '00', '.123', ..\n        if(match){\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n  /**\n   * Create a new Matcher\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Default path separator (default: '.')\n   */\n  constructor(options = {}) {\n    this.separator = options.separator || '.';\n    this.path = [];\n    this.siblingStacks = [];\n    // Each path node: { tag: string, values: object, position: number, counter: number }\n    // values only present for current (last) node\n    // Each siblingStacks entry: Map tracking occurrences at each level\n  }\n\n  /**\n   * Push a new tag onto the path\n   * @param {string} tagName - Name of the tag\n   * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n   * @param {string} namespace - Namespace for the tag (optional)\n   */\n  push(tagName, attrValues = null, namespace = null) {\n    // Remove values from previous current node (now becoming ancestor)\n    if (this.path.length > 0) {\n      const prev = this.path[this.path.length - 1];\n      prev.values = undefined;\n    }\n\n    // Get or create sibling tracking for current level\n    const currentLevel = this.path.length;\n    if (!this.siblingStacks[currentLevel]) {\n      this.siblingStacks[currentLevel] = new Map();\n    }\n\n    const siblings = this.siblingStacks[currentLevel];\n\n    // Create a unique key for sibling tracking that includes namespace\n    const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n    // Calculate counter (how many times this tag appeared at this level)\n    const counter = siblings.get(siblingKey) || 0;\n\n    // Calculate position (total children at this level so far)\n    let position = 0;\n    for (const count of siblings.values()) {\n      position += count;\n    }\n\n    // Update sibling count for this tag\n    siblings.set(siblingKey, counter + 1);\n\n    // Create new node\n    const node = {\n      tag: tagName,\n      position: position,\n      counter: counter\n    };\n\n    // Store namespace if provided\n    if (namespace !== null && namespace !== undefined) {\n      node.namespace = namespace;\n    }\n\n    // Store values only for current node\n    if (attrValues !== null && attrValues !== undefined) {\n      node.values = attrValues;\n    }\n\n    this.path.push(node);\n  }\n\n  /**\n   * Pop the last tag from the path\n   * @returns {Object|undefined} The popped node\n   */\n  pop() {\n    if (this.path.length === 0) {\n      return undefined;\n    }\n\n    const node = this.path.pop();\n\n    // Clean up sibling tracking for levels deeper than current\n    // After pop, path.length is the new depth\n    // We need to clean up siblingStacks[path.length + 1] and beyond\n    if (this.siblingStacks.length > this.path.length + 1) {\n      this.siblingStacks.length = this.path.length + 1;\n    }\n\n    return node;\n  }\n\n  /**\n   * Update current node's attribute values\n   * Useful when attributes are parsed after push\n   * @param {Object} attrValues - Attribute values\n   */\n  updateCurrent(attrValues) {\n    if (this.path.length > 0) {\n      const current = this.path[this.path.length - 1];\n      if (attrValues !== null && attrValues !== undefined) {\n        current.values = attrValues;\n      }\n    }\n  }\n\n  /**\n   * Get current tag name\n   * @returns {string|undefined}\n   */\n  getCurrentTag() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n  }\n\n  /**\n   * Get current namespace\n   * @returns {string|undefined}\n   */\n  getCurrentNamespace() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n  }\n\n  /**\n   * Get current node's attribute value\n   * @param {string} attrName - Attribute name\n   * @returns {*} Attribute value or undefined\n   */\n  getAttrValue(attrName) {\n    if (this.path.length === 0) return undefined;\n    const current = this.path[this.path.length - 1];\n    return current.values?.[attrName];\n  }\n\n  /**\n   * Check if current node has an attribute\n   * @param {string} attrName - Attribute name\n   * @returns {boolean}\n   */\n  hasAttr(attrName) {\n    if (this.path.length === 0) return false;\n    const current = this.path[this.path.length - 1];\n    return current.values !== undefined && attrName in current.values;\n  }\n\n  /**\n   * Get current node's sibling position (child index in parent)\n   * @returns {number}\n   */\n  getPosition() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].position ?? 0;\n  }\n\n  /**\n   * Get current node's repeat counter (occurrence count of this tag name)\n   * @returns {number}\n   */\n  getCounter() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].counter ?? 0;\n  }\n\n  /**\n   * Get current node's sibling index (alias for getPosition for backward compatibility)\n   * @returns {number}\n   * @deprecated Use getPosition() or getCounter() instead\n   */\n  getIndex() {\n    return this.getPosition();\n  }\n\n  /**\n   * Get current path depth\n   * @returns {number}\n   */\n  getDepth() {\n    return this.path.length;\n  }\n\n  /**\n   * Get path as string\n   * @param {string} separator - Optional separator (uses default if not provided)\n   * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n   * @returns {string}\n   */\n  toString(separator, includeNamespace = true) {\n    const sep = separator || this.separator;\n    return this.path.map(n => {\n      if (includeNamespace && n.namespace) {\n        return `${n.namespace}:${n.tag}`;\n      }\n      return n.tag;\n    }).join(sep);\n  }\n\n  /**\n   * Get path as array of tag names\n   * @returns {string[]}\n   */\n  toArray() {\n    return this.path.map(n => n.tag);\n  }\n\n  /**\n   * Reset the path to empty\n   */\n  reset() {\n    this.path = [];\n    this.siblingStacks = [];\n  }\n\n  /**\n   * Match current path against an Expression\n   * @param {Expression} expression - The expression to match against\n   * @returns {boolean} True if current path matches the expression\n   */\n  matches(expression) {\n    const segments = expression.segments;\n\n    if (segments.length === 0) {\n      return false;\n    }\n\n    // Handle deep wildcard patterns\n    if (expression.hasDeepWildcard()) {\n      return this._matchWithDeepWildcard(segments);\n    }\n\n    // Simple path matching (no deep wildcards)\n    return this._matchSimple(segments);\n  }\n\n  /**\n   * Match simple path (no deep wildcards)\n   * @private\n   */\n  _matchSimple(segments) {\n    // Path must be same length as segments\n    if (this.path.length !== segments.length) {\n      return false;\n    }\n\n    // Match each segment bottom-to-top\n    for (let i = 0; i < segments.length; i++) {\n      const segment = segments[i];\n      const node = this.path[i];\n      const isCurrentNode = (i === this.path.length - 1);\n\n      if (!this._matchSegment(segment, node, isCurrentNode)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Match path with deep wildcards\n   * @private\n   */\n  _matchWithDeepWildcard(segments) {\n    let pathIdx = this.path.length - 1;  // Start from current node (bottom)\n    let segIdx = segments.length - 1;     // Start from last segment\n\n    while (segIdx >= 0 && pathIdx >= 0) {\n      const segment = segments[segIdx];\n\n      if (segment.type === 'deep-wildcard') {\n        // \"..\" matches zero or more levels\n        segIdx--;\n\n        if (segIdx < 0) {\n          // Pattern ends with \"..\", always matches\n          return true;\n        }\n\n        // Find where next segment matches in the path\n        const nextSeg = segments[segIdx];\n        let found = false;\n\n        for (let i = pathIdx; i >= 0; i--) {\n          const isCurrentNode = (i === this.path.length - 1);\n          if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n            pathIdx = i - 1;\n            segIdx--;\n            found = true;\n            break;\n          }\n        }\n\n        if (!found) {\n          return false;\n        }\n      } else {\n        // Regular segment\n        const isCurrentNode = (pathIdx === this.path.length - 1);\n        if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n          return false;\n        }\n        pathIdx--;\n        segIdx--;\n      }\n    }\n\n    // All segments must be consumed\n    return segIdx < 0;\n  }\n\n  /**\n   * Match a single segment against a node\n   * @private\n   * @param {Object} segment - Segment from Expression\n   * @param {Object} node - Node from path\n   * @param {boolean} isCurrentNode - Whether this is the current (last) node\n   * @returns {boolean}\n   */\n  _matchSegment(segment, node, isCurrentNode) {\n    // Match tag name (* is wildcard)\n    if (segment.tag !== '*' && segment.tag !== node.tag) {\n      return false;\n    }\n\n    // Match namespace if specified in segment\n    if (segment.namespace !== undefined) {\n      // Segment has namespace - node must match it\n      if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n        return false;\n      }\n    }\n    // If segment has no namespace, it matches nodes with or without namespace\n\n    // Match attribute name (check if node has this attribute)\n    // Can only check for current node since ancestors don't have values\n    if (segment.attrName !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check attributes for ancestor nodes (values not stored)\n        return false;\n      }\n\n      if (!node.values || !(segment.attrName in node.values)) {\n        return false;\n      }\n\n      // Match attribute value (only possible for current node)\n      if (segment.attrValue !== undefined) {\n        const actualValue = node.values[segment.attrName];\n        // Both should be strings\n        if (String(actualValue) !== String(segment.attrValue)) {\n          return false;\n        }\n      }\n    }\n\n    // Match position (only for current node)\n    if (segment.position !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check position for ancestor nodes\n        return false;\n      }\n\n      const counter = node.counter ?? 0;\n\n      if (segment.position === 'first' && counter !== 0) {\n        return false;\n      } else if (segment.position === 'odd' && counter % 2 !== 1) {\n        return false;\n      } else if (segment.position === 'even' && counter % 2 !== 0) {\n        return false;\n      } else if (segment.position === 'nth') {\n        if (counter !== segment.positionValue) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Create a snapshot of current state\n   * @returns {Object} State snapshot\n   */\n  snapshot() {\n    return {\n      path: this.path.map(node => ({ ...node })),\n      siblingStacks: this.siblingStacks.map(map => new Map(map))\n    };\n  }\n\n  /**\n   * Restore state from snapshot\n   * @param {Object} snapshot - State snapshot\n   */\n  restore(snapshot) {\n    this.path = snapshot.path.map(node => ({ ...node }));\n    this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n  }\n}","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n  /**\n   * Create a new Expression\n   * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Path separator (default: '.')\n   */\n  constructor(pattern, options = {}) {\n    this.pattern = pattern;\n    this.separator = options.separator || '.';\n    this.segments = this._parse(pattern);\n\n    // Cache expensive checks for performance (O(1) instead of O(n))\n    this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n    this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n    this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n  }\n\n  /**\n   * Parse pattern string into segments\n   * @private\n   * @param {string} pattern - Pattern to parse\n   * @returns {Array} Array of segment objects\n   */\n  _parse(pattern) {\n    const segments = [];\n\n    // Split by separator but handle \"..\" specially\n    let i = 0;\n    let currentPart = '';\n\n    while (i < pattern.length) {\n      if (pattern[i] === this.separator) {\n        // Check if next char is also separator (deep wildcard)\n        if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n          // Flush current part if any\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n            currentPart = '';\n          }\n          // Add deep wildcard\n          segments.push({ type: 'deep-wildcard' });\n          i += 2; // Skip both separators\n        } else {\n          // Regular separator\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n          }\n          currentPart = '';\n          i++;\n        }\n      } else {\n        currentPart += pattern[i];\n        i++;\n      }\n    }\n\n    // Flush remaining part\n    if (currentPart.trim()) {\n      segments.push(this._parseSegment(currentPart.trim()));\n    }\n\n    return segments;\n  }\n\n  /**\n   * Parse a single segment\n   * @private\n   * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n   * @returns {Object} Segment object\n   */\n  _parseSegment(part) {\n    const segment = { type: 'tag' };\n\n    // NEW NAMESPACE SYNTAX (v2.0):\n    // ============================\n    // Namespace uses DOUBLE colon (::)\n    // Position uses SINGLE colon (:)\n    // \n    // Examples:\n    //   \"user\"              → tag\n    //   \"user:first\"        → tag + position\n    //   \"user[id]\"          → tag + attribute\n    //   \"user[id]:first\"    → tag + attribute + position\n    //   \"ns::user\"          → namespace + tag\n    //   \"ns::user:first\"    → namespace + tag + position\n    //   \"ns::user[id]\"      → namespace + tag + attribute\n    //   \"ns::user[id]:first\" → namespace + tag + attribute + position\n    //   \"ns::first\"         → namespace + tag named \"first\" (NO ambiguity!)\n    //\n    // This eliminates all ambiguity:\n    //   :: = namespace separator\n    //   :  = position selector\n    //   [] = attributes\n\n    // Step 1: Extract brackets [attr] or [attr=value]\n    let bracketContent = null;\n    let withoutBrackets = part;\n\n    const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n    if (bracketMatch) {\n      withoutBrackets = bracketMatch[1] + bracketMatch[3];\n      if (bracketMatch[2]) {\n        const content = bracketMatch[2].slice(1, -1);\n        if (content) {\n          bracketContent = content;\n        }\n      }\n    }\n\n    // Step 2: Check for namespace (double colon ::)\n    let namespace = undefined;\n    let tagAndPosition = withoutBrackets;\n\n    if (withoutBrackets.includes('::')) {\n      const nsIndex = withoutBrackets.indexOf('::');\n      namespace = withoutBrackets.substring(0, nsIndex).trim();\n      tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n      if (!namespace) {\n        throw new Error(`Invalid namespace in pattern: ${part}`);\n      }\n    }\n\n    // Step 3: Parse tag and position (single colon :)\n    let tag = undefined;\n    let positionMatch = null;\n\n    if (tagAndPosition.includes(':')) {\n      const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n      const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n      const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n      // Verify position is a valid keyword\n      const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n        /^nth\\(\\d+\\)$/.test(posPart);\n\n      if (isPositionKeyword) {\n        tag = tagPart;\n        positionMatch = posPart;\n      } else {\n        // Not a valid position keyword, treat whole thing as tag\n        tag = tagAndPosition;\n      }\n    } else {\n      tag = tagAndPosition;\n    }\n\n    if (!tag) {\n      throw new Error(`Invalid segment pattern: ${part}`);\n    }\n\n    segment.tag = tag;\n    if (namespace) {\n      segment.namespace = namespace;\n    }\n\n    // Step 4: Parse attributes\n    if (bracketContent) {\n      if (bracketContent.includes('=')) {\n        const eqIndex = bracketContent.indexOf('=');\n        segment.attrName = bracketContent.substring(0, eqIndex).trim();\n        segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n      } else {\n        segment.attrName = bracketContent.trim();\n      }\n    }\n\n    // Step 5: Parse position selector\n    if (positionMatch) {\n      const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n      if (nthMatch) {\n        segment.position = 'nth';\n        segment.positionValue = parseInt(nthMatch[1], 10);\n      } else {\n        segment.position = positionMatch;\n      }\n    }\n\n    return segment;\n  }\n\n  /**\n   * Get the number of segments\n   * @returns {number}\n   */\n  get length() {\n    return this.segments.length;\n  }\n\n  /**\n   * Check if expression contains deep wildcard\n   * @returns {boolean}\n   */\n  hasDeepWildcard() {\n    return this._hasDeepWildcard;\n  }\n\n  /**\n   * Check if expression has attribute conditions\n   * @returns {boolean}\n   */\n  hasAttributeCondition() {\n    return this._hasAttributeCondition;\n  }\n\n  /**\n   * Check if expression has position selectors\n   * @returns {boolean}\n   */\n  hasPositionSelector() {\n    return this._hasPositionSelector;\n  }\n\n  /**\n   * Get string representation\n   * @returns {string}\n   */\n  toString() {\n    return this.pattern;\n  }\n}","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist, DANGEROUS_PROPERTY_NAMES, criticalProperties } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n// Helper functions for attribute and namespace handling\n\n/**\n * Extract raw attributes (without prefix) from prefixed attribute map\n * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap\n * @param {object} options - Parser options containing attributeNamePrefix\n * @returns {object} Raw attributes for matcher\n */\nfunction extractRawAttributes(prefixedAttrs, options) {\n  if (!prefixedAttrs) return {};\n\n  // Handle attributesGroupName option\n  const attrs = options.attributesGroupName\n    ? prefixedAttrs[options.attributesGroupName]\n    : prefixedAttrs;\n\n  if (!attrs) return {};\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    // Remove the attribute prefix to get raw name\n    if (key.startsWith(options.attributeNamePrefix)) {\n      const rawName = key.substring(options.attributeNamePrefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * Extract namespace from raw tag name\n * @param {string} rawTagName - Tag name possibly with namespace (e.g., \"soap:Envelope\")\n * @returns {string|undefined} Namespace or undefined\n */\nfunction extractNamespace(rawTagName) {\n  if (!rawTagName || typeof rawTagName !== 'string') return undefined;\n\n  const colonIndex = rawTagName.indexOf(':');\n  if (colonIndex !== -1 && colonIndex > 0) {\n    const ns = rawTagName.substring(0, colonIndex);\n    // Don't treat xmlns as a namespace\n    if (ns !== 'xmlns') {\n      return ns;\n    }\n  }\n  return undefined;\n}\n\nexport default class OrderedObjParser {\n  constructor(options) {\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n      \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n      \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n      \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.entityExpansionCount = 0;\n    this.currentExpandedLength = 0;\n\n    // Initialize path matcher for path-expression-matcher\n    this.matcher = new Matcher();\n\n    // Flag to track if current node is a stop node (optimization)\n    this.isCurrentNodeStopNode = false;\n\n    // Pre-compile stopNodes expressions\n    if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n      this.stopNodeExpressions = [];\n      for (let i = 0; i < this.options.stopNodes.length; i++) {\n        const stopNodeExp = this.options.stopNodes[i];\n        if (typeof stopNodeExp === 'string') {\n          // Convert string to Expression object\n          this.stopNodeExpressions.push(new Expression(stopNodeExp));\n        } else if (stopNodeExp instanceof Expression) {\n          // Already an Expression object\n          this.stopNodeExpressions.push(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n    this.lastEntities[ent] = {\n      regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n      val: externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if (val.length > 0) {\n      if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n      const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);\n      if (newval === null || newval === undefined) {\n        //don't parse\n        return val;\n      } else if (typeof newval !== typeof val || newval !== val) {\n        //overwrite\n        return newval;\n      } else if (this.options.trimValues) {\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      } else {\n        const trimmedVal = val.trim();\n        if (trimmedVal === val) {\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        } else {\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n\n    // First pass: parse all attributes and update matcher with raw values\n    // This ensures the matcher has all attribute values when processors run\n    const rawAttrsForMatcher = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      const oldVal = matches[i][4];\n\n      if (attrName.length && oldVal !== undefined) {\n        let parsedVal = oldVal;\n        if (this.options.trimValues) {\n          parsedVal = parsedVal.trim();\n        }\n        parsedVal = this.replaceEntitiesValue(parsedVal, tagName, jPath);\n        rawAttrsForMatcher[attrName] = parsedVal;\n      }\n    }\n\n    // Update matcher with raw attribute values BEFORE running processors\n    if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) {\n      jPath.updateCurrent(rawAttrsForMatcher);\n    }\n\n    // Second pass: now process attributes with matcher having full attribute context\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n\n      // Convert jPath to string if needed for ignoreAttributesFn\n      const jPathStr = this.options.jPath ? jPath.toString() : jPath;\n      if (this.ignoreAttributesFn(attrName, jPathStr)) {\n        continue\n      }\n\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        //if (aName === \"__proto__\") aName = \"#__proto__\";\n        aName = sanitizeName(aName, this.options);\n\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal, tagName, jPath);\n\n          // Pass jPath string or matcher based on options.jPath setting\n          const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher);\n          if (newVal === null || newVal === undefined) {\n            //don't parse\n            attrs[aName] = oldVal;\n          } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n            //overwrite\n            attrs[aName] = newVal;\n          } else {\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function (xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n\n  // Reset matcher for new document\n  this.matcher.reset();\n\n  // Reset entity expansion counters for this document\n  this.entityExpansionCount = 0;\n  this.currentExpandedLength = 0;\n\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n    const ch = xmlData[i];\n    if (ch === '<') {\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if (xmlData[i + 1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n        if (this.options.removeNSPrefix) {\n          const colonIndex = tagName.indexOf(\":\");\n          if (colonIndex !== -1) {\n            tagName = tagName.substr(colonIndex + 1);\n          }\n        }\n\n        tagName = transformTagName(this.options.transformTagName, tagName, \"\", this.options).tagName;\n\n        if (currentNode) {\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = this.matcher.getCurrentTag();\n        if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n          // Pop the unpaired tag\n          this.matcher.pop();\n          this.tagsNodeStack.pop();\n        }\n        // Pop the closing tag\n        this.matcher.pop();\n        this.isCurrentNodeStopNode = false; // Reset flag when closing tag\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n\n        let tagData = readTagExp(xmlData, i, false, \"?>\");\n        if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n          //do nothing\n        } else {\n\n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n\n          if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, this.matcher, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n        if (this.options.commentPropName) {\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n          currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n        }\n        i = endIndex;\n      } else if (xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9, closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, this.matcher, true, false, true, true);\n        if (val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if (this.options.cdataPropName) {\n          currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n        } else {\n          currentNode.add(this.options.textNodeName, val);\n        }\n\n        i = closeIndex + 2;\n      } else {//Opening tag\n        let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n\n        // Safety check: readTagExp can return undefined\n        if (!result) {\n          // Log context for debugging\n          const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50));\n          throw new Error(`readTagExp returned undefined at position ${i}. Context: \"${context}\"`);\n        }\n\n        let tagName = result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n        if (this.options.strictReservedNames &&\n          (tagName === this.options.commentPropName\n            || tagName === this.options.cdataPropName\n          )) {\n          throw new Error(`Invalid tag name: ${tagName}`);\n        }\n\n        //save text as child node\n        if (currentNode && textData) {\n          if (currentNode.tagname !== '!xml') {\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, this.matcher, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n          currentNode = this.tagsNodeStack.pop();\n          this.matcher.pop();\n        }\n\n        // Clean up self-closing syntax BEFORE processing attributes\n        // This is where tagExp gets the trailing / removed\n        let isSelfClosing = false;\n        if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n          isSelfClosing = true;\n          if (tagName[tagName.length - 1] === \"/\") {\n            tagName = tagName.substr(0, tagName.length - 1);\n            tagExp = tagName;\n          } else {\n            tagExp = tagExp.substr(0, tagExp.length - 1);\n          }\n\n          // Re-check attrExpPresent after cleaning\n          attrExpPresent = (tagName !== tagExp);\n        }\n\n        // Now process attributes with CLEAN tagExp (no trailing /)\n        let prefixedAttrs = null;\n        let rawAttrs = {};\n        let namespace = undefined;\n\n        // Extract namespace from rawTagName\n        namespace = extractNamespace(rawTagName);\n\n        // Push tag to matcher FIRST (with empty attrs for now) so callbacks see correct path\n        if (tagName !== xmlObj.tagname) {\n          this.matcher.push(tagName, {}, namespace);\n        }\n\n        // Now build attributes - callbacks will see correct matcher state\n        if (tagName !== tagExp && attrExpPresent) {\n          // Build attributes (returns prefixed attributes for the tree)\n          // Note: buildAttributesMap now internally updates the matcher with raw attributes\n          prefixedAttrs = this.buildAttributesMap(tagExp, this.matcher, tagName);\n\n          if (prefixedAttrs) {\n            // Extract raw attributes (without prefix) for our use\n            rawAttrs = extractRawAttributes(prefixedAttrs, this.options);\n          }\n        }\n\n        // Now check if this is a stop node (after attributes are set)\n        if (tagName !== xmlObj.tagname) {\n          this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher);\n        }\n\n        const startIndex = i;\n        if (this.isCurrentNodeStopNode) {\n          let tagContent = \"\";\n\n          // For self-closing tags, content is empty\n          if (isSelfClosing) {\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n            i = result.closeIndex;\n          }\n          //normal tag\n          else {\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if (prefixedAttrs) {\n            childNode[\":@\"] = prefixedAttrs;\n          }\n\n          // For stop nodes, store raw content as-is without any processing\n          childNode.add(this.options.textNodeName, tagContent);\n\n          this.matcher.pop(); // Pop the stop node tag\n          this.isCurrentNodeStopNode = false; // Reset flag\n\n          this.addChild(currentNode, childNode, this.matcher, startIndex);\n        } else {\n          //selfClosing tag\n          if (isSelfClosing) {\n            ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop self-closing tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n          }\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop unpaired tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n            i = result.closeIndex;\n            // Continue to next iteration without changing currentNode\n            continue;\n          }\n          //opening tag\n          else {\n            const childNode = new xmlNode(tagName);\n            if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n              throw new Error(\"Maximum nested tags exceeded\");\n            }\n            this.tagsNodeStack.push(currentNode);\n\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    } else {\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, matcher, startIndex) {\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n\n  // Pass jPath string or matcher based on options.jPath setting\n  const jPathOrMatcher = this.options.jPath ? matcher.toString() : matcher;\n  const result = this.options.updateTag(childNode.tagname, jPathOrMatcher, childNode[\":@\"])\n  if (result === false) {\n    //do nothing\n  } else if (typeof result === \"string\") {\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  } else {\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\n/**\n * @param {object} val - Entity object with regex and val properties\n * @param {string} tagName - Tag name\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n */\nfunction replaceEntitiesValue(val, tagName, jPath) {\n  const entityConfig = this.options.processEntities;\n\n  if (!entityConfig || !entityConfig.enabled) {\n    return val;\n  }\n\n  // Check if tag is allowed to contain entities\n  if (entityConfig.allowedTags) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    const allowed = Array.isArray(entityConfig.allowedTags)\n      ? entityConfig.allowedTags.includes(tagName)\n      : entityConfig.allowedTags(tagName, jPathOrMatcher);\n\n    if (!allowed) {\n      return val;\n    }\n  }\n\n  // Apply custom tag filter if provided\n  if (entityConfig.tagFilter) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    if (!entityConfig.tagFilter(tagName, jPathOrMatcher)) {\n      return val; // Skip based on custom filter\n    }\n  }\n\n  // Replace DOCTYPE entities\n  for (const entityName of Object.keys(this.docTypeEntities)) {\n    const entity = this.docTypeEntities[entityName];\n    const matches = val.match(entity.regx);\n\n    if (matches) {\n      // Track expansions\n      this.entityExpansionCount += matches.length;\n\n      // Check expansion limit\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n\n      // Store length before replacement\n      const lengthBefore = val.length;\n      val = val.replace(entity.regx, entity.val);\n\n      // Check expanded length immediately after replacement\n      if (entityConfig.maxExpandedLength) {\n        this.currentExpandedLength += (val.length - lengthBefore);\n\n        if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n          throw new Error(\n            `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n          );\n        }\n      }\n    }\n  }\n  // Replace standard entities\n  for (const entityName of Object.keys(this.lastEntities)) {\n    const entity = this.lastEntities[entityName];\n    const matches = val.match(entity.regex);\n    if (matches) {\n      this.entityExpansionCount += matches.length;\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n    }\n    val = val.replace(entity.regex, entity.val);\n  }\n  if (val.indexOf('&') === -1) return val;\n\n  // Replace HTML entities if enabled\n  if (this.options.htmlEntities) {\n    for (const entityName of Object.keys(this.htmlEntities)) {\n      const entity = this.htmlEntities[entityName];\n      const matches = val.match(entity.regex);\n      if (matches) {\n        //console.log(matches);\n        this.entityExpansionCount += matches.length;\n        if (entityConfig.maxTotalExpansions &&\n          this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n          throw new Error(\n            `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n          );\n        }\n      }\n      val = val.replace(entity.regex, entity.val);\n    }\n  }\n\n  // Replace ampersand entity last\n  val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n  return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, matcher, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n    textData = this.parseTextData(textData,\n      parentNode.tagname,\n      matcher,\n      false,\n      parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      parentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Array} stopNodeExpressions - Array of compiled Expression objects\n * @param {Matcher} matcher - Current path matcher\n */\nfunction isItStopNode(stopNodeExpressions, matcher) {\n  if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n  for (let i = 0; i < stopNodeExpressions.length; i++) {\n    if (matcher.matches(stopNodeExpressions[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n      if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n      attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if (closingChar[1]) {\n        if (xmlData[index + 1] === closingChar[1]) {\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      } else {\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n  const closingIndex = xmlData.indexOf(str, i);\n  if (closingIndex === -1) {\n    throw new Error(errMsg)\n  } else {\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n  const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n  if (!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if (separatorIndex !== -1) {//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if (removeNSPrefix) {\n    const colonIndex = tagName.indexOf(\":\");\n    if (colonIndex !== -1) {\n      tagName = tagName.substr(colonIndex + 1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === \"<\") {\n      if (xmlData[i + 1] === \"/\") {//close tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n        let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n        if (closeTagName === tagName) {\n          openTagCount--;\n          if (openTagCount === 0) {\n            return {\n              tagContent: xmlData.substring(startIndex, i),\n              i: closeIndex\n            }\n          }\n        }\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n        const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n        i = closeIndex;\n      } else {\n        const tagData = readTagExp(xmlData, i, '>')\n\n        if (tagData) {\n          const openTagName = tagData && tagData.tagName;\n          if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n            openTagCount++;\n          }\n          i = tagData.closeIndex;\n        }\n      }\n    }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if (newval === 'true') return true;\n    else if (newval === 'false') return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n    return String.fromCodePoint(codePoint);\n  } else {\n    return prefix + str + \";\";\n  }\n}\n\nfunction transformTagName(fn, tagName, tagExp, options) {\n  if (fn) {\n    const newTagName = fn(tagName);\n    if (tagExp === tagName) {\n      tagExp = newTagName\n    }\n    tagName = newTagName;\n  }\n  tagName = sanitizeName(tagName, options);\n  return { tagName, tagExp };\n}\n\n\n\nfunction sanitizeName(name, options) {\n  if (criticalProperties.includes(name)) {\n    throw new Error(`[SECURITY] Invalid name: \"${name}\" is a reserved JavaScript keyword that could cause prototype pollution`);\n  } else if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return options.onDangerousProperty(name);\n  }\n  return name;\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\nimport { Matcher } from 'path-expression-matcher';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * Helper function to strip attribute prefix from attribute map\n * @param {object} attrs - Attributes with prefix (e.g., {\"@_class\": \"code\"})\n * @param {string} prefix - Attribute prefix to remove (e.g., \"@_\")\n * @returns {object} Attributes without prefix (e.g., {\"class\": \"code\"})\n */\nfunction stripAttributePrefix(attrs, prefix) {\n  if (!attrs || typeof attrs !== 'object') return {};\n  if (!prefix) return attrs;\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    if (key.startsWith(prefix)) {\n      const rawName = key.substring(prefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns \n */\nexport default function prettify(node, options, matcher) {\n  return compress(node, options, matcher);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns object\n */\nfunction compress(arr, options, matcher) {\n  let text;\n  const compressedObj = {}; //This is intended to be a plain object\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n\n    // Push current property to matcher WITH RAW ATTRIBUTES (no prefix)\n    if (property !== undefined && property !== options.textNodeName) {\n      const rawAttrs = stripAttributePrefix(\n        tagObj[\":@\"] || {},\n        options.attributeNamePrefix\n      );\n      matcher.push(property, rawAttrs);\n    }\n\n    if (property === options.textNodeName) {\n      if (text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    } else if (property === undefined) {\n      continue;\n    } else if (tagObj[property]) {\n\n      let val = compress(tagObj[property], options, matcher);\n      const isLeaf = isLeafTag(val, options);\n\n      if (tagObj[\":@\"]) {\n        assignAttributes(val, tagObj[\":@\"], matcher, options);\n      } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n        val = val[options.textNodeName];\n      } else if (Object.keys(val).length === 0) {\n        if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n\n      if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n        if (!Array.isArray(compressedObj[property])) {\n          compressedObj[property] = [compressedObj[property]];\n        }\n        compressedObj[property].push(val);\n      } else {\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n\n        // Pass jPath string or matcher based on options.jPath setting\n        const jPathOrMatcher = options.jPath ? matcher.toString() : matcher;\n        if (options.isArray(property, jPathOrMatcher, isLeaf)) {\n          compressedObj[property] = [val];\n        } else {\n          compressedObj[property] = val;\n        }\n      }\n\n      // Pop property from matcher after processing\n      if (property !== undefined && property !== options.textNodeName) {\n        matcher.pop();\n      }\n    }\n\n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if (typeof text === \"string\") {\n    if (text.length > 0) compressedObj[options.textNodeName] = text;\n  } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n  return compressedObj;\n}\n\nfunction propName(obj) {\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if (key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, matcher, options) {\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];  // This is the PREFIXED name (e.g., \"@_class\")\n\n      // Strip prefix for matcher path (for isArray callback)\n      const rawAttrName = atrrName.startsWith(options.attributeNamePrefix)\n        ? atrrName.substring(options.attributeNamePrefix.length)\n        : atrrName;\n\n      // For attributes, we need to create a temporary path\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = options.jPath\n        ? matcher.toString() + \".\" + rawAttrName\n        : matcher;\n\n      if (options.isArray(atrrName, jPathOrMatcher, true, true)) {\n        obj[atrrName] = [attrMap[atrrName]];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options) {\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n\n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n\n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n      i += 2;\n      i = readPI(xmlData, i);\n      if (i.err) return i;\n    } else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n\n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n            //don't push into stack\n          } else {\n            tags.push({ tagName, tagStartPos });\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i + 1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else {\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          } else {\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if (isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  } else if (tags.length == 1) {\n    return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  } else if (tags.length > 0) {\n    return getErrorObject('InvalidXml', \"Invalid '\" +\n      JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n      \"' found.\", { line: 1, col: 1 });\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char) {\n  return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n    constructor(options) {\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n\n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData, validationOption) {\n        if (typeof xmlData !== \"string\" && xmlData.toString) {\n            xmlData = xmlData.toString();\n        } else if (typeof xmlData !== \"string\") {\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n\n        if (validationOption) {\n            if (validationOption === true) validationOption = {}; //validate with default options\n\n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n                throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n            }\n        }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options, orderedObjParser.matcher);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value) {\n        if (value.indexOf(\"&\") !== -1) {\n            throw new Error(\"Entity value can't have '&'\")\n        } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        } else if (value === \"&\") {\n            throw new Error(\"An entity with value '&' is not permitted\");\n        } else {\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n\n    // Pre-compile stopNode expressions for pattern matching\n    const stopNodeExpressions = [];\n    if (options.stopNodes && Array.isArray(options.stopNodes)) {\n        for (let i = 0; i < options.stopNodes.length; i++) {\n            const node = options.stopNodes[i];\n            if (typeof node === 'string') {\n                stopNodeExpressions.push(new Expression(node));\n            } else if (node instanceof Expression) {\n                stopNodeExpressions.push(node);\n            }\n        }\n    }\n\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n\n    return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n        throw new Error(\"Maximum nested tags exceeded\");\n    }\n\n    if (!Array.isArray(arr)) {\n        // Non-array values (e.g. string tag values) should be treated as text content\n        if (arr !== undefined && arr !== null) {\n            let text = arr.toString();\n            text = replaceEntitiesValue(text, options);\n            return text;\n        }\n        return \"\";\n    }\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if (tagName === undefined) continue;\n\n        // Extract attributes from \":@\" property\n        const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n        // Push tag to matcher WITH attributes\n        matcher.push(tagName, attrValues);\n\n        // Check if this is a stop node using Expression matching\n        const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        }\n\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n\n        // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n        const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n\n        // If this is a stopNode, get raw content without processing\n        let tagValue;\n        if (isStopNode) {\n            tagValue = getRawContent(tagObj[tagName], options);\n        } else {\n\n            tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n        }\n\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n\n        // Pop tag from matcher\n        matcher.pop();\n    }\n\n    return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n    if (!attrMap || options.ignoreAttributes) return null;\n\n    const attrValues = {};\n    let hasAttrs = false;\n\n    for (let attr in attrMap) {\n        if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n        // Remove the attribute prefix to get clean attribute name\n        const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n            ? attr.substr(options.attributeNamePrefix.length)\n            : attr;\n        attrValues[cleanAttrName] = attrMap[attr];\n        hasAttrs = true;\n    }\n\n    return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n    if (!Array.isArray(arr)) {\n        // Non-array values return as-is\n        if (arr !== undefined && arr !== null) {\n            return arr.toString();\n        }\n        return \"\";\n    }\n\n    let content = \"\";\n    for (let i = 0; i < arr.length; i++) {\n        const item = arr[i];\n        const tagName = propName(item);\n\n        if (tagName === options.textNodeName) {\n            // Raw text content - NO processing, NO entity replacement\n            content += item[tagName];\n        } else if (tagName === options.cdataPropName) {\n            // CDATA content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName === options.commentPropName) {\n            // Comment content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName && tagName[0] === \"?\") {\n            // Processing instruction - skip for stopNodes\n            continue;\n        } else if (tagName) {\n            // Nested tags within stopNode\n            // Recursively get raw content and reconstruct the tag\n            // For stopNodes, we don't process attributes either\n            const attStr = attr_to_str_raw(item[\":@\"], options);\n            const nestedContent = getRawContent(item[tagName], options);\n\n            if (!nestedContent || nestedContent.length === 0) {\n                content += `<${tagName}${attStr}/>`;\n            } else {\n                content += `<${tagName}${attStr}>${nestedContent}`;\n            }\n        }\n    }\n    return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            // For stopNodes, use raw value without processing\n            let attrVal = attrMap[attr];\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            let attrVal;\n\n            if (isStopNode) {\n                // For stopNodes, use raw value without any processing\n                attrVal = attrMap[attr];\n            } else {\n                // Normal processing: apply attributeValueProcessor and entity replacement\n                attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n                attrVal = replaceEntitiesValue(attrVal, options);\n            }\n\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n    if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n    for (let i = 0; i < stopNodeExpressions.length; i++) {\n        if (matcher.matches(stopNodeExpressions[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function (key, a) {\n    return a;\n  },\n  attributeValueProcessor: function (attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false,\n  maxNestedTags: 100,\n  jPath: true  // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n\n  // Convert old-style stopNodes for backward compatibility\n  // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n  // New syntax: \"..tag\" means \"tag anywhere in tree\"\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    this.options.stopNodes = this.options.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Convert old wildcard syntax to deep wildcard\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n\n  // Pre-compile stopNode expressions for pattern matching\n  this.stopNodeExpressions = [];\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    for (let i = 0; i < this.options.stopNodes.length; i++) {\n      const node = this.options.stopNodes[i];\n      if (typeof node === 'string') {\n        this.stopNodeExpressions.push(new Expression(node));\n      } else if (node instanceof Expression) {\n        this.stopNodeExpressions.push(node);\n      }\n    }\n  }\n\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function (/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function () {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function (jObj) {\n  if (this.options.preserveOrder) {\n    return buildFromOrderedJs(jObj, this.options);\n  } else {\n    if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n      jObj = {\n        [this.options.arrayNodeName]: jObj\n      }\n    }\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n    return this.j2x(jObj, 0, matcher).val;\n  }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n  let attrStr = '';\n  let val = '';\n  if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n    throw new Error(\"Maximum nested tags exceeded\");\n  }\n  // Get jPath based on option: string for backward compatibility, or Matcher for new features\n  const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n  // Check if current node is a stopNode (will be used for attribute encoding)\n  const isCurrentStopNode = this.checkStopNode(matcher);\n\n  for (let key in jObj) {\n    if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          // Check if this is a stopNode before building\n          matcher.push(key);\n          const isStopNode = this.checkStopNode(matcher);\n          matcher.pop();\n\n          if (isStopNode) {\n            // Build as raw content without encoding\n            const textValue = '' + jObj[key];\n            if (textValue === '') {\n              val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n            } else {\n              val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n        } else if (typeof item === 'object' && item !== null) {\n          const nestedContent = this.buildRawContent(item);\n          const nestedAttrs = this.buildAttributesForStopNode(item);\n          if (nestedContent === '') {\n            content += `<${key}${nestedAttrs}/>`;\n          } else {\n            content += `<${key}${nestedAttrs}>${nestedContent}`;\n          }\n        }\n      }\n    } else if (typeof value === 'object' && value !== null) {\n      // Nested object\n      const nestedContent = this.buildRawContent(value);\n      const nestedAttrs = this.buildAttributesForStopNode(value);\n      if (nestedContent === '') {\n        content += `<${key}${nestedAttrs}/>`;\n      } else {\n        content += `<${key}${nestedAttrs}>${nestedContent}`;\n      }\n    } else {\n      // Primitive value\n      content += `<${key}>${value}`;\n    }\n  }\n\n  return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n  if (!obj || typeof obj !== 'object') return '';\n\n  let attrStr = '';\n\n  // Check for attributesGroupName (when attributes are grouped)\n  if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n    const attrGroup = obj[this.options.attributesGroupName];\n    for (let attrKey in attrGroup) {\n      if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n      const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n        ? attrKey.substring(this.options.attributeNamePrefix.length)\n        : attrKey;\n      const val = attrGroup[attrKey];\n      if (val === true && this.options.suppressBooleanAttributes) {\n        attrStr += ' ' + cleanKey;\n      } else {\n        attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n      }\n    }\n  } else {\n    // Look for individual attributes\n    for (let key in obj) {\n      if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n      const attr = this.isAttribute(key);\n      if (attr) {\n        const val = obj[key];\n        if (val === true && this.options.suppressBooleanAttributes) {\n          attrStr += ' ' + attr;\n        } else {\n          attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n        }\n      }\n    }\n  }\n\n  return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n  if (val === \"\") {\n    if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  } else {\n\n    let tagEndExp = '' + val + tagEndExp);\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    } else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp);\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function (key) {\n  let closeTag = \"\";\n  if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n    if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n  } else if (this.options.suppressEmptyNode) { //empty\n    closeTag = \"/\";\n  } else {\n    closeTag = `>` + this.newLine;\n  } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` + this.newLine;\n  } else if (key[0] === \"?\") {//PI tag\n    return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n  } else {\n    // Normal processing: apply tagValueProcessor and entity replacement\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n\n    if (textValue === '') {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    } else {\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n        textValue +\n        ' 0 && this.options.processEntities) {\n    for (let i = 0; i < this.options.entities.length; i++) {\n      const entity = this.options.entities[i];\n      textValue = textValue.replace(entity.regex, entity.val);\n    }\n  }\n  return textValue;\n}\n\nfunction indentate(level) {\n  return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n  if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n    return name.substr(this.attrPrefixLen);\n  } else {\n    return false;\n  }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n    return getBuilder().build(namespace({\n        lockinfo: {\n            \"@_xmlns:d\": \"DAV:\",\n            lockscope: {\n                exclusive: {}\n            },\n            locktype: {\n                write: {}\n            },\n            owner: {\n                href: ownerHREF\n            }\n        }\n    }, \"d\"));\n}\nfunction getBuilder() {\n    return new XMLBuilder({\n        attributeNamePrefix: \"@_\",\n        format: true,\n        ignoreAttributes: false,\n        suppressEmptyNode: true\n    });\n}\nfunction getParser() {\n    return new XMLParser({\n        removeNSPrefix: true,\n        parseAttributeValue: true,\n        parseTagValue: true\n    });\n}\nfunction namespace(obj, ns) {\n    const copy = { ...obj };\n    for (const key in copy) {\n        if (!copy.hasOwnProperty(key)) {\n            continue;\n        }\n        if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n            copy[`${ns}:${key}`] = namespace(copy[key], ns);\n            delete copy[key];\n        }\n        else if (/^@_/.test(key) === false) {\n            copy[`${ns}:${key}`] = copy[key];\n            delete copy[key];\n        }\n    }\n    return copy;\n}\nexport function parseGenericResponse(xml) {\n    return getParser().parse(xml);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n    const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n    const headers = {\n        Accept: \"text/plain,application/xml\",\n        Timeout: timeout\n    };\n    if (refreshToken) {\n        headers.If = refreshToken;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"LOCK\",\n        headers,\n        data: generateLockXML(context.contactHref)\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const lockPayload = parseGenericResponse(responseData);\n    const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n    const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n    if (!token) {\n        const err = createErrorFromResponse(response, \"No lock token received: \");\n        throw err;\n    }\n    return {\n        token,\n        serverTimeout\n    };\n}\nexport async function unlock(context, path, token, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"UNLOCK\",\n        headers: {\n            \"Lock-Token\": token\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (response.status !== 204 && response.status !== 200) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"OPTIONS\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        throw error;\n    }\n    const davHeader = response.headers.get(\"DAV\") ?? \"\";\n    const compliance = davHeader.split(\",\").map(item => item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nexport function decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.js'\nimport DeleteComment from '../services/DeleteComment.js'\nimport EditComment from '../services/EditComment.js'\nimport NewComment from '../services/NewComment.js'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Edit an existing comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(resourceType, resourceId, commentId, message) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Delete a comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(resourceType, resourceId, commentId) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.js'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'\nimport client from './DavClient.js'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(resourceType, resourceId, message) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=70317f94&scoped=true\"\nimport script from \"./Comment.vue?vue&type=script&lang=js\"\nexport * from \"./Comment.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"70317f94\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.tag,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted && !_vm.isLimbo),expression:\"!deleted && !isLimbo\"}],tag:\"component\",staticClass:\"comment\",class:{ 'comment--loading': _vm.loading }},[_c('div',{staticClass:\"comment__side\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}})],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__body\"},[_c('div',{staticClass:\"comment__header\"},[_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconPencilOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,3345211262)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onDeleteWithUndo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconTrashCanOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,1034796883)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\\t\")])]:_c('NcActionButton',{on:{\"click\":_vm.onEditCancel},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('NcDateTime',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp,\"ignore-seconds\":true}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('form',{staticClass:\"comment__editor\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"comment__editor-group\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"label\":_vm.editor ? _vm.t('comments', 'New comment') : _vm.t('comments', 'Edit comment'),\"placeholder\":_vm.t('comments', 'Write a comment …'),\"model-value\":_vm.localMessage,\"user-data\":_vm.userData,\"aria-describedby\":\"tab-comments__editor-description\"},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('div',{staticClass:\"comment__submit\"},[_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\",\"type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,758946661)})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__editor-description\",attrs:{\"id\":\"tab-comments__editor-description\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', '@ for mentions, : for emoji, / for smart picker'))+\"\\n\\t\\t\\t\")])]):_c('NcRichText',{staticClass:\"comment__message\",class:{ 'comment__message--expanded': _vm.expanded },attrs:{\"text\":_vm.richContent.message,\"arguments\":_vm.richContent.mentions,\"use-markdown\":\"\"},nativeOn:{\"click\":function($event){return _vm.onExpand.apply(null, arguments)}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n    props: {\n        resourceId: {\n            type: Number,\n            required: true,\n        },\n        resourceType: {\n            type: String,\n            default: 'files',\n        },\n    },\n    data() {\n        return {\n            editorData: {\n                actorDisplayName: getCurrentUser().displayName,\n                actorId: getCurrentUser().uid,\n                key: 'editor',\n            },\n            userData: {},\n            currentResourceId: this.resourceId,\n        };\n    },\n    methods: {\n        /**\n         * Autocomplete `@mentions`\n         *\n         * @param search the query\n         * @param callback the callback to process the results with\n         */\n        async autoComplete(search, callback) {\n            const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n                params: {\n                    search,\n                    itemType: this.resourceType,\n                    itemId: this.currentResourceId,\n                    sorter: 'commenters|share-recipients',\n                    limit: loadState('comments', 'maxAutoCompleteResults'),\n                },\n            });\n            // Save user data so it can be used by the editor to replace mentions\n            data.ocs.data.forEach((user) => {\n                this.userData[user.id] = user;\n            });\n            return callback(Object.values(this.userData));\n        },\n        /**\n         * Make sure we have all mentions as Array of objects\n         *\n         * @param mentions the mentions list\n         */\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        genMentionsData(mentions) {\n            Object.values(mentions)\n                .flat()\n                .forEach((mention) => {\n                this.userData[mention.mentionId] = {\n                    // TODO: support groups\n                    icon: 'icon-user',\n                    id: mention.mentionId,\n                    label: mention.mentionDisplayName,\n                    source: 'users',\n                    primary: getCurrentUser()?.uid === mention.mentionId,\n                };\n            });\n            return this.userData;\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nfunction cancelableRequest(request) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport client from './DavClient.js';\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(resourceType, resourceId, date) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const readMarker = date.toUTCString();\n    return client.customRequest(resourcePath, {\n        method: 'PROPPATCH',\n        data: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n    });\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=6c8c157a&scoped=true\"\nimport script from \"./Comments.vue?vue&type=script&lang=js\"\nexport * from \"./Comments.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6c8c157a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.onVisibilityChange),expression:\"onVisibilityChange\"}],staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"editor\":true,\"user-data\":_vm.userData,\"resource-id\":_vm.currentResourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"name\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMessageReplyTextOutline')]},proxy:true}],null,false,326612300)}):_c('ul',_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"tag\":\"li\",\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"message\":comment.props.message,\"resource-id\":_vm.currentResourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),1),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"name\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,3663249556)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconRefresh')]},proxy:true}],null,false,2997625269)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { n, t } from '@nextcloud/l10n'\nimport { createPinia, PiniaVuePlugin } from 'pinia'\nimport Vue from 'vue'\nimport CommentsApp from '../views/Comments.vue'\nimport logger from '../logger.js'\n\nVue.use(PiniaVuePlugin)\n\n__webpack_nonce__ = getCSPNonce()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} resourceType the comments endpoint type\n\t * @param  {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(resourceType = 'files', options = {}) {\n\t\tconst pinia = createPinia()\n\n\t\t// Merge options and set `resourceType` property\n\t\toptions = {\n\t\t\t...options,\n\t\t\tpropsData: {\n\t\t\t\t...(options.propsData ?? {}),\n\t\t\t\tresourceType,\n\t\t\t},\n\t\t\tpinia,\n\t\t}\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from './logger.js'\nimport CommentsInstance from './services/CommentsInstance.js'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nlogger.debug('OCA.Comments.View initialized')\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tdisplay: flex;\\n\\tgap: 8px;\\n\\tpadding: 5px $comment-padding;\\n\\n\\t&__side {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tflex-direction: column;\\n\\t\\tcontainer-type: inline-size;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tmargin-inline-start: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\ttext-align: end;\\n\\t\\twhite-space: nowrap;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor-group {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__editor-description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-block: var(--default-grid-baseline);\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tbottom: 5px;\\n\\t\\tinset-inline-end: 0;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: normal;\\n\\t\\tmax-height: 200px;\\n\\t\\toverflow: auto;\\n\\t\\tscrollbar-gutter: stable;\\n\\t\\tscrollbar-width: thin;\\n\\t\\tmargin-top: -6px;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t\\t:deep(img) {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.comments {\\n\\tmin-height: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tflex: 1 0;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n    return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (isArray(list)) {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction 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; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? 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; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"428c2ff62c4b8b3c97fc\",\"4508\":\"bd9a6bf4d650882814a8\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"fa22a350943490669cfb\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7062;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7062: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(15256)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","assertError","err","isError","Error","obj","Object","prototype","toString","call","Layerr","constructor","errorOptionsOrMessage","messageText","args","arguments","options","shortMessage","length","cause","slice","join","assign","parseArguments","message","super","defineProperty","value","info","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","output","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","filePath","replaced","replace","encodeURIComponent","split","makePathAbsolute","pathStr","startsWith","normalisePath","normalisedPath","test","substr","extractURLPath","fullURL","urlPath","pathname","joinURL","parts","strArray","resultArray","TypeError","match","first","shift","i","component","push","str","normalize","reduce","nextPart","partIndex","generateDigestAuthHeader","digest","url","uri","indexOf","method","toUpperCase","qop","ncString","nc","ha1","algorithm","user","realm","pass","nonce","cnonce","ha1Hash","md5","toLowerCase","ha1Compute","username","password","ha2","digestResponse","authValues","response","opaque","authHeader","k","responseIndicatesDigestAuth","headers","get","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","EntityLevel","EncodingMode","fromBase64","text","base64","decode","generateBasicAuthHeader","encode","Map","fromCodePoint","codePointAt","root","WorkerGlobalScope","self","window","globalThis","fetch","bind","AuthType","ErrorCode","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","hasDigestAuth","createDigestContext","None","Password","Token","token","token_type","access_token","code","InvalidAuthType","Headers","Request","Response","HOT_PATCHER_TYPE","NOOP","createNewItem","original","methods","final","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","target","allowTargetOverrides","keys","forEach","foreignKey","hasOwnProperty","execute","key","item","result","_this","apply","sequence","isPatched","patch","opts","chain","patchInline","plugin","restore","setFinal","__patcher","isReactNative","TARGET","cloneShallow","getPrototypeOf","proto","isPlainObject","setPrototypeOf","merge","items","nextItem","mergeObjects","obj1","obj2","Array","isArray","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","header","lowerHeader","hasArrayBuffer","ArrayBuffer","objToString","isArrayBuffer","isBuffer","prepareRequestOptions","requestOptions","userOptions","finalOptions","data","signal","httpAgent","httpsAgent","_digest","withCredentials","async","request","requestStandard","ok","status","undefined","requestDigest","requestAuto","re","exec","uid","Math","floor","NONCE_CHARS","random","makeNonce","parseDigestAuth","response2","patcher","body","newHeaders","JSON","stringify","requestDataToFetchBody","credentials","agent","parsedURL","protocol","getFetchOptions","assertValidPattern","pattern","posixClasses","braceEscape","s","rangesToString","ranges","parseClass","glob","position","pos","charAt","negs","sawStart","uflag","escaping","negate","endPos","rangeStart","WHILE","c","cls","unip","u","neg","entries","sranges","snegs","windowsPathsNoEscape","types","Set","isExtglobType","has","isExtglobAST","adoptionMap","adoptionWithSpaceMap","adoptionAnyMap","usurpMap","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","parent","hasMagic","p","map","n","pop","pp","part","copyIn","toJSON","ret","isStart","unshift","isEnd","pl","clone","ast","opt","extDepth","maxDepth","maxExtglobRecursion","inBrace","braceStart","braceNeg","acc","noext","ext","depthAdd","substring","child","gc","includes","index","blank","splice","m","nt","iterations","done","fromGlob","toMMPattern","toRegExpSource","nocase","nocaseMagicOnly","flags","RegExp","_src","_glob","allowDot","dot","noEmpty","src","_","start","aps","needNoTrav","needNoDot","end","repeated","me","bodyDotAllowed","_hasMagic","filter","inStar","needUflag","consumed","magic","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","f","endsWith","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","$0","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","len","defaultPlatform","process","env","__MINIMATCH_TESTING_PLATFORM__","platform","sep","GLOBSTAR","Symbol","a","b","defaults","def","orig","unescape","escape","makeRe","braceExpand","list","nobrace","mm","nonull","globMagic","set","nonegate","comment","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","maxGlobstarRecursion","regexp","allowWindowsEscape","make","magicalBraces","debug","parseNegate","console","error","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","parse","noglobstar","j","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","prev","levelTwoFileOptimize","didSomething","dd","gss","next","p2","other","splin","matched","partsMatch","emptyGSMatch","ai","bi","which","negateOffset","matchOne","file","fileStartIndex","patternStartIndex","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fileIndex","patternIndex","firstgs","lastgs","lastIndexOf","head","tail","fileHead","fileTailMatch","tailStart","sawSome","bodySegments","currentBody","nonGsParts","nonGsPartsSums","fileLength","bodyIndex","globStarDepth","sawTail","bs","after","sub","fi","pi","fl","hit","fastTest","Reflect","twoStar","add","open","close","ex","ff","filename","matchBase","flipNegate","createErrorFromResponse","prefix","statusText","handleResponseCode","processResponsePayload","isDetailed","nameStartChar","regexName","getAllMatches","string","regex","matches","allmatches","startIndex","lastIndex","isName","DANGEROUS_PROPERTY_NAMES","criticalProperties","defaultOnDangerousProperty","defaultOptions","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","captureMetaData","maxNestedTags","strictReservedNames","onDangerousProperty","validatePropertyName","propertyName","optionName","normalized","some","dangerous","normalizeProcessEntities","enabled","maxEntitySize","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","maxEntityCount","allowedTags","tagFilter","buildOptions","built","propertyNameOptions","node","METADATA_SYMBOL","XmlNode","tagname","create","addChild","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","xmlData","entities","entityCount","angleBracketsCount","hasBody","exp","hasSeq","entityName","readEntityExp","escaped","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","startChar","elementName","contentModel","trim","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","hexRegex","numRegex","consider","decimalPoint","eNotationRegx","Matcher","separator","path","siblingStacks","attrValues","namespace","values","currentLevel","siblings","siblingKey","counter","count","tag","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","includeNamespace","toArray","reset","expression","segments","hasDeepWildcard","_matchWithDeepWildcard","_matchSimple","segment","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","attrValue","actualValue","positionValue","snapshot","Expression","_parse","_hasDeepWildcard","seg","_hasAttributeCondition","_hasPositionSelector","currentPart","_parseSegment","bracketContent","withoutBrackets","bracketMatch","content","tagAndPosition","nsIndex","positionMatch","colonIndex","tagPart","posPart","eqIndex","nthMatch","parseInt","hasAttributeCondition","hasPositionSelector","extractRawAttributes","prefixedAttrs","rawAttrs","extractNamespace","rawTagName","ns","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","entityExpansionCount","currentExpandedLength","matcher","isCurrentNodeStopNode","stopNodeExpressions","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","jPathOrMatcher","newval","parseValue","tags","attrsRegx","attrStr","rawAttrsForMatcher","oldVal","parsedVal","jPathStr","aName","sanitizeName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","lastTagName","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","max","min","lastTag","isSelfClosing","tagContent","entityConfig","entity","lengthBefore","parentNode","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","parse_int","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","toNumber","base","codePoint","fn","newTagName","stripAttributePrefix","prettify","compress","arr","compressedObj","tagObj","property","propName","isLeaf","isLeafTag","assignAttributes","attrMap","atrrName","rawAttrName","propCount","isWhiteSpace","char","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","readAttributeStr","tagClosed","validAttrStrRegxp","validateAttributeString","attrNames","getPositionFromMatch","validateAttrName","validateAmpersand","validateNumberAmpersand","lineNumber","msg","line","col","validateTagName","lines","XMLParser","validationOption","tagFound","reachedRoot","tagStartPos","closingTag","attrStrStart","isValid","otg","openPos","afterAmp","t","validate","orderedObjParser","orderedResult","addEntity","PropertyType","displaynameTagParser","getPropertyOfType","prop","Original","parseXML","xml","attributeParsers","tagParsers","Promise","resolve","multistatus","normaliseResponse","normaliseResult","processor","tagValue","getParser","prepareFileFromProps","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","resourceType","getcontenttype","mimeType","getetag","etag","collection","stat","basename","lastmod","mime","displayname","translateDiskSpace","getStat","details","remoteURL","Accept","Depth","responseData","responseItem","propstat","e","statusLine","statusCodeStr","statusCode","parseStat","parsing","createDirectory","dirPath","recursive","paths","directory","currentPath","getAllDirectories","sort","creating","testPath","createDirectoryRecursively","TRANSFORM_RETAIN_FORMAT","v","toXml","jArray","indentation","format","indentBy","arrToStr","xmlStr","isPreviousElementTag","extractAttributeValues","isStopNode","checkStopNode","tagText","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","getRawContent","suppressUnpairedNode","suppressEmptyNode","hasAttrs","attr","attr_to_str_raw","nestedContent","attrVal","suppressBooleanAttributes","textValue","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","extractAttributes","rawContent","buildRawContent","buildAttributesForStopNode","buildObjectNode","j2x","buildTextValNode","repeat","jObj","arrayNodeName","isCurrentStopNode","Date","buildAttrPairStr","closeTag","arrLen","listTagVal","listTagAttr","Ks","L","attrGroup","attrKey","nestedAttrs","cleanKey","tagEndExp","piClosingChar","generateLockXML","ownerHREF","lockinfo","lockscope","exclusive","locktype","write","owner","href","copy","DEFAULT_TIMEOUT","getDAVCompliance","compliance","server","DEFAULT_CONTACT_HREF","getRootPath","generateRemoteUrl","client","authTypeRaw","remoteBasePath","contactHref","remotePath","copyFile","destination","Destination","Overwrite","overwrite","shallow","createReadStream","outStream","PassThroughStream","range","rangeHeader","Range","responseError","callback","setTimeout","getFileStream","then","stream","pipe","catch","emit","createWriteStream","writeStream","maxRedirects","customRequest","deleteFile","exists","getDirectoryContents","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","responseItems","nodes","normaliseHREF","decodeURIComponent","getDirectoryFiles","processGlobFilter","getFileContents","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","Buffer","from","getFileContentsBuffer","getFileDownloadLink","authContents","LinkUnsupportedAuthType","getFileUploadLink","getHeaders","getQuota","quotaUsed","quotaAvail","used","available","parseQuota","lock","refreshToken","timeout","Timeout","If","lockPayload","serverTimeout","moveFile","destinationFilename","putFileContents","contentLength","Readable","byteLength","DataTypeNoLength","calculateDataLength","partialUpdateFileContents","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","searchArbiter","responseText","results","truncated","parseSearch","getSearch","setHeaders","unlock","registerAttributeParser","parser","registerTagParser","createClient","requesttoken","onRequestTokenUpdate","getRequestToken","decodeHtmlEntities","passes","DOMParser","decoded","parseFromString","documentElement","textContent","useDeletedCommentLimbo","defineStore","state","idsInLimbo","actions","addId","id","removeId","checkForId","resourceId","required","deleted","editing","loading","computed","mapStores","onEdit","onEditCancel","updateLocalMessage","onEditComment","commentId","commentPath","EditComment","logger","showError","onDeleteWithUndo","deletedCommentLimboStore","timeOutDelete","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","newComment","resourcePath","axios","post","actorDisplayName","getCurrentUser","displayName","actorId","actorType","creationDateTime","toUTCString","objectType","verb","NewComment","localMessage","components","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","NcRichContenteditable","NcRichText","mixins","CommentMixin","inheritAttrs","editor","Boolean","autoComplete","Function","userData","expanded","submitted","isOwnComment","richContent","mentions","NcUserBubble","label","primary","isEmptyMessage","timestamp","isLimbo","watch","beforeMount","onSubmit","$nextTick","$refs","$el","focus","onExpand","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","directives","rawName","class","scopedSlots","_u","proxy","preventDefault","ref","nativeOn","defineComponent","editorData","currentResourceId","generateOcsUrl","params","itemType","itemId","sorter","limit","loadState","ocs","genMentionsData","flat","mention","mentionId","icon","mentionDisplayName","source","getComments","datetime","toISOString","offset","Comment","NcEmptyContent","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","comments","cancelRequest","hasComments","isFirstLoading","onVisibilityChange","isVisible","date","readMarker","markCommentsAsRead","update","resetState","onScrollBottomReached","abort","controller","AbortController","cancelableRequest","findIndex","_l","$set","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","mixin","OCA","Comments","View","pinia","createPinia","propsData","extend","CommentsApp","balanced","maybeMatch","r","pre","reg","begs","beg","left","right","module","exports","freeGlobal","global","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","input","buffer","padding","charCodeAt","bitStorage","bitCounter","fromCharCode","expand","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseCommaParts","postParts","embrace","isPadded","el","lte","y","gte","isTop","expansions","expansion","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","incr","abs","pad","need","z","$apply","$call","$reflectApply","actualApply","$TypeError","$actualApply","setFunctionLength","$defineProperty","callBindBasic","applyBind","originalFunction","func","adjustedLength","GetIntrinsic","$indexOf","allowMissing","intrinsic","___CSS_LOADER_EXPORT___","$SyntaxError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","hasProtoAccessor","callBind","gOPD","__proto__","$Object","$getPrototypeOf","EvalError","RangeError","ReferenceError","SyntaxError","URIError","isCallable","toStr","iterator","thisArg","receiver","array","forEachArray","forEachString","forEachObject","concatty","that","bound","arrLike","slicy","boundLength","boundArgs","joiny","Empty","implementation","cached","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","pow","round","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","encodeURI","eval","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","parseFloat","Proxy","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","reflectGetProto","originalGetProto","getDunderProto","O","getOwnPropertyDescriptor","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","toStringTag","$hasOwn","http","https","validateParams","cb","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","document","all","strClass","isFnRegex","safeRegexTest","getGeneratorFunction","GeneratorFunction","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","whichTypedArray","$isNaN","_typeof","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","construct","sham","_isNativeReflectConstruct","instance","o","ObjectPrototypeMutationError","_Error","Constructor","_classCallCheck","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","_loop","idx","currentSegment","remainingSegments","pathToHere","_ret","isLastSegment","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","style","quoteStyle","quoteChar","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","baseIndent","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attributes","childNodes","xs","singleLineValues","indentedJoin","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","protoTag","stringTag","l","remaining","trailer","quoteRE","lowbyte","lineJoiner","isArr","symMap","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","relative","to","fromParts","toParts","samePartsLength","outputParts","_makeLong","dirname","dir","extname","pathObject","isObject","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","basicToDigit","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","out","basic","oldi","w","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","utils","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","numberStr","parseArrayValue","currentArrayLength","parseKeys","givenKey","valuesParsed","segmentContent","splitKeyIntoSegments","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isValidArrayIndex","markOverflow","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","existing","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","step","findFlag","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","defaultEncoder","kind","mapped","nextIndex","sourceKeys","combined","mergeTarget","targetItem","keyNum","pairs","query","port","isRegex","define","hasDescriptors","functionLengthIsConfigurable","functionLengthIsWritable","listGetNode","isDelete","curr","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","host","hostname","req","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","XDomainRequest","checkTypeSupport","responseType","isFunction","ReadableStream","writableStream","WritableStream","abortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","Blob","headersList","keyName","_fetchAbortController","requestTimeout","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","statusValid","_write","chunk","encoding","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusMessage","reject","_resumeFetch","pipeTo","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","_charset","charsetMatch","_read","newData","alloc","MSStreamReader","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","this_len","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","enc","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","wrap","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","rState","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","origin","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","working","isDataViewToString","isDataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","cur","reduceToSingleString","ar","d","pid","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","availableTypedArrays","g","typedArrays","cache","typedArray","superProto","getter","trySlices","tryTypedArrays","possibleNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","__esModule","definition","chunkId","promises","script","needAttach","scripts","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"comments-comments-app.js?v=22e3bd42cb6cda3042da","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?87e1","webpack:///nextcloud/node_modules/vue-material-design-icons/MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Matcher.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Expression.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/fxb.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/apps/comments/src/utils/decodeHtmlEntities.js","webpack:///nextcloud/apps/comments/src/store/deletedCommentLimbo.js","webpack:///nextcloud/apps/comments/src/mixins/CommentMixin.js","webpack:///nextcloud/apps/comments/src/services/EditComment.js","webpack:///nextcloud/apps/comments/src/services/DeleteComment.js","webpack:///nextcloud/apps/comments/src/services/NewComment.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/comments/src/components/Comment.vue","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7275","webpack://nextcloud/./apps/comments/src/components/Comment.vue?7f26","webpack://nextcloud/./apps/comments/src/components/Comment.vue?d1f7","webpack:///nextcloud/apps/comments/src/mixins/CommentView.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/apps/comments/src/utils/cancelableRequest.js","webpack:///nextcloud/apps/comments/src/views/Comments.vue","webpack:///nextcloud/apps/comments/src/services/ReadComments.ts","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/comments/src/views/Comments.vue?4d55","webpack://nextcloud/./apps/comments/src/views/Comments.vue?f45b","webpack://nextcloud/./apps/comments/src/views/Comments.vue?0e41","webpack:///nextcloud/apps/comments/src/services/CommentsInstance.js","webpack:///nextcloud/apps/comments/src/comments-app.js","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/actualApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/applyBind.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionCall.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/reflectApply.js","webpack:///nextcloud/node_modules/call-bind/index.js","webpack:///nextcloud/node_modules/call-bound/index.js","webpack:///nextcloud/apps/comments/src/components/Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/comments/src/views/Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true","webpack:///nextcloud/node_modules/define-data-property/index.js","webpack:///nextcloud/node_modules/dunder-proto/get.js","webpack:///nextcloud/node_modules/es-define-property/index.js","webpack:///nextcloud/node_modules/es-errors/eval.js","webpack:///nextcloud/node_modules/es-errors/index.js","webpack:///nextcloud/node_modules/es-errors/range.js","webpack:///nextcloud/node_modules/es-errors/ref.js","webpack:///nextcloud/node_modules/es-errors/syntax.js","webpack:///nextcloud/node_modules/es-errors/type.js","webpack:///nextcloud/node_modules/es-errors/uri.js","webpack:///nextcloud/node_modules/es-object-atoms/index.js","webpack:///nextcloud/node_modules/for-each/index.js","webpack:///nextcloud/node_modules/function-bind/implementation.js","webpack:///nextcloud/node_modules/function-bind/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/get-intrinsic/index.js","webpack:///nextcloud/node_modules/get-proto/Object.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/Reflect.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/index.js","webpack:///nextcloud/node_modules/gopd/gOPD.js","webpack:///nextcloud/node_modules/gopd/index.js","webpack:///nextcloud/node_modules/has-property-descriptors/index.js","webpack:///nextcloud/node_modules/has-symbols/index.js","webpack:///nextcloud/node_modules/has-symbols/shams.js","webpack:///nextcloud/node_modules/has-tostringtag/shams.js","webpack:///nextcloud/node_modules/hasown/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-callable/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/is-typed-array/index.js","webpack:///nextcloud/node_modules/math-intrinsics/abs.js","webpack:///nextcloud/node_modules/math-intrinsics/floor.js","webpack:///nextcloud/node_modules/math-intrinsics/isNaN.js","webpack:///nextcloud/node_modules/math-intrinsics/max.js","webpack:///nextcloud/node_modules/math-intrinsics/min.js","webpack:///nextcloud/node_modules/math-intrinsics/pow.js","webpack:///nextcloud/node_modules/math-intrinsics/round.js","webpack:///nextcloud/node_modules/math-intrinsics/sign.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/possible-typed-array-names/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/set-function-length/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/which-typed-array/index.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/available-typed-arrays/index.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./MessageReplyTextOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./MessageReplyTextOutline.vue?vue&type=template&id=5d6c4e92\"\nimport script from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\nexport * from \"./MessageReplyTextOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon message-reply-text-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M9 11H18V13H9V11M18 7H6V9H18V7M22 4V22L18 18H4C2.9 18 2 17.11 2 16V4C2 2.9 2.9 2 4 2H20C21.1 2 22 2.89 22 4M20 4H4V16H18.83L20 17.17V4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function assertError(err) {\n    if (!isError(err)) {\n        throw new Error(\"Parameter was not an error\");\n    }\n}\nexport function isError(err) {\n    return ((!!err &&\n        typeof err === \"object\" &&\n        objectToString(err) === \"[object Error]\") ||\n        err instanceof Error);\n}\nfunction objectToString(obj) {\n    return Object.prototype.toString.call(obj);\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n    constructor(errorOptionsOrMessage, messageText) {\n        const args = [...arguments];\n        const { options, shortMessage } = parseArguments(args);\n        let message = shortMessage;\n        if (options.cause) {\n            message = `${message}: ${options.cause.message}`;\n        }\n        super(message);\n        this.message = message;\n        if (options.name && typeof options.name === \"string\") {\n            this.name = options.name;\n        }\n        else {\n            this.name = getGlobalName();\n        }\n        if (options.cause) {\n            Object.defineProperty(this, \"_cause\", { value: options.cause });\n        }\n        Object.defineProperty(this, \"_info\", { value: {} });\n        if (options.info && typeof options.info === \"object\") {\n            Object.assign(this._info, options.info);\n        }\n        if (Error.captureStackTrace) {\n            const ctor = options.constructorOpt || this.constructor;\n            Error.captureStackTrace(this, ctor);\n        }\n    }\n    static cause(err) {\n        assertError(err);\n        if (!err._cause)\n            return null;\n        return isError(err._cause)\n            ? err._cause\n            : null;\n    }\n    static fullStack(err) {\n        assertError(err);\n        const cause = Layerr.cause(err);\n        if (cause) {\n            return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n        }\n        return err.stack ?? \"\";\n    }\n    static info(err) {\n        assertError(err);\n        const output = {};\n        const cause = Layerr.cause(err);\n        if (cause) {\n            Object.assign(output, Layerr.info(cause));\n        }\n        if (err._info) {\n            Object.assign(output, err._info);\n        }\n        return output;\n    }\n    toString() {\n        let output = this.name ||\n            this.constructor.name ||\n            this.constructor.prototype.name;\n        if (this.message) {\n            output = `${output}: ${this.message}`;\n        }\n        return output;\n    }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n    let options, shortMessage = \"\";\n    if (args.length === 0) {\n        options = {};\n    }\n    else if (isError(args[0])) {\n        options = {\n            cause: args[0],\n        };\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (args[0] && typeof args[0] === \"object\") {\n        options = Object.assign({}, args[0]);\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (typeof args[0] === \"string\") {\n        options = {};\n        shortMessage = shortMessage = args.join(\" \") || \"\";\n    }\n    else {\n        throw new Error(\"Invalid arguments passed to Layerr\");\n    }\n    return {\n        options,\n        shortMessage,\n    };\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n    return __name;\n}\nexport function setGlobalName(name = null) {\n    __name = name ?? NAME;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n    try {\n        const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n        const formatted = encodeURIComponent(replaced);\n        return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed encoding path\");\n    }\n}\nexport function getAllDirectories(directory) {\n    if (!directory || directory === \"/\")\n        return [];\n    let currentPath = directory;\n    const output = [];\n    do {\n        output.push(currentPath);\n        currentPath = path.dirname(currentPath);\n    } while (currentPath && currentPath !== \"/\");\n    return output;\n}\nexport function makePathAbsolute(pathStr) {\n    return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n    let normalisedPath = pathStr;\n    if (normalisedPath[0] !== \"/\") {\n        normalisedPath = \"/\" + normalisedPath;\n    }\n    if (/^.+\\/$/.test(normalisedPath)) {\n        normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n    }\n    return normalisedPath;\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n    const url = new URL(fullURL);\n    let urlPath = url.pathname;\n    if (urlPath.length <= 0) {\n        urlPath = \"/\";\n    }\n    return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n    return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n        if (partIndex === 0 ||\n            nextPart !== \"/\" ||\n            (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n            output.push(nextPart);\n        }\n        return output;\n    }, []));\n}\nexport function normaliseHREF(href) {\n    try {\n        const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n        return normalisedHref;\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed normalising HREF\");\n    }\n}\n","function normalize (strArray) {\n  var resultArray = [];\n  if (strArray.length === 0) { return ''; }\n\n  if (typeof strArray[0] !== 'string') {\n    throw new TypeError('Url must be a string. Received ' + strArray[0]);\n  }\n\n  // If the first part is a plain protocol, we combine it with the next part.\n  if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n    var first = strArray.shift();\n    strArray[0] = first + strArray[0];\n  }\n\n  // There must be two or three slashes in the file protocol, two slashes in anything else.\n  if (strArray[0].match(/^file:\\/\\/\\//)) {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n  } else {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n  }\n\n  for (var i = 0; i < strArray.length; i++) {\n    var component = strArray[i];\n\n    if (typeof component !== 'string') {\n      throw new TypeError('Url must be a string. Received ' + component);\n    }\n\n    if (component === '') { continue; }\n\n    if (i > 0) {\n      // Removing the starting slashes for each component but the first.\n      component = component.replace(/^[\\/]+/, '');\n    }\n    if (i < strArray.length - 1) {\n      // Removing the ending slashes for each component but the last.\n      component = component.replace(/[\\/]+$/, '');\n    } else {\n      // For the last component we will combine multiple slashes to a single one.\n      component = component.replace(/[\\/]+$/, '/');\n    }\n\n    resultArray.push(component);\n\n  }\n\n  var str = resultArray.join('/');\n  // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n  // remove trailing slash before parameters or hash\n  str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n  // replace ? in parameters with &\n  var parts = str.split('?');\n  str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n  return str;\n}\n\nexport default function urlJoin() {\n  var input;\n\n  if (typeof arguments[0] === 'object') {\n    input = arguments[0];\n  } else {\n    input = [].slice.call(arguments);\n  }\n\n  return normalize(input);\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n    return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n    const url = options.url.replace(\"//\", \"\");\n    const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n    const method = options.method ? options.method.toUpperCase() : \"GET\";\n    const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n    const ncString = `00000000${digest.nc}`.slice(-8);\n    const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n    const ha2 = md5(`${method}:${uri}`);\n    const digestResponse = qop\n        ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n        : md5(`${ha1}:${digest.nonce}:${ha2}`);\n    const authValues = {\n        username: digest.username,\n        realm: digest.realm,\n        nonce: digest.nonce,\n        uri,\n        qop,\n        response: digestResponse,\n        nc: ncString,\n        cnonce: digest.cnonce,\n        algorithm: digest.algorithm,\n        opaque: digest.opaque\n    };\n    const authHeader = [];\n    for (const k in authValues) {\n        if (authValues[k]) {\n            if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n                authHeader.push(`${k}=${authValues[k]}`);\n            }\n            else {\n                authHeader.push(`${k}=\"${authValues[k]}\"`);\n            }\n        }\n    }\n    return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n    let uid = \"\";\n    for (let i = 0; i < NONCE_SIZE; ++i) {\n        uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n    }\n    return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n    const isDigest = responseIndicatesDigestAuth(response);\n    if (!isDigest) {\n        return false;\n    }\n    const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n    for (;;) {\n        const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n        const match = re.exec(authHeader);\n        if (!match) {\n            break;\n        }\n        _digest[match[1]] = match[2] || match[3];\n    }\n    _digest.nc += 1;\n    _digest.cnonce = makeNonce();\n    return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n    const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n    return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n    const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n    if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n        return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n    }\n    return ha1Hash;\n}\n","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n    /** Support only XML entities. */\n    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n    /** Support HTML entities, which are a superset of XML entities. */\n    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n    /**\n     * The output is UTF-8 encoded. Only characters that need escaping within\n     * XML will be escaped.\n     */\n    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n    /**\n     * The output consists only of ASCII characters. Characters that need\n     * escaping within HTML, and characters that aren't ASCII characters will\n     * be escaped.\n     */\n    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n    /**\n     * Encode all characters that have an equivalent entity, as well as all\n     * characters that are not ASCII characters.\n     */\n    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n    /**\n     * Encode all characters that have to be escaped in HTML attributes,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n    /**\n     * Encode all characters that have to be escaped in HTML text,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n    const level = typeof options === \"number\" ? options : options.level;\n    if (level === EntityLevel.HTML) {\n        const mode = typeof options === \"object\" ? options.mode : undefined;\n        return decodeHTML(input, mode);\n    }\n    return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n    var _a;\n    const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n    (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n    return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n    const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n    switch (mode) {\n        case EncodingMode.UTF8: {\n            return escapeUTF8(input);\n        }\n        case EncodingMode.Attribute: {\n            return escapeAttribute(input);\n        }\n        case EncodingMode.Text: {\n            return escapeText(input);\n        }\n        case EncodingMode.ASCII: {\n            return level === EntityLevel.HTML\n                ? encodeNonAsciiHTML(input)\n                : encodeXML(input);\n        }\n        // eslint-disable-next-line unicorn/no-useless-switch-case\n        case EncodingMode.Extensive:\n        default: {\n            return level === EntityLevel.HTML\n                ? encodeHTML(input)\n                : encodeXML(input);\n        }\n    }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n    if (isWeb()) {\n        const txt = document.createElement(\"textarea\");\n        txt.innerHTML = text;\n        return txt.value;\n    }\n    return decodeHTML(text);\n}\nexport function fromBase64(text) {\n    return base64.decode(text);\n}\nexport function toBase64(text) {\n    return base64.encode(text);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n    const encoded = toBase64(`${username}:${password}`);\n    return `Basic ${encoded}`;\n}\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [39, \"'\"],\n    [60, \"<\"],\n    [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&\"],\n    [60, \"<\"],\n    [62, \">\"],\n    [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n    self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n    ? self\n    : typeof window !== \"undefined\"\n        ? window\n        : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n    AuthType[\"Auto\"] = \"auto\";\n    AuthType[\"Digest\"] = \"digest\";\n    AuthType[\"None\"] = \"none\";\n    AuthType[\"Password\"] = \"password\";\n    AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n    ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n    ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n    ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n    ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n    ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n    switch (context.authType) {\n        case AuthType.Auto:\n            if (username && password) {\n                context.headers.Authorization = generateBasicAuthHeader(username, password);\n            }\n            break;\n        case AuthType.Digest:\n            context.digest = createDigestContext(username, password, ha1);\n            break;\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password:\n            context.headers.Authorization = generateBasicAuthHeader(username, password);\n            break;\n        case AuthType.Token:\n            context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n            break;\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.InvalidAuthType\n                }\n            }, `Invalid auth type: ${context.authType}`);\n    }\n}\n","export function generateTokenAuthHeader(token) {\n    return `${token.token_type} ${token.access_token}`;\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n    return {\n        original: method,\n        methods: [method],\n        final: false\n    };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n    constructor() {\n        this._configuration = {\n            registry: {},\n            getEmptyAction: \"null\"\n        };\n        this.__type__ = HOT_PATCHER_TYPE;\n    }\n    /**\n     * Configuration object reference\n     * @readonly\n     */\n    get configuration() {\n        return this._configuration;\n    }\n    /**\n     * The action to take when a non-set method is requested\n     * Possible values: null/throw\n     */\n    get getEmptyAction() {\n        return this.configuration.getEmptyAction;\n    }\n    set getEmptyAction(newAction) {\n        this.configuration.getEmptyAction = newAction;\n    }\n    /**\n     * Control another hot-patcher instance\n     * Force the remote instance to use patched methods from calling instance\n     * @param target The target instance to control\n     * @param allowTargetOverrides Allow the target to override patched methods on\n     * the controller (default is false)\n     * @returns Returns self\n     * @throws {Error} Throws if the target is invalid\n     */\n    control(target, allowTargetOverrides = false) {\n        if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n            throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n        }\n        Object.keys(target.configuration.registry).forEach(foreignKey => {\n            if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n                if (allowTargetOverrides) {\n                    this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n                }\n            }\n            else {\n                this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n            }\n        });\n        target._configuration = this.configuration;\n        return this;\n    }\n    /**\n     * Execute a patched method\n     * @param key The method key\n     * @param args Arguments to pass to the method (optional)\n     * @see HotPatcher#get\n     * @returns The output of the called method\n     */\n    execute(key, ...args) {\n        const method = this.get(key) || NOOP;\n        return method(...args);\n    }\n    /**\n     * Get a method for a key\n     * @param key The method key\n     * @returns Returns the requested function or null if the function\n     * does not exist and the host is configured to return null (and not throw)\n     * @throws {Error} Throws if the configuration specifies to throw and the method\n     * does not exist\n     * @throws {Error} Throws if the `getEmptyAction` value is invalid\n     */\n    get(key) {\n        const item = this.configuration.registry[key];\n        if (!item) {\n            switch (this.getEmptyAction) {\n                case \"null\":\n                    return null;\n                case \"throw\":\n                    throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n                default:\n                    throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n            }\n        }\n        return sequence(...item.methods);\n    }\n    /**\n     * Check if a method has been patched\n     * @param key The function key\n     * @returns True if already patched\n     */\n    isPatched(key) {\n        return !!this.configuration.registry[key];\n    }\n    /**\n     * Patch a method name\n     * @param key The method key to patch\n     * @param method The function to set\n     * @param opts Patch options\n     * @returns Returns self\n     */\n    patch(key, method, opts = {}) {\n        const { chain = false } = opts;\n        if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n            throw new Error(`Failed patching '${key}': Method marked as being final`);\n        }\n        if (typeof method !== \"function\") {\n            throw new Error(`Failed patching '${key}': Provided method is not a function`);\n        }\n        if (chain) {\n            // Add new method to the chain\n            if (!this.configuration.registry[key]) {\n                // New key, create item\n                this.configuration.registry[key] = createNewItem(method);\n            }\n            else {\n                // Existing, push the method\n                this.configuration.registry[key].methods.push(method);\n            }\n        }\n        else {\n            // Replace the original\n            if (this.isPatched(key)) {\n                const { original } = this.configuration.registry[key];\n                this.configuration.registry[key] = Object.assign(createNewItem(method), {\n                    original\n                });\n            }\n            else {\n                this.configuration.registry[key] = createNewItem(method);\n            }\n        }\n        return this;\n    }\n    /**\n     * Patch a method inline, execute it and return the value\n     * Used for patching contents of functions. This method will not apply a patched\n     * function if it has already been patched, allowing for external overrides to\n     * function. It also means that the function is cached so that it is not\n     * instantiated every time the outer function is invoked.\n     * @param key The function key to use\n     * @param method The function to patch (once, only if not patched)\n     * @param args Arguments to pass to the function\n     * @returns The output of the patched function\n     * @example\n     *  function mySpecialFunction(a, b) {\n     *      return hotPatcher.patchInline(\"func\", (a, b) => {\n     *          return a + b;\n     *      }, a, b);\n     *  }\n     */\n    patchInline(key, method, ...args) {\n        if (!this.isPatched(key)) {\n            this.patch(key, method);\n        }\n        return this.execute(key, ...args);\n    }\n    /**\n     * Patch a method (or methods) in sequential-mode\n     * See `patch()` with the option `chain: true`\n     * @see patch\n     * @param key The key to patch\n     * @param methods The methods to patch\n     * @returns Returns self\n     */\n    plugin(key, ...methods) {\n        methods.forEach(method => {\n            this.patch(key, method, { chain: true });\n        });\n        return this;\n    }\n    /**\n     * Restore a patched method if it has been overridden\n     * @param key The method key\n     * @returns Returns self\n     */\n    restore(key) {\n        if (!this.isPatched(key)) {\n            throw new Error(`Failed restoring method: No method present for key: ${key}`);\n        }\n        else if (typeof this.configuration.registry[key].original !== \"function\") {\n            throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n        }\n        this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n        return this;\n    }\n    /**\n     * Set a method as being final\n     * This sets a method as having been finally overridden. Attempts at overriding\n     * again will fail with an error.\n     * @param key The key to make final\n     * @returns Returns self\n     */\n    setFinal(key) {\n        if (!this.configuration.registry.hasOwnProperty(key)) {\n            throw new Error(`Failed marking '${key}' as final: No method found for key`);\n        }\n        this.configuration.registry[key].final = true;\n        return this;\n    }\n}\n","export function sequence(...methods) {\n    if (methods.length === 0) {\n        throw new Error(\"Failed creating sequence: No functions provided\");\n    }\n    return function __executeSequence(...args) {\n        let result = args;\n        const _this = this;\n        while (methods.length > 0) {\n            const method = methods.shift();\n            result = [method.apply(_this, result)];\n        }\n        return result[0];\n    };\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n    if (!__patcher) {\n        __patcher = new HotPatcher();\n    }\n    return __patcher;\n}\n","export function isReactNative() {\n    return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n    return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","export function cloneShallow(obj) {\n    return isPlainObject(obj)\n        ? Object.assign({}, obj)\n        : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n    if (typeof obj !== \"object\" ||\n        obj === null ||\n        Object.prototype.toString.call(obj) != \"[object Object]\") {\n        // Not an object\n        return false;\n    }\n    if (Object.getPrototypeOf(obj) === null) {\n        return true;\n    }\n    let proto = obj;\n    // Find the prototype\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n    let output = null, items = [...args];\n    while (items.length > 0) {\n        const nextItem = items.shift();\n        if (!output) {\n            output = cloneShallow(nextItem);\n        }\n        else {\n            output = mergeObjects(output, nextItem);\n        }\n    }\n    return output;\n}\nfunction mergeObjects(obj1, obj2) {\n    const output = cloneShallow(obj1);\n    Object.keys(obj2).forEach(key => {\n        if (!output.hasOwnProperty(key)) {\n            output[key] = obj2[key];\n            return;\n        }\n        if (Array.isArray(obj2[key])) {\n            output[key] = Array.isArray(output[key])\n                ? [...output[key], ...obj2[key]]\n                : [...obj2[key]];\n        }\n        else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n            output[key] =\n                typeof output[key] === \"object\" && !!output[key]\n                    ? mergeObjects(output[key], obj2[key])\n                    : cloneShallow(obj2[key]);\n        }\n        else {\n            output[key] = obj2[key];\n        }\n    });\n    return output;\n}\n","export function convertResponseHeaders(headers) {\n    const output = {};\n    for (const key of headers.keys()) {\n        output[key] = headers.get(key);\n    }\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n    return (hasArrayBuffer &&\n        (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n    return (value != null &&\n        value.constructor != null &&\n        typeof value.constructor.isBuffer === \"function\" &&\n        value.constructor.isBuffer(value));\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n    let headers = {};\n    // Handle standard options\n    const opts = {\n        method: requestOptions.method\n    };\n    if (requestOptions.headers) {\n        headers = mergeHeaders(headers, requestOptions.headers);\n    }\n    if (typeof requestOptions.data !== \"undefined\") {\n        const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n        opts.body = body;\n        headers = mergeHeaders(headers, newHeaders);\n    }\n    if (requestOptions.signal) {\n        opts.signal = requestOptions.signal;\n    }\n    if (requestOptions.withCredentials) {\n        opts.credentials = \"include\";\n    }\n    // Check for node-specific options\n    if (!isWeb() && !isReactNative()) {\n        if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n            opts.agent = (parsedURL) => {\n                if (parsedURL.protocol === \"http:\") {\n                    return requestOptions.httpAgent || new HTTPAgent();\n                }\n                return requestOptions.httpsAgent || new HTTPSAgent();\n            };\n        }\n    }\n    // Attach headers\n    opts.headers = headers;\n    return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n    const finalOptions = cloneShallow(requestOptions);\n    finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n    if (typeof userOptions.data !== \"undefined\") {\n        finalOptions.data = userOptions.data;\n    }\n    if (userOptions.signal) {\n        finalOptions.signal = userOptions.signal;\n    }\n    if (context.httpAgent) {\n        finalOptions.httpAgent = context.httpAgent;\n    }\n    if (context.httpsAgent) {\n        finalOptions.httpsAgent = context.httpsAgent;\n    }\n    if (context.digest) {\n        finalOptions._digest = context.digest;\n    }\n    if (typeof context.withCredentials === \"boolean\") {\n        finalOptions.withCredentials = context.withCredentials;\n    }\n    return finalOptions;\n}\nexport async function request(requestOptions, context) {\n    if (context.authType === AuthType.Auto) {\n        return requestAuto(requestOptions, context);\n    }\n    if (requestOptions._digest) {\n        return requestDigest(requestOptions);\n    }\n    return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n    const response = await requestStandard(requestOptions);\n    if (response.ok) {\n        context.authType = AuthType.Password;\n        return response;\n    }\n    if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n        context.authType = AuthType.Digest;\n        setupAuth(context, context.username, context.password, undefined, undefined);\n        requestOptions._digest = context.digest;\n        return requestDigest(requestOptions);\n    }\n    return response;\n}\nasync function requestDigest(requestOptions) {\n    // Remove client's digest authentication object from request options\n    const _digest = requestOptions._digest;\n    delete requestOptions._digest;\n    // If client is already using digest authentication, include the digest authorization header\n    if (_digest.hasDigestAuth) {\n        requestOptions = merge(requestOptions, {\n            headers: {\n                Authorization: generateDigestAuthHeader(requestOptions, _digest)\n            }\n        });\n    }\n    // Perform digest request + check\n    const response = await requestStandard(requestOptions);\n    if (response.status == 401) {\n        _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n        if (_digest.hasDigestAuth) {\n            requestOptions = merge(requestOptions, {\n                headers: {\n                    Authorization: generateDigestAuthHeader(requestOptions, _digest)\n                }\n            });\n            const response2 = await requestStandard(requestOptions);\n            if (response2.status == 401) {\n                _digest.hasDigestAuth = false;\n            }\n            else {\n                _digest.nc++;\n            }\n            return response2;\n        }\n    }\n    else {\n        _digest.nc++;\n    }\n    return response;\n}\nfunction requestStandard(requestOptions) {\n    const patcher = getPatcher();\n    return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n    if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n        // @ts-ignore\n        return [data, {}];\n    }\n    if (typeof data === \"string\") {\n        return [data, {}];\n    }\n    else if (isBuffer(data)) {\n        return [data, {}];\n    }\n    else if (isArrayBuffer(data)) {\n        return [data, {}];\n    }\n    else if (data && typeof data === \"object\") {\n        return [\n            JSON.stringify(data),\n            {\n                \"content-type\": \"application/json\"\n            }\n        ];\n    }\n    throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\nconst adoptionMap = new Map([\n    ['!', ['@']],\n    ['?', ['?', '@']],\n    ['@', ['@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@']],\n]);\nconst adoptionWithSpaceMap = new Map([\n    ['!', ['?']],\n    ['@', ['?']],\n    ['+', ['?', '*']],\n]);\nconst adoptionAnyMap = new Map([\n    ['!', ['?', '@']],\n    ['?', ['?', '@']],\n    ['@', ['?', '@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@', '?', '*']],\n]);\nconst usurpMap = new Map([\n    ['!', new Map([['!', '@']])],\n    ['?', new Map([['*', '*'], ['+', '*']])],\n    ['@', new Map([['!', '!'], ['?', '?'], ['@', '@'], ['*', '*'], ['+', '+']])],\n    ['+', new Map([['?', '*'], ['*', '*']])],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof _a && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof _a && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new _a(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt, extDepth) {\n        const maxDepth = opt.maxExtglobRecursion ?? 2;\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                const doRecurse = !opt.noext &&\n                    isExtglobType(c) &&\n                    str.charAt(i) === '(' &&\n                    extDepth <= maxDepth;\n                if (doRecurse) {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new _a(c, ast);\n                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new _a(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            const doRecurse = isExtglobType(c) &&\n                str.charAt(i) === '(' &&\n                /* c8 ignore start - the maxDepth is sufficient here */\n                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n            /* c8 ignore stop */\n            if (doRecurse) {\n                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n                part.push(acc);\n                acc = '';\n                const ext = new _a(c, part);\n                part.push(ext);\n                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new _a(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    #canAdoptWithSpace(child) {\n        return this.#canAdopt(child, adoptionWithSpaceMap);\n    }\n    #canAdopt(child, map = adoptionMap) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canAdoptType(gc.type, map);\n    }\n    #canAdoptType(c, map = adoptionAnyMap) {\n        return !!map.get(this.type)?.includes(c);\n    }\n    #adoptWithSpace(child, index) {\n        const gc = child.#parts[0];\n        const blank = new _a(null, gc, this.options);\n        blank.#parts.push('');\n        gc.push(blank);\n        this.#adopt(child, index);\n    }\n    #adopt(child, index) {\n        const gc = child.#parts[0];\n        this.#parts.splice(index, 1, ...gc.#parts);\n        for (const p of gc.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.#toString = undefined;\n    }\n    #canUsurpType(c) {\n        const m = usurpMap.get(this.type);\n        return !!(m?.has(c));\n    }\n    #canUsurp(child) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null ||\n            this.#parts.length !== 1) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canUsurpType(gc.type);\n    }\n    #usurp(child) {\n        const m = usurpMap.get(this.type);\n        const gc = child.#parts[0];\n        const nt = m?.get(gc.type);\n        /* c8 ignore start - impossible */\n        if (!nt)\n            return false;\n        /* c8 ignore stop */\n        this.#parts = gc.#parts;\n        for (const p of this.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.type = nt;\n        this.#toString = undefined;\n        this.#emptyExt = false;\n    }\n    #flatten() {\n        if (!isExtglobAST(this)) {\n            for (const p of this.#parts) {\n                if (typeof p === 'object')\n                    p.#flatten();\n            }\n        }\n        else {\n            let iterations = 0;\n            let done = false;\n            do {\n                done = true;\n                for (let i = 0; i < this.#parts.length; i++) {\n                    const c = this.#parts[i];\n                    if (typeof c === 'object') {\n                        c.#flatten();\n                        if (this.#canAdopt(c)) {\n                            done = false;\n                            this.#adopt(c, i);\n                        }\n                        else if (this.#canAdoptWithSpace(c)) {\n                            done = false;\n                            this.#adoptWithSpace(c, i);\n                        }\n                        else if (this.#canUsurp(c)) {\n                            done = false;\n                            this.#usurp(c);\n                        }\n                    }\n                }\n            } while (!done && ++iterations < 10);\n        }\n        this.#toString = undefined;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new _a(null, undefined, options);\n        _a.#parseAST(pattern, ast, 0, options, 0);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this) {\n            this.#flatten();\n            this.#fillNegs();\n        }\n        if (!isExtglobAST(this)) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? _a.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            const me = this;\n            me.#parts = [s];\n            me.type = null;\n            me.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        // multiple stars that aren't globstars coalesce into one *\n        let inStar = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                inStar = false;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    inStar = false;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (inStar)\n                    continue;\n                inStar = true;\n                re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n                hasMagic = true;\n                continue;\n            }\n            else {\n                inStar = false;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    maxGlobstarRecursion;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(GLOBSTAR);\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0))\n                return false;\n            fileIndex += head.length;\n        }\n        let fileTailMatch = 0;\n        if (tail.length) {\n            if (tail.length + fileIndex > file.length)\n                return false;\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0))\n                    return false;\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return partial || sawSome;\n        }\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false)\n                    return sub;\n            }\n            const f = file[fileIndex];\n            if (f === '.' || f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex, pi = patternIndex,\n            fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            /* c8 ignore start */\n            if (p === false || p === GLOBSTAR)\n                return false;\n            /* c8 ignore stop */\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        if (fi === fl && pi === pl) {\n            return true;\n        }\n        else if (fi === fl) {\n            return partial;\n        }\n        else if (pi === pl) {\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function (string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n/**\n * Dangerous property names that could lead to prototype pollution or security issues\n */\nexport const DANGEROUS_PROPERTY_NAMES = [\n  // '__proto__',\n  // 'constructor',\n  // 'prototype',\n  'hasOwnProperty',\n  'toString',\n  'valueOf',\n  '__defineGetter__',\n  '__defineSetter__',\n  '__lookupGetter__',\n  '__lookupSetter__'\n];\n\nexport const criticalProperties = [\"__proto__\", \"constructor\", \"prototype\"];","import { DANGEROUS_PROPERTY_NAMES, criticalProperties } from \"../util.js\";\n\nconst defaultOnDangerousProperty = (name) => {\n  if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return \"__\" + name;\n  }\n  return name;\n};\n\n\nexport const defaultOptions = {\n  preserveOrder: false,\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  removeNSPrefix: false, // remove NS from tag name or attribute name if true\n  allowBooleanAttributes: false, //a tag can have attributes without any value\n  //ignoreRootElement : false,\n  parseTagValue: true,\n  parseAttributeValue: false,\n  trimValues: true, //Trim string values of tag and attributes\n  cdataPropName: false,\n  numberParseOptions: {\n    hex: true,\n    leadingZeros: true,\n    eNotation: true\n  },\n  tagValueProcessor: function (tagName, val) {\n    return val;\n  },\n  attributeValueProcessor: function (attrName, val) {\n    return val;\n  },\n  stopNodes: [], //nested tags will not be parsed even for errors\n  alwaysCreateTextNode: false,\n  isArray: () => false,\n  commentPropName: false,\n  unpairedTags: [],\n  processEntities: true,\n  htmlEntities: false,\n  ignoreDeclaration: false,\n  ignorePiTags: false,\n  transformTagName: false,\n  transformAttributeName: false,\n  updateTag: function (tagName, jPath, attrs) {\n    return tagName\n  },\n  // skipEmptyListItem: false\n  captureMetaData: false,\n  maxNestedTags: 100,\n  strictReservedNames: true,\n  jPath: true, // if true, pass jPath string to callbacks; if false, pass matcher instance\n  onDangerousProperty: defaultOnDangerousProperty\n};\n\n\n/**\n * Validates that a property name is safe to use\n * @param {string} propertyName - The property name to validate\n * @param {string} optionName - The option field name (for error message)\n * @throws {Error} If property name is dangerous\n */\nfunction validatePropertyName(propertyName, optionName) {\n  if (typeof propertyName !== 'string') {\n    return; // Only validate string property names\n  }\n\n  const normalized = propertyName.toLowerCase();\n  if (DANGEROUS_PROPERTY_NAMES.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n\n  if (criticalProperties.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n}\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n  // Boolean backward compatibility\n  if (typeof value === 'boolean') {\n    return {\n      enabled: value, // true or false\n      maxEntitySize: 10000,\n      maxExpansionDepth: 10,\n      maxTotalExpansions: 1000,\n      maxExpandedLength: 100000,\n      maxEntityCount: 100,\n      allowedTags: null,\n      tagFilter: null\n    };\n  }\n\n  // Object config - merge with defaults\n  if (typeof value === 'object' && value !== null) {\n    return {\n      enabled: value.enabled !== false,\n      maxEntitySize: Math.max(1, value.maxEntitySize ?? 10000),\n      maxExpansionDepth: Math.max(1, value.maxExpansionDepth ?? 10),\n      maxTotalExpansions: Math.max(1, value.maxTotalExpansions ?? 1000),\n      maxExpandedLength: Math.max(1, value.maxExpandedLength ?? 100000),\n      maxEntityCount: Math.max(1, value.maxEntityCount ?? 100),\n      allowedTags: value.allowedTags ?? null,\n      tagFilter: value.tagFilter ?? null\n    };\n  }\n\n  // Default to enabled with limits\n  return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n  const built = Object.assign({}, defaultOptions, options);\n\n  // Validate property names to prevent prototype pollution\n  const propertyNameOptions = [\n    { value: built.attributeNamePrefix, name: 'attributeNamePrefix' },\n    { value: built.attributesGroupName, name: 'attributesGroupName' },\n    { value: built.textNodeName, name: 'textNodeName' },\n    { value: built.cdataPropName, name: 'cdataPropName' },\n    { value: built.commentPropName, name: 'commentPropName' }\n  ];\n\n  for (const { value, name } of propertyNameOptions) {\n    if (value) {\n      validatePropertyName(value, name);\n    }\n  }\n\n  if (built.onDangerousProperty === null) {\n    built.onDangerousProperty = defaultOnDangerousProperty;\n  }\n\n  // Always normalize processEntities for backward compatibility and validation\n  built.processEntities = normalizeProcessEntities(built.processEntities);\n\n  // Convert old-style stopNodes for backward compatibility\n  if (built.stopNodes && Array.isArray(built.stopNodes)) {\n    built.stopNodes = built.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Old syntax: *.tagname meant \"tagname anywhere\"\n        // Convert to new syntax: ..tagname\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n  //console.debug(built.processEntities)\n  return built;\n};","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = Object.create(null); //attributes map\n  }\n  add(key, val) {\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if (key === \"__proto__\") key = \"#__proto__\";\n    this.child.push({ [key]: val });\n  }\n  addChild(node, startIndex) {\n    if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n      this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    } else {\n      this.child.push({ [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n    constructor(options) {\n        this.suppressValidationErr = !options;\n        this.options = options;\n    }\n\n    readDocType(xmlData, i) {\n        const entities = Object.create(null);\n        let entityCount = 0;\n\n        if (xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E') {\n            i = i + 9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for (; i < xmlData.length; i++) {\n                if (xmlData[i] === '<' && !comment) { //Determine the tag type\n                    if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n                        i += 7;\n                        let entityName, val;\n                        [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n                        if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n                            if (this.options.enabled !== false &&\n                                this.options.maxEntityCount != null &&\n                                entityCount >= this.options.maxEntityCount) {\n                                throw new Error(\n                                    `Entity count (${entityCount + 1}) exceeds maximum allowed (${this.options.maxEntityCount})`\n                                );\n                            }\n                            //const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n                            const escaped = entityName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n                            entities[entityName] = {\n                                regx: RegExp(`&${escaped};`, \"g\"),\n                                val: val\n                            };\n                            entityCount++;\n                        }\n                    }\n                    else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n                        i += 8;//Not supported\n                        const { index } = this.readElementExp(xmlData, i + 1);\n                        i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n                        i += 8;//Not supported\n                        // const {index} = this.readAttlistExp(xmlData,i+1);\n                        // i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n                        i += 9;//Not supported\n                        const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n                        i = index;\n                    } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n                    else throw new Error(`Invalid DOCTYPE`);\n\n                    angleBracketsCount++;\n                    exp = \"\";\n                } else if (xmlData[i] === '>') { //Read tag content\n                    if (comment) {\n                        if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    } else {\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                        break;\n                    }\n                } else if (xmlData[i] === '[') {\n                    hasBody = true;\n                } else {\n                    exp += xmlData[i];\n                }\n            }\n            if (angleBracketsCount !== 0) {\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        } else {\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return { entities, i };\n    }\n    readEntityExp(xmlData, i) {\n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after  this.options.maxEntitySize) {\n            throw new Error(\n                `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n            );\n        }\n\n        i--;\n        return [entityName, entityValue, i];\n    }\n\n    readNotationExp(xmlData, i) {\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n\n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n    for (let j = 0; j < seq.length; j++) {\n        if (seq[j] !== data[i + j + 1]) return false;\n    }\n    return true;\n}\n\nfunction validateEntityName(name) {\n    if (isName(name))\n        return name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\nconst consider = {\n    hex: true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/,\n    infinity: \"original\", // \"null\", \"infinity\" (Infinity type), \"string\" (\"Infinity\" (the string literal))\n};\n\nexport default function toNumber(str, options = {}) {\n    options = Object.assign({}, consider, options);\n    if (!str || typeof str !== \"string\") return str;\n\n    let trimmedStr = str.trim();\n\n    if (options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if (str === \"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n        // }else if (options.oct && octRegex.test(str)) {\n        //     return Number.parseInt(val, 8);\n    } else if (!isFinite(trimmedStr)) { //Infinity\n        return handleInfinity(str, Number(trimmedStr), options);\n    } else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n        return resolveEnotation(str, trimmedStr, options);\n        // }else if (options.parseBin && binRegex.test(str)) {\n        //     return Number.parseInt(val, 2);\n    } else {\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        // +00.123 => [ , '+', '00', '.123', ..\n        if (match) {\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length + 1] === \".\"\n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if (!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1\n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))) {\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else {//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if (num === 0) return num;\n                if (parsedStr.search(/[eE]/) !== -1) { //given number is long and parsed to eNotation\n                    if (options.eNotation) return num;\n                    else return str;\n                } else if (trimmedStr.indexOf(\".\") !== -1) { //floating number\n                    if (parsedStr === \"0\") return num; //0.0\n                    else if (parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if (parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n\n                let n = leadingZeros ? numTrimmedByZeros : trimmedStr;\n                if (leadingZeros) {\n                    // -009 => -9\n                    return (n === parsedStr) || (sign + n === parsedStr) ? num : str\n                } else {\n                    // +9\n                    return (n === parsedStr) || (n === sign + parsedStr) ? num : str\n                }\n            }\n        } else { //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str, trimmedStr, options) {\n    if (!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx);\n    if (notation) {\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length + 1] === eChar\n            : str[leadingZeros.length] === eChar;\n\n        if (leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if (leadingZeros.length === 1\n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)) {\n            return Number(trimmedStr);\n        } else if (leadingZeros.length > 0) {\n            // Has leading zeros — only accept if leadingZeros option allows it\n            if (options.leadingZeros && !eAdjacentToLeadingZeros) {\n                trimmedStr = (notation[1] || \"\") + notation[3];\n                return Number(trimmedStr);\n            } else return str;\n        } else {\n            // No leading zeros — always valid e-notation, parse it\n            return Number(trimmedStr);\n        }\n    } else {\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr) {\n    if (numStr && numStr.indexOf(\".\") !== -1) {//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if (numStr === \".\") numStr = \"0\";\n        else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n        else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substring(0, numStr.length - 1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base) {\n    //polyfill\n    if (parseInt) return parseInt(numStr, base);\n    else if (Number.parseInt) return Number.parseInt(numStr, base);\n    else if (window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}\n\n/**\n * Handle infinite values based on user option\n * @param {string} str - original input string\n * @param {number} num - parsed number (Infinity or -Infinity)\n * @param {object} options - user options\n * @returns {string|number|null} based on infinity option\n */\nfunction handleInfinity(str, num, options) {\n    const isPositive = num === Infinity;\n\n    switch (options.infinity.toLowerCase()) {\n        case \"null\":\n            return null;\n        case \"infinity\":\n            return num; // Return Infinity or -Infinity\n        case \"string\":\n            return isPositive ? \"Infinity\" : \"-Infinity\";\n        case \"original\":\n        default:\n            return str; // Return original string like \"1e1000\"\n    }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n  /**\n   * Create a new Matcher\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Default path separator (default: '.')\n   */\n  constructor(options = {}) {\n    this.separator = options.separator || '.';\n    this.path = [];\n    this.siblingStacks = [];\n    // Each path node: { tag: string, values: object, position: number, counter: number }\n    // values only present for current (last) node\n    // Each siblingStacks entry: Map tracking occurrences at each level\n  }\n\n  /**\n   * Push a new tag onto the path\n   * @param {string} tagName - Name of the tag\n   * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n   * @param {string} namespace - Namespace for the tag (optional)\n   */\n  push(tagName, attrValues = null, namespace = null) {\n    // Remove values from previous current node (now becoming ancestor)\n    if (this.path.length > 0) {\n      const prev = this.path[this.path.length - 1];\n      prev.values = undefined;\n    }\n\n    // Get or create sibling tracking for current level\n    const currentLevel = this.path.length;\n    if (!this.siblingStacks[currentLevel]) {\n      this.siblingStacks[currentLevel] = new Map();\n    }\n\n    const siblings = this.siblingStacks[currentLevel];\n\n    // Create a unique key for sibling tracking that includes namespace\n    const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n    // Calculate counter (how many times this tag appeared at this level)\n    const counter = siblings.get(siblingKey) || 0;\n\n    // Calculate position (total children at this level so far)\n    let position = 0;\n    for (const count of siblings.values()) {\n      position += count;\n    }\n\n    // Update sibling count for this tag\n    siblings.set(siblingKey, counter + 1);\n\n    // Create new node\n    const node = {\n      tag: tagName,\n      position: position,\n      counter: counter\n    };\n\n    // Store namespace if provided\n    if (namespace !== null && namespace !== undefined) {\n      node.namespace = namespace;\n    }\n\n    // Store values only for current node\n    if (attrValues !== null && attrValues !== undefined) {\n      node.values = attrValues;\n    }\n\n    this.path.push(node);\n  }\n\n  /**\n   * Pop the last tag from the path\n   * @returns {Object|undefined} The popped node\n   */\n  pop() {\n    if (this.path.length === 0) {\n      return undefined;\n    }\n\n    const node = this.path.pop();\n\n    // Clean up sibling tracking for levels deeper than current\n    // After pop, path.length is the new depth\n    // We need to clean up siblingStacks[path.length + 1] and beyond\n    if (this.siblingStacks.length > this.path.length + 1) {\n      this.siblingStacks.length = this.path.length + 1;\n    }\n\n    return node;\n  }\n\n  /**\n   * Update current node's attribute values\n   * Useful when attributes are parsed after push\n   * @param {Object} attrValues - Attribute values\n   */\n  updateCurrent(attrValues) {\n    if (this.path.length > 0) {\n      const current = this.path[this.path.length - 1];\n      if (attrValues !== null && attrValues !== undefined) {\n        current.values = attrValues;\n      }\n    }\n  }\n\n  /**\n   * Get current tag name\n   * @returns {string|undefined}\n   */\n  getCurrentTag() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n  }\n\n  /**\n   * Get current namespace\n   * @returns {string|undefined}\n   */\n  getCurrentNamespace() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n  }\n\n  /**\n   * Get current node's attribute value\n   * @param {string} attrName - Attribute name\n   * @returns {*} Attribute value or undefined\n   */\n  getAttrValue(attrName) {\n    if (this.path.length === 0) return undefined;\n    const current = this.path[this.path.length - 1];\n    return current.values?.[attrName];\n  }\n\n  /**\n   * Check if current node has an attribute\n   * @param {string} attrName - Attribute name\n   * @returns {boolean}\n   */\n  hasAttr(attrName) {\n    if (this.path.length === 0) return false;\n    const current = this.path[this.path.length - 1];\n    return current.values !== undefined && attrName in current.values;\n  }\n\n  /**\n   * Get current node's sibling position (child index in parent)\n   * @returns {number}\n   */\n  getPosition() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].position ?? 0;\n  }\n\n  /**\n   * Get current node's repeat counter (occurrence count of this tag name)\n   * @returns {number}\n   */\n  getCounter() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].counter ?? 0;\n  }\n\n  /**\n   * Get current node's sibling index (alias for getPosition for backward compatibility)\n   * @returns {number}\n   * @deprecated Use getPosition() or getCounter() instead\n   */\n  getIndex() {\n    return this.getPosition();\n  }\n\n  /**\n   * Get current path depth\n   * @returns {number}\n   */\n  getDepth() {\n    return this.path.length;\n  }\n\n  /**\n   * Get path as string\n   * @param {string} separator - Optional separator (uses default if not provided)\n   * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n   * @returns {string}\n   */\n  toString(separator, includeNamespace = true) {\n    const sep = separator || this.separator;\n    return this.path.map(n => {\n      if (includeNamespace && n.namespace) {\n        return `${n.namespace}:${n.tag}`;\n      }\n      return n.tag;\n    }).join(sep);\n  }\n\n  /**\n   * Get path as array of tag names\n   * @returns {string[]}\n   */\n  toArray() {\n    return this.path.map(n => n.tag);\n  }\n\n  /**\n   * Reset the path to empty\n   */\n  reset() {\n    this.path = [];\n    this.siblingStacks = [];\n  }\n\n  /**\n   * Match current path against an Expression\n   * @param {Expression} expression - The expression to match against\n   * @returns {boolean} True if current path matches the expression\n   */\n  matches(expression) {\n    const segments = expression.segments;\n\n    if (segments.length === 0) {\n      return false;\n    }\n\n    // Handle deep wildcard patterns\n    if (expression.hasDeepWildcard()) {\n      return this._matchWithDeepWildcard(segments);\n    }\n\n    // Simple path matching (no deep wildcards)\n    return this._matchSimple(segments);\n  }\n\n  /**\n   * Match simple path (no deep wildcards)\n   * @private\n   */\n  _matchSimple(segments) {\n    // Path must be same length as segments\n    if (this.path.length !== segments.length) {\n      return false;\n    }\n\n    // Match each segment bottom-to-top\n    for (let i = 0; i < segments.length; i++) {\n      const segment = segments[i];\n      const node = this.path[i];\n      const isCurrentNode = (i === this.path.length - 1);\n\n      if (!this._matchSegment(segment, node, isCurrentNode)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Match path with deep wildcards\n   * @private\n   */\n  _matchWithDeepWildcard(segments) {\n    let pathIdx = this.path.length - 1;  // Start from current node (bottom)\n    let segIdx = segments.length - 1;     // Start from last segment\n\n    while (segIdx >= 0 && pathIdx >= 0) {\n      const segment = segments[segIdx];\n\n      if (segment.type === 'deep-wildcard') {\n        // \"..\" matches zero or more levels\n        segIdx--;\n\n        if (segIdx < 0) {\n          // Pattern ends with \"..\", always matches\n          return true;\n        }\n\n        // Find where next segment matches in the path\n        const nextSeg = segments[segIdx];\n        let found = false;\n\n        for (let i = pathIdx; i >= 0; i--) {\n          const isCurrentNode = (i === this.path.length - 1);\n          if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n            pathIdx = i - 1;\n            segIdx--;\n            found = true;\n            break;\n          }\n        }\n\n        if (!found) {\n          return false;\n        }\n      } else {\n        // Regular segment\n        const isCurrentNode = (pathIdx === this.path.length - 1);\n        if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n          return false;\n        }\n        pathIdx--;\n        segIdx--;\n      }\n    }\n\n    // All segments must be consumed\n    return segIdx < 0;\n  }\n\n  /**\n   * Match a single segment against a node\n   * @private\n   * @param {Object} segment - Segment from Expression\n   * @param {Object} node - Node from path\n   * @param {boolean} isCurrentNode - Whether this is the current (last) node\n   * @returns {boolean}\n   */\n  _matchSegment(segment, node, isCurrentNode) {\n    // Match tag name (* is wildcard)\n    if (segment.tag !== '*' && segment.tag !== node.tag) {\n      return false;\n    }\n\n    // Match namespace if specified in segment\n    if (segment.namespace !== undefined) {\n      // Segment has namespace - node must match it\n      if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n        return false;\n      }\n    }\n    // If segment has no namespace, it matches nodes with or without namespace\n\n    // Match attribute name (check if node has this attribute)\n    // Can only check for current node since ancestors don't have values\n    if (segment.attrName !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check attributes for ancestor nodes (values not stored)\n        return false;\n      }\n\n      if (!node.values || !(segment.attrName in node.values)) {\n        return false;\n      }\n\n      // Match attribute value (only possible for current node)\n      if (segment.attrValue !== undefined) {\n        const actualValue = node.values[segment.attrName];\n        // Both should be strings\n        if (String(actualValue) !== String(segment.attrValue)) {\n          return false;\n        }\n      }\n    }\n\n    // Match position (only for current node)\n    if (segment.position !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check position for ancestor nodes\n        return false;\n      }\n\n      const counter = node.counter ?? 0;\n\n      if (segment.position === 'first' && counter !== 0) {\n        return false;\n      } else if (segment.position === 'odd' && counter % 2 !== 1) {\n        return false;\n      } else if (segment.position === 'even' && counter % 2 !== 0) {\n        return false;\n      } else if (segment.position === 'nth') {\n        if (counter !== segment.positionValue) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Create a snapshot of current state\n   * @returns {Object} State snapshot\n   */\n  snapshot() {\n    return {\n      path: this.path.map(node => ({ ...node })),\n      siblingStacks: this.siblingStacks.map(map => new Map(map))\n    };\n  }\n\n  /**\n   * Restore state from snapshot\n   * @param {Object} snapshot - State snapshot\n   */\n  restore(snapshot) {\n    this.path = snapshot.path.map(node => ({ ...node }));\n    this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n  }\n}","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n  /**\n   * Create a new Expression\n   * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Path separator (default: '.')\n   */\n  constructor(pattern, options = {}) {\n    this.pattern = pattern;\n    this.separator = options.separator || '.';\n    this.segments = this._parse(pattern);\n\n    // Cache expensive checks for performance (O(1) instead of O(n))\n    this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n    this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n    this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n  }\n\n  /**\n   * Parse pattern string into segments\n   * @private\n   * @param {string} pattern - Pattern to parse\n   * @returns {Array} Array of segment objects\n   */\n  _parse(pattern) {\n    const segments = [];\n\n    // Split by separator but handle \"..\" specially\n    let i = 0;\n    let currentPart = '';\n\n    while (i < pattern.length) {\n      if (pattern[i] === this.separator) {\n        // Check if next char is also separator (deep wildcard)\n        if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n          // Flush current part if any\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n            currentPart = '';\n          }\n          // Add deep wildcard\n          segments.push({ type: 'deep-wildcard' });\n          i += 2; // Skip both separators\n        } else {\n          // Regular separator\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n          }\n          currentPart = '';\n          i++;\n        }\n      } else {\n        currentPart += pattern[i];\n        i++;\n      }\n    }\n\n    // Flush remaining part\n    if (currentPart.trim()) {\n      segments.push(this._parseSegment(currentPart.trim()));\n    }\n\n    return segments;\n  }\n\n  /**\n   * Parse a single segment\n   * @private\n   * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n   * @returns {Object} Segment object\n   */\n  _parseSegment(part) {\n    const segment = { type: 'tag' };\n\n    // NEW NAMESPACE SYNTAX (v2.0):\n    // ============================\n    // Namespace uses DOUBLE colon (::)\n    // Position uses SINGLE colon (:)\n    // \n    // Examples:\n    //   \"user\"              → tag\n    //   \"user:first\"        → tag + position\n    //   \"user[id]\"          → tag + attribute\n    //   \"user[id]:first\"    → tag + attribute + position\n    //   \"ns::user\"          → namespace + tag\n    //   \"ns::user:first\"    → namespace + tag + position\n    //   \"ns::user[id]\"      → namespace + tag + attribute\n    //   \"ns::user[id]:first\" → namespace + tag + attribute + position\n    //   \"ns::first\"         → namespace + tag named \"first\" (NO ambiguity!)\n    //\n    // This eliminates all ambiguity:\n    //   :: = namespace separator\n    //   :  = position selector\n    //   [] = attributes\n\n    // Step 1: Extract brackets [attr] or [attr=value]\n    let bracketContent = null;\n    let withoutBrackets = part;\n\n    const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n    if (bracketMatch) {\n      withoutBrackets = bracketMatch[1] + bracketMatch[3];\n      if (bracketMatch[2]) {\n        const content = bracketMatch[2].slice(1, -1);\n        if (content) {\n          bracketContent = content;\n        }\n      }\n    }\n\n    // Step 2: Check for namespace (double colon ::)\n    let namespace = undefined;\n    let tagAndPosition = withoutBrackets;\n\n    if (withoutBrackets.includes('::')) {\n      const nsIndex = withoutBrackets.indexOf('::');\n      namespace = withoutBrackets.substring(0, nsIndex).trim();\n      tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n      if (!namespace) {\n        throw new Error(`Invalid namespace in pattern: ${part}`);\n      }\n    }\n\n    // Step 3: Parse tag and position (single colon :)\n    let tag = undefined;\n    let positionMatch = null;\n\n    if (tagAndPosition.includes(':')) {\n      const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n      const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n      const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n      // Verify position is a valid keyword\n      const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n        /^nth\\(\\d+\\)$/.test(posPart);\n\n      if (isPositionKeyword) {\n        tag = tagPart;\n        positionMatch = posPart;\n      } else {\n        // Not a valid position keyword, treat whole thing as tag\n        tag = tagAndPosition;\n      }\n    } else {\n      tag = tagAndPosition;\n    }\n\n    if (!tag) {\n      throw new Error(`Invalid segment pattern: ${part}`);\n    }\n\n    segment.tag = tag;\n    if (namespace) {\n      segment.namespace = namespace;\n    }\n\n    // Step 4: Parse attributes\n    if (bracketContent) {\n      if (bracketContent.includes('=')) {\n        const eqIndex = bracketContent.indexOf('=');\n        segment.attrName = bracketContent.substring(0, eqIndex).trim();\n        segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n      } else {\n        segment.attrName = bracketContent.trim();\n      }\n    }\n\n    // Step 5: Parse position selector\n    if (positionMatch) {\n      const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n      if (nthMatch) {\n        segment.position = 'nth';\n        segment.positionValue = parseInt(nthMatch[1], 10);\n      } else {\n        segment.position = positionMatch;\n      }\n    }\n\n    return segment;\n  }\n\n  /**\n   * Get the number of segments\n   * @returns {number}\n   */\n  get length() {\n    return this.segments.length;\n  }\n\n  /**\n   * Check if expression contains deep wildcard\n   * @returns {boolean}\n   */\n  hasDeepWildcard() {\n    return this._hasDeepWildcard;\n  }\n\n  /**\n   * Check if expression has attribute conditions\n   * @returns {boolean}\n   */\n  hasAttributeCondition() {\n    return this._hasAttributeCondition;\n  }\n\n  /**\n   * Check if expression has position selectors\n   * @returns {boolean}\n   */\n  hasPositionSelector() {\n    return this._hasPositionSelector;\n  }\n\n  /**\n   * Get string representation\n   * @returns {string}\n   */\n  toString() {\n    return this.pattern;\n  }\n}","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist, DANGEROUS_PROPERTY_NAMES, criticalProperties } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n// Helper functions for attribute and namespace handling\n\n/**\n * Extract raw attributes (without prefix) from prefixed attribute map\n * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap\n * @param {object} options - Parser options containing attributeNamePrefix\n * @returns {object} Raw attributes for matcher\n */\nfunction extractRawAttributes(prefixedAttrs, options) {\n  if (!prefixedAttrs) return {};\n\n  // Handle attributesGroupName option\n  const attrs = options.attributesGroupName\n    ? prefixedAttrs[options.attributesGroupName]\n    : prefixedAttrs;\n\n  if (!attrs) return {};\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    // Remove the attribute prefix to get raw name\n    if (key.startsWith(options.attributeNamePrefix)) {\n      const rawName = key.substring(options.attributeNamePrefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * Extract namespace from raw tag name\n * @param {string} rawTagName - Tag name possibly with namespace (e.g., \"soap:Envelope\")\n * @returns {string|undefined} Namespace or undefined\n */\nfunction extractNamespace(rawTagName) {\n  if (!rawTagName || typeof rawTagName !== 'string') return undefined;\n\n  const colonIndex = rawTagName.indexOf(':');\n  if (colonIndex !== -1 && colonIndex > 0) {\n    const ns = rawTagName.substring(0, colonIndex);\n    // Don't treat xmlns as a namespace\n    if (ns !== 'xmlns') {\n      return ns;\n    }\n  }\n  return undefined;\n}\n\nexport default class OrderedObjParser {\n  constructor(options) {\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n      \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n      \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n      \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.entityExpansionCount = 0;\n    this.currentExpandedLength = 0;\n\n    // Initialize path matcher for path-expression-matcher\n    this.matcher = new Matcher();\n\n    // Flag to track if current node is a stop node (optimization)\n    this.isCurrentNodeStopNode = false;\n\n    // Pre-compile stopNodes expressions\n    if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n      this.stopNodeExpressions = [];\n      for (let i = 0; i < this.options.stopNodes.length; i++) {\n        const stopNodeExp = this.options.stopNodes[i];\n        if (typeof stopNodeExp === 'string') {\n          // Convert string to Expression object\n          this.stopNodeExpressions.push(new Expression(stopNodeExp));\n        } else if (stopNodeExp instanceof Expression) {\n          // Already an Expression object\n          this.stopNodeExpressions.push(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n    this.lastEntities[ent] = {\n      regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n      val: externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if (val.length > 0) {\n      if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n      const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);\n      if (newval === null || newval === undefined) {\n        //don't parse\n        return val;\n      } else if (typeof newval !== typeof val || newval !== val) {\n        //overwrite\n        return newval;\n      } else if (this.options.trimValues) {\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      } else {\n        const trimmedVal = val.trim();\n        if (trimmedVal === val) {\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        } else {\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n\n    // First pass: parse all attributes and update matcher with raw values\n    // This ensures the matcher has all attribute values when processors run\n    const rawAttrsForMatcher = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      const oldVal = matches[i][4];\n\n      if (attrName.length && oldVal !== undefined) {\n        let parsedVal = oldVal;\n        if (this.options.trimValues) {\n          parsedVal = parsedVal.trim();\n        }\n        parsedVal = this.replaceEntitiesValue(parsedVal, tagName, jPath);\n        rawAttrsForMatcher[attrName] = parsedVal;\n      }\n    }\n\n    // Update matcher with raw attribute values BEFORE running processors\n    if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) {\n      jPath.updateCurrent(rawAttrsForMatcher);\n    }\n\n    // Second pass: now process attributes with matcher having full attribute context\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n\n      // Convert jPath to string if needed for ignoreAttributesFn\n      const jPathStr = this.options.jPath ? jPath.toString() : jPath;\n      if (this.ignoreAttributesFn(attrName, jPathStr)) {\n        continue\n      }\n\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        //if (aName === \"__proto__\") aName = \"#__proto__\";\n        aName = sanitizeName(aName, this.options);\n\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal, tagName, jPath);\n\n          // Pass jPath string or matcher based on options.jPath setting\n          const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher);\n          if (newVal === null || newVal === undefined) {\n            //don't parse\n            attrs[aName] = oldVal;\n          } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n            //overwrite\n            attrs[aName] = newVal;\n          } else {\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function (xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n\n  // Reset matcher for new document\n  this.matcher.reset();\n\n  // Reset entity expansion counters for this document\n  this.entityExpansionCount = 0;\n  this.currentExpandedLength = 0;\n\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n    const ch = xmlData[i];\n    if (ch === '<') {\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if (xmlData[i + 1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n        if (this.options.removeNSPrefix) {\n          const colonIndex = tagName.indexOf(\":\");\n          if (colonIndex !== -1) {\n            tagName = tagName.substr(colonIndex + 1);\n          }\n        }\n\n        tagName = transformTagName(this.options.transformTagName, tagName, \"\", this.options).tagName;\n\n        if (currentNode) {\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = this.matcher.getCurrentTag();\n        if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n          // Pop the unpaired tag\n          this.matcher.pop();\n          this.tagsNodeStack.pop();\n        }\n        // Pop the closing tag\n        this.matcher.pop();\n        this.isCurrentNodeStopNode = false; // Reset flag when closing tag\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n\n        let tagData = readTagExp(xmlData, i, false, \"?>\");\n        if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n          //do nothing\n        } else {\n\n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n\n          if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, this.matcher, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n        if (this.options.commentPropName) {\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n          currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n        }\n        i = endIndex;\n      } else if (xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9, closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, this.matcher, true, false, true, true);\n        if (val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if (this.options.cdataPropName) {\n          currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n        } else {\n          currentNode.add(this.options.textNodeName, val);\n        }\n\n        i = closeIndex + 2;\n      } else {//Opening tag\n        let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n\n        // Safety check: readTagExp can return undefined\n        if (!result) {\n          // Log context for debugging\n          const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50));\n          throw new Error(`readTagExp returned undefined at position ${i}. Context: \"${context}\"`);\n        }\n\n        let tagName = result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n        if (this.options.strictReservedNames &&\n          (tagName === this.options.commentPropName\n            || tagName === this.options.cdataPropName\n            || tagName === this.options.textNodeName\n            || tagName === this.options.attributesGroupName\n          )) {\n          throw new Error(`Invalid tag name: ${tagName}`);\n        }\n\n        //save text as child node\n        if (currentNode && textData) {\n          if (currentNode.tagname !== '!xml') {\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, this.matcher, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n          currentNode = this.tagsNodeStack.pop();\n          this.matcher.pop();\n        }\n\n        // Clean up self-closing syntax BEFORE processing attributes\n        // This is where tagExp gets the trailing / removed\n        let isSelfClosing = false;\n        if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n          isSelfClosing = true;\n          if (tagName[tagName.length - 1] === \"/\") {\n            tagName = tagName.substr(0, tagName.length - 1);\n            tagExp = tagName;\n          } else {\n            tagExp = tagExp.substr(0, tagExp.length - 1);\n          }\n\n          // Re-check attrExpPresent after cleaning\n          attrExpPresent = (tagName !== tagExp);\n        }\n\n        // Now process attributes with CLEAN tagExp (no trailing /)\n        let prefixedAttrs = null;\n        let rawAttrs = {};\n        let namespace = undefined;\n\n        // Extract namespace from rawTagName\n        namespace = extractNamespace(rawTagName);\n\n        // Push tag to matcher FIRST (with empty attrs for now) so callbacks see correct path\n        if (tagName !== xmlObj.tagname) {\n          this.matcher.push(tagName, {}, namespace);\n        }\n\n        // Now build attributes - callbacks will see correct matcher state\n        if (tagName !== tagExp && attrExpPresent) {\n          // Build attributes (returns prefixed attributes for the tree)\n          // Note: buildAttributesMap now internally updates the matcher with raw attributes\n          prefixedAttrs = this.buildAttributesMap(tagExp, this.matcher, tagName);\n\n          if (prefixedAttrs) {\n            // Extract raw attributes (without prefix) for our use\n            rawAttrs = extractRawAttributes(prefixedAttrs, this.options);\n          }\n        }\n\n        // Now check if this is a stop node (after attributes are set)\n        if (tagName !== xmlObj.tagname) {\n          this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher);\n        }\n\n        const startIndex = i;\n        if (this.isCurrentNodeStopNode) {\n          let tagContent = \"\";\n\n          // For self-closing tags, content is empty\n          if (isSelfClosing) {\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n            i = result.closeIndex;\n          }\n          //normal tag\n          else {\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if (prefixedAttrs) {\n            childNode[\":@\"] = prefixedAttrs;\n          }\n\n          // For stop nodes, store raw content as-is without any processing\n          childNode.add(this.options.textNodeName, tagContent);\n\n          this.matcher.pop(); // Pop the stop node tag\n          this.isCurrentNodeStopNode = false; // Reset flag\n\n          this.addChild(currentNode, childNode, this.matcher, startIndex);\n        } else {\n          //selfClosing tag\n          if (isSelfClosing) {\n            ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop self-closing tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n          }\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop unpaired tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n            i = result.closeIndex;\n            // Continue to next iteration without changing currentNode\n            continue;\n          }\n          //opening tag\n          else {\n            const childNode = new xmlNode(tagName);\n            if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n              throw new Error(\"Maximum nested tags exceeded\");\n            }\n            this.tagsNodeStack.push(currentNode);\n\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    } else {\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, matcher, startIndex) {\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n\n  // Pass jPath string or matcher based on options.jPath setting\n  const jPathOrMatcher = this.options.jPath ? matcher.toString() : matcher;\n  const result = this.options.updateTag(childNode.tagname, jPathOrMatcher, childNode[\":@\"])\n  if (result === false) {\n    //do nothing\n  } else if (typeof result === \"string\") {\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  } else {\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\n/**\n * @param {object} val - Entity object with regex and val properties\n * @param {string} tagName - Tag name\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n */\nfunction replaceEntitiesValue(val, tagName, jPath) {\n  const entityConfig = this.options.processEntities;\n\n  if (!entityConfig || !entityConfig.enabled) {\n    return val;\n  }\n\n  // Check if tag is allowed to contain entities\n  if (entityConfig.allowedTags) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    const allowed = Array.isArray(entityConfig.allowedTags)\n      ? entityConfig.allowedTags.includes(tagName)\n      : entityConfig.allowedTags(tagName, jPathOrMatcher);\n\n    if (!allowed) {\n      return val;\n    }\n  }\n\n  // Apply custom tag filter if provided\n  if (entityConfig.tagFilter) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    if (!entityConfig.tagFilter(tagName, jPathOrMatcher)) {\n      return val; // Skip based on custom filter\n    }\n  }\n\n  // Replace DOCTYPE entities\n  for (const entityName of Object.keys(this.docTypeEntities)) {\n    const entity = this.docTypeEntities[entityName];\n    const matches = val.match(entity.regx);\n\n    if (matches) {\n      // Track expansions\n      this.entityExpansionCount += matches.length;\n\n      // Check expansion limit\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n\n      // Store length before replacement\n      const lengthBefore = val.length;\n      val = val.replace(entity.regx, entity.val);\n\n      // Check expanded length immediately after replacement\n      if (entityConfig.maxExpandedLength) {\n        this.currentExpandedLength += (val.length - lengthBefore);\n\n        if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n          throw new Error(\n            `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n          );\n        }\n      }\n    }\n  }\n  // Replace standard entities\n  for (const entityName of Object.keys(this.lastEntities)) {\n    const entity = this.lastEntities[entityName];\n    const matches = val.match(entity.regex);\n    if (matches) {\n      this.entityExpansionCount += matches.length;\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n    }\n    val = val.replace(entity.regex, entity.val);\n  }\n  if (val.indexOf('&') === -1) return val;\n\n  // Replace HTML entities if enabled\n  if (this.options.htmlEntities) {\n    for (const entityName of Object.keys(this.htmlEntities)) {\n      const entity = this.htmlEntities[entityName];\n      const matches = val.match(entity.regex);\n      if (matches) {\n        //console.log(matches);\n        this.entityExpansionCount += matches.length;\n        if (entityConfig.maxTotalExpansions &&\n          this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n          throw new Error(\n            `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n          );\n        }\n      }\n      val = val.replace(entity.regex, entity.val);\n    }\n  }\n\n  // Replace ampersand entity last\n  val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n  return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, matcher, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n    textData = this.parseTextData(textData,\n      parentNode.tagname,\n      matcher,\n      false,\n      parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      parentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Array} stopNodeExpressions - Array of compiled Expression objects\n * @param {Matcher} matcher - Current path matcher\n */\nfunction isItStopNode(stopNodeExpressions, matcher) {\n  if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n  for (let i = 0; i < stopNodeExpressions.length; i++) {\n    if (matcher.matches(stopNodeExpressions[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n      if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n      attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if (closingChar[1]) {\n        if (xmlData[index + 1] === closingChar[1]) {\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      } else {\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n  const closingIndex = xmlData.indexOf(str, i);\n  if (closingIndex === -1) {\n    throw new Error(errMsg)\n  } else {\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n  const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n  if (!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if (separatorIndex !== -1) {//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if (removeNSPrefix) {\n    const colonIndex = tagName.indexOf(\":\");\n    if (colonIndex !== -1) {\n      tagName = tagName.substr(colonIndex + 1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === \"<\") {\n      if (xmlData[i + 1] === \"/\") {//close tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n        let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n        if (closeTagName === tagName) {\n          openTagCount--;\n          if (openTagCount === 0) {\n            return {\n              tagContent: xmlData.substring(startIndex, i),\n              i: closeIndex\n            }\n          }\n        }\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n        const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n        i = closeIndex;\n      } else {\n        const tagData = readTagExp(xmlData, i, '>')\n\n        if (tagData) {\n          const openTagName = tagData && tagData.tagName;\n          if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n            openTagCount++;\n          }\n          i = tagData.closeIndex;\n        }\n      }\n    }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if (newval === 'true') return true;\n    else if (newval === 'false') return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n    return String.fromCodePoint(codePoint);\n  } else {\n    return prefix + str + \";\";\n  }\n}\n\nfunction transformTagName(fn, tagName, tagExp, options) {\n  if (fn) {\n    const newTagName = fn(tagName);\n    if (tagExp === tagName) {\n      tagExp = newTagName\n    }\n    tagName = newTagName;\n  }\n  tagName = sanitizeName(tagName, options);\n  return { tagName, tagExp };\n}\n\n\n\nfunction sanitizeName(name, options) {\n  if (criticalProperties.includes(name)) {\n    throw new Error(`[SECURITY] Invalid name: \"${name}\" is a reserved JavaScript keyword that could cause prototype pollution`);\n  } else if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return options.onDangerousProperty(name);\n  }\n  return name;\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n\nimport XmlNode from './xmlNode.js';\nimport { Matcher } from 'path-expression-matcher';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * Helper function to strip attribute prefix from attribute map\n * @param {object} attrs - Attributes with prefix (e.g., {\"@_class\": \"code\"})\n * @param {string} prefix - Attribute prefix to remove (e.g., \"@_\")\n * @returns {object} Attributes without prefix (e.g., {\"class\": \"code\"})\n */\nfunction stripAttributePrefix(attrs, prefix) {\n  if (!attrs || typeof attrs !== 'object') return {};\n  if (!prefix) return attrs;\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    if (key.startsWith(prefix)) {\n      const rawName = key.substring(prefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns \n */\nexport default function prettify(node, options, matcher) {\n  return compress(node, options, matcher);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns object\n */\nfunction compress(arr, options, matcher) {\n  let text;\n  const compressedObj = {}; //This is intended to be a plain object\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n\n    // Push current property to matcher WITH RAW ATTRIBUTES (no prefix)\n    if (property !== undefined && property !== options.textNodeName) {\n      const rawAttrs = stripAttributePrefix(\n        tagObj[\":@\"] || {},\n        options.attributeNamePrefix\n      );\n      matcher.push(property, rawAttrs);\n    }\n\n    if (property === options.textNodeName) {\n      if (text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    } else if (property === undefined) {\n      continue;\n    } else if (tagObj[property]) {\n\n      let val = compress(tagObj[property], options, matcher);\n      const isLeaf = isLeafTag(val, options);\n\n      if (tagObj[\":@\"]) {\n        assignAttributes(val, tagObj[\":@\"], matcher, options);\n      } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n        val = val[options.textNodeName];\n      } else if (Object.keys(val).length === 0) {\n        if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n\n      if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n        if (!Array.isArray(compressedObj[property])) {\n          compressedObj[property] = [compressedObj[property]];\n        }\n        compressedObj[property].push(val);\n      } else {\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n\n        // Pass jPath string or matcher based on options.jPath setting\n        const jPathOrMatcher = options.jPath ? matcher.toString() : matcher;\n        if (options.isArray(property, jPathOrMatcher, isLeaf)) {\n          compressedObj[property] = [val];\n        } else {\n          compressedObj[property] = val;\n        }\n      }\n\n      // Pop property from matcher after processing\n      if (property !== undefined && property !== options.textNodeName) {\n        matcher.pop();\n      }\n    }\n\n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if (typeof text === \"string\") {\n    if (text.length > 0) compressedObj[options.textNodeName] = text;\n  } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n  return compressedObj;\n}\n\nfunction propName(obj) {\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if (key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, matcher, options) {\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];  // This is the PREFIXED name (e.g., \"@_class\")\n\n      // Strip prefix for matcher path (for isArray callback)\n      const rawAttrName = atrrName.startsWith(options.attributeNamePrefix)\n        ? atrrName.substring(options.attributeNamePrefix.length)\n        : atrrName;\n\n      // For attributes, we need to create a temporary path\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = options.jPath\n        ? matcher.toString() + \".\" + rawAttrName\n        : matcher;\n\n      if (options.isArray(atrrName, jPathOrMatcher, true, true)) {\n        obj[atrrName] = [attrMap[atrrName]];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options) {\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n\n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n\n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n      i += 2;\n      i = readPI(xmlData, i);\n      if (i.err) return i;\n    } else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n\n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n            //don't push into stack\n          } else {\n            tags.push({ tagName, tagStartPos });\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i + 1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else {\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          } else {\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if (isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  } else if (tags.length == 1) {\n    return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  } else if (tags.length > 0) {\n    return getErrorObject('InvalidXml', \"Invalid '\" +\n      JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n      \"' found.\", { line: 1, col: 1 });\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char) {\n  return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n    constructor(options) {\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n\n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData, validationOption) {\n        if (typeof xmlData !== \"string\" && xmlData.toString) {\n            xmlData = xmlData.toString();\n        } else if (typeof xmlData !== \"string\") {\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n\n        if (validationOption) {\n            if (validationOption === true) validationOption = {}; //validate with default options\n\n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n                throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n            }\n        }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options, orderedObjParser.matcher);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value) {\n        if (value.indexOf(\"&\") !== -1) {\n            throw new Error(\"Entity value can't have '&'\")\n        } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        } else if (value === \"&\") {\n            throw new Error(\"An entity with value '&' is not permitted\");\n        } else {\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n\n    // Pre-compile stopNode expressions for pattern matching\n    const stopNodeExpressions = [];\n    if (options.stopNodes && Array.isArray(options.stopNodes)) {\n        for (let i = 0; i < options.stopNodes.length; i++) {\n            const node = options.stopNodes[i];\n            if (typeof node === 'string') {\n                stopNodeExpressions.push(new Expression(node));\n            } else if (node instanceof Expression) {\n                stopNodeExpressions.push(node);\n            }\n        }\n    }\n\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n\n    return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n        throw new Error(\"Maximum nested tags exceeded\");\n    }\n\n    if (!Array.isArray(arr)) {\n        // Non-array values (e.g. string tag values) should be treated as text content\n        if (arr !== undefined && arr !== null) {\n            let text = arr.toString();\n            text = replaceEntitiesValue(text, options);\n            return text;\n        }\n        return \"\";\n    }\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if (tagName === undefined) continue;\n\n        // Extract attributes from \":@\" property\n        const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n        // Push tag to matcher WITH attributes\n        matcher.push(tagName, attrValues);\n\n        // Check if this is a stop node using Expression matching\n        const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        }\n\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n\n        // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n        const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n\n        // If this is a stopNode, get raw content without processing\n        let tagValue;\n        if (isStopNode) {\n            tagValue = getRawContent(tagObj[tagName], options);\n        } else {\n\n            tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n        }\n\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n\n        // Pop tag from matcher\n        matcher.pop();\n    }\n\n    return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n    if (!attrMap || options.ignoreAttributes) return null;\n\n    const attrValues = {};\n    let hasAttrs = false;\n\n    for (let attr in attrMap) {\n        if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n        // Remove the attribute prefix to get clean attribute name\n        const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n            ? attr.substr(options.attributeNamePrefix.length)\n            : attr;\n        attrValues[cleanAttrName] = attrMap[attr];\n        hasAttrs = true;\n    }\n\n    return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n    if (!Array.isArray(arr)) {\n        // Non-array values return as-is\n        if (arr !== undefined && arr !== null) {\n            return arr.toString();\n        }\n        return \"\";\n    }\n\n    let content = \"\";\n    for (let i = 0; i < arr.length; i++) {\n        const item = arr[i];\n        const tagName = propName(item);\n\n        if (tagName === options.textNodeName) {\n            // Raw text content - NO processing, NO entity replacement\n            content += item[tagName];\n        } else if (tagName === options.cdataPropName) {\n            // CDATA content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName === options.commentPropName) {\n            // Comment content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName && tagName[0] === \"?\") {\n            // Processing instruction - skip for stopNodes\n            continue;\n        } else if (tagName) {\n            // Nested tags within stopNode\n            // Recursively get raw content and reconstruct the tag\n            // For stopNodes, we don't process attributes either\n            const attStr = attr_to_str_raw(item[\":@\"], options);\n            const nestedContent = getRawContent(item[tagName], options);\n\n            if (!nestedContent || nestedContent.length === 0) {\n                content += `<${tagName}${attStr}/>`;\n            } else {\n                content += `<${tagName}${attStr}>${nestedContent}`;\n            }\n        }\n    }\n    return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            // For stopNodes, use raw value without processing\n            let attrVal = attrMap[attr];\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            let attrVal;\n\n            if (isStopNode) {\n                // For stopNodes, use raw value without any processing\n                attrVal = attrMap[attr];\n            } else {\n                // Normal processing: apply attributeValueProcessor and entity replacement\n                attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n                attrVal = replaceEntitiesValue(attrVal, options);\n            }\n\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n    if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n    for (let i = 0; i < stopNodeExpressions.length; i++) {\n        if (matcher.matches(stopNodeExpressions[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function (key, a) {\n    return a;\n  },\n  attributeValueProcessor: function (attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false,\n  maxNestedTags: 100,\n  jPath: true  // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n\n  // Convert old-style stopNodes for backward compatibility\n  // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n  // New syntax: \"..tag\" means \"tag anywhere in tree\"\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    this.options.stopNodes = this.options.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Convert old wildcard syntax to deep wildcard\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n\n  // Pre-compile stopNode expressions for pattern matching\n  this.stopNodeExpressions = [];\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    for (let i = 0; i < this.options.stopNodes.length; i++) {\n      const node = this.options.stopNodes[i];\n      if (typeof node === 'string') {\n        this.stopNodeExpressions.push(new Expression(node));\n      } else if (node instanceof Expression) {\n        this.stopNodeExpressions.push(node);\n      }\n    }\n  }\n\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function (/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function () {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function (jObj) {\n  if (this.options.preserveOrder) {\n    return buildFromOrderedJs(jObj, this.options);\n  } else {\n    if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n      jObj = {\n        [this.options.arrayNodeName]: jObj\n      }\n    }\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n    return this.j2x(jObj, 0, matcher).val;\n  }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n  let attrStr = '';\n  let val = '';\n  if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n    throw new Error(\"Maximum nested tags exceeded\");\n  }\n  // Get jPath based on option: string for backward compatibility, or Matcher for new features\n  const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n  // Check if current node is a stopNode (will be used for attribute encoding)\n  const isCurrentStopNode = this.checkStopNode(matcher);\n\n  for (let key in jObj) {\n    if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          // Check if this is a stopNode before building\n          matcher.push(key);\n          const isStopNode = this.checkStopNode(matcher);\n          matcher.pop();\n\n          if (isStopNode) {\n            // Build as raw content without encoding\n            const textValue = '' + jObj[key];\n            if (textValue === '') {\n              val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n            } else {\n              val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n        } else if (typeof item === 'object' && item !== null) {\n          const nestedContent = this.buildRawContent(item);\n          const nestedAttrs = this.buildAttributesForStopNode(item);\n          if (nestedContent === '') {\n            content += `<${key}${nestedAttrs}/>`;\n          } else {\n            content += `<${key}${nestedAttrs}>${nestedContent}`;\n          }\n        }\n      }\n    } else if (typeof value === 'object' && value !== null) {\n      // Nested object\n      const nestedContent = this.buildRawContent(value);\n      const nestedAttrs = this.buildAttributesForStopNode(value);\n      if (nestedContent === '') {\n        content += `<${key}${nestedAttrs}/>`;\n      } else {\n        content += `<${key}${nestedAttrs}>${nestedContent}`;\n      }\n    } else {\n      // Primitive value\n      content += `<${key}>${value}`;\n    }\n  }\n\n  return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n  if (!obj || typeof obj !== 'object') return '';\n\n  let attrStr = '';\n\n  // Check for attributesGroupName (when attributes are grouped)\n  if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n    const attrGroup = obj[this.options.attributesGroupName];\n    for (let attrKey in attrGroup) {\n      if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n      const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n        ? attrKey.substring(this.options.attributeNamePrefix.length)\n        : attrKey;\n      const val = attrGroup[attrKey];\n      if (val === true && this.options.suppressBooleanAttributes) {\n        attrStr += ' ' + cleanKey;\n      } else {\n        attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n      }\n    }\n  } else {\n    // Look for individual attributes\n    for (let key in obj) {\n      if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n      const attr = this.isAttribute(key);\n      if (attr) {\n        const val = obj[key];\n        if (val === true && this.options.suppressBooleanAttributes) {\n          attrStr += ' ' + attr;\n        } else {\n          attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n        }\n      }\n    }\n  }\n\n  return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n  if (val === \"\") {\n    if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  } else {\n\n    let tagEndExp = '' + val + tagEndExp);\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    } else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp);\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function (key) {\n  let closeTag = \"\";\n  if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n    if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n  } else if (this.options.suppressEmptyNode) { //empty\n    closeTag = \"/\";\n  } else {\n    closeTag = `>` + this.newLine;\n  } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` + this.newLine;\n  } else if (key[0] === \"?\") {//PI tag\n    return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n  } else {\n    // Normal processing: apply tagValueProcessor and entity replacement\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n\n    if (textValue === '') {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    } else {\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n        textValue +\n        ' 0 && this.options.processEntities) {\n    for (let i = 0; i < this.options.entities.length; i++) {\n      const entity = this.options.entities[i];\n      textValue = textValue.replace(entity.regex, entity.val);\n    }\n  }\n  return textValue;\n}\n\nfunction indentate(level) {\n  return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n  if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n    return name.substr(this.attrPrefixLen);\n  } else {\n    return false;\n  }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n    return getBuilder().build(namespace({\n        lockinfo: {\n            \"@_xmlns:d\": \"DAV:\",\n            lockscope: {\n                exclusive: {}\n            },\n            locktype: {\n                write: {}\n            },\n            owner: {\n                href: ownerHREF\n            }\n        }\n    }, \"d\"));\n}\nfunction getBuilder() {\n    return new XMLBuilder({\n        attributeNamePrefix: \"@_\",\n        format: true,\n        ignoreAttributes: false,\n        suppressEmptyNode: true\n    });\n}\nfunction getParser() {\n    return new XMLParser({\n        removeNSPrefix: true,\n        parseAttributeValue: true,\n        parseTagValue: true\n    });\n}\nfunction namespace(obj, ns) {\n    const copy = { ...obj };\n    for (const key in copy) {\n        if (!copy.hasOwnProperty(key)) {\n            continue;\n        }\n        if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n            copy[`${ns}:${key}`] = namespace(copy[key], ns);\n            delete copy[key];\n        }\n        else if (/^@_/.test(key) === false) {\n            copy[`${ns}:${key}`] = copy[key];\n            delete copy[key];\n        }\n    }\n    return copy;\n}\nexport function parseGenericResponse(xml) {\n    return getParser().parse(xml);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n    const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n    const headers = {\n        Accept: \"text/plain,application/xml\",\n        Timeout: timeout\n    };\n    if (refreshToken) {\n        headers.If = refreshToken;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"LOCK\",\n        headers,\n        data: generateLockXML(context.contactHref)\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const lockPayload = parseGenericResponse(responseData);\n    const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n    const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n    if (!token) {\n        const err = createErrorFromResponse(response, \"No lock token received: \");\n        throw err;\n    }\n    return {\n        token,\n        serverTimeout\n    };\n}\nexport async function unlock(context, path, token, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"UNLOCK\",\n        headers: {\n            \"Lock-Token\": token\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (response.status !== 204 && response.status !== 200) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"OPTIONS\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        throw error;\n    }\n    const davHeader = response.headers.get(\"DAV\") ?? \"\";\n    const compliance = davHeader.split(\",\").map(item => item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * @param {any} value -\n * @param {any} passes -\n */\nexport function decodeHtmlEntities(value, passes = 1) {\n\tconst parser = new DOMParser()\n\tlet decoded = value\n\tfor (let i = 0; i < passes; i++) {\n\t\tdecoded = parser.parseFromString(decoded, 'text/html').documentElement.textContent\n\t}\n\treturn decoded\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { defineStore } from 'pinia'\n\nexport const useDeletedCommentLimbo = defineStore('deletedCommentLimbo', {\n\tstate: () => ({\n\t\tidsInLimbo: [],\n\t}),\n\tactions: {\n\t\taddId(id) {\n\t\t\tthis.idsInLimbo.push(id)\n\t\t},\n\n\t\tremoveId(id) {\n\t\t\tconst index = this.idsInLimbo.indexOf(id)\n\t\t\tif (index > -1) {\n\t\t\t\tthis.idsInLimbo.splice(index, 1)\n\t\t\t}\n\t\t},\n\n\t\tcheckForId(id) {\n\t\t\treturn this.idsInLimbo.includes(id)\n\t\t},\n\t},\n})\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { showError, showUndo, TOAST_UNDO_TIMEOUT } from '@nextcloud/dialogs'\nimport { mapStores } from 'pinia'\nimport logger from '../logger.js'\nimport DeleteComment from '../services/DeleteComment.js'\nimport EditComment from '../services/EditComment.js'\nimport NewComment from '../services/NewComment.js'\nimport { useDeletedCommentLimbo } from '../store/deletedCommentLimbo.js'\n\nexport default {\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\tdefault: null,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tresourceId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tresourceType: {\n\t\t\ttype: String,\n\t\t\tdefault: 'files',\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tdeleted: false,\n\t\t\tediting: false,\n\t\t\tloading: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\t...mapStores(useDeletedCommentLimbo),\n\t},\n\n\tmethods: {\n\t\t// EDITION\n\t\tonEdit() {\n\t\t\tthis.editing = true\n\t\t},\n\t\tonEditCancel() {\n\t\t\tthis.editing = false\n\t\t\t// Restore original value\n\t\t\tthis.updateLocalMessage(this.message)\n\t\t},\n\t\tasync onEditComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tawait EditComment(this.resourceType, this.resourceId, this.id, message)\n\t\t\t\tlogger.debug('Comment edited', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id, message })\n\t\t\t\tthis.$emit('update:message', message)\n\t\t\t\tthis.editing = false\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to edit the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to edit the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\n\t\t// DELETION\n\t\tonDeleteWithUndo() {\n\t\t\tthis.$emit('delete')\n\t\t\tthis.deleted = true\n\t\t\tthis.deletedCommentLimboStore.addId(this.id)\n\t\t\tconst timeOutDelete = setTimeout(this.onDelete, TOAST_UNDO_TIMEOUT)\n\t\t\tshowUndo(t('comments', 'Comment deleted'), () => {\n\t\t\t\tclearTimeout(timeOutDelete)\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t})\n\t\t},\n\t\tasync onDelete() {\n\t\t\ttry {\n\t\t\t\tawait DeleteComment(this.resourceType, this.resourceId, this.id)\n\t\t\t\tlogger.debug('Comment deleted', { resourceType: this.resourceType, resourceId: this.resourceId, id: this.id })\n\t\t\t\tthis.$emit('delete', this.id)\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to delete the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to delete the comment', { error })\n\t\t\t\tthis.deleted = false\n\t\t\t\tthis.deletedCommentLimboStore.removeId(this.id)\n\t\t\t}\n\t\t},\n\n\t\t// CREATION\n\t\tasync onNewComment(message) {\n\t\t\tthis.loading = true\n\t\t\ttry {\n\t\t\t\tconst newComment = await NewComment(this.resourceType, this.resourceId, message)\n\t\t\t\tlogger.debug('New comment posted', { resourceType: this.resourceType, resourceId: this.resourceId, newComment })\n\t\t\t\tthis.$emit('new', newComment)\n\n\t\t\t\t// Clear old content\n\t\t\t\tthis.$emit('update:message', '')\n\t\t\t\tthis.localMessage = ''\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('comments', 'An error occurred while trying to create the comment'))\n\t\t\t\tlogger.error('An error occurred while trying to create the comment', { error })\n\t\t\t} finally {\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t},\n\t},\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Edit an existing comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n * @param {string} message the message content\n */\nexport default async function(resourceType, resourceId, commentId, message) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\treturn await client.customRequest(commentPath, {\n\t\tmethod: 'PROPPATCH',\n\t\tdata: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${message}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n\t})\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport client from './DavClient.js'\n\n/**\n * Delete a comment\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {number} commentId the comment iD\n */\nexport default async function(resourceType, resourceId, commentId) {\n\tconst commentPath = ['', resourceType, resourceId, commentId].join('/')\n\n\t// Fetch newly created comment data\n\tawait client.deleteFile(commentPath)\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getRootPath } from '../utils/davUtils.js'\nimport { decodeHtmlEntities } from '../utils/decodeHtmlEntities.js'\nimport client from './DavClient.js'\n\n/**\n * Retrieve the comments list\n *\n * @param {string} resourceType the resource type\n * @param {number} resourceId the resource ID\n * @param {string} message the message\n * @return {object} the new comment\n */\nexport default async function(resourceType, resourceId, message) {\n\tconst resourcePath = ['', resourceType, resourceId].join('/')\n\n\tconst response = await axios.post(getRootPath() + resourcePath, {\n\t\tactorDisplayName: getCurrentUser().displayName,\n\t\tactorId: getCurrentUser().uid,\n\t\tactorType: 'users',\n\t\tcreationDateTime: (new Date()).toUTCString(),\n\t\tmessage,\n\t\tobjectType: resourceType,\n\t\tverb: 'comment',\n\t})\n\n\t// Retrieve comment id from resource location\n\tconst commentId = parseInt(response.headers['content-location'].split('/').pop())\n\tconst commentPath = resourcePath + '/' + commentId\n\n\t// Fetch newly created comment data\n\tconst comment = await client.stat(commentPath, {\n\t\tdetails: true,\n\t})\n\n\tconst props = comment.data.props\n\t// Decode twice to handle potentially double-encoded entities\n\t// FIXME Remove this once https://github.com/nextcloud/server/issues/29306\n\t// is resolved\n\tprops.actorDisplayName = decodeHtmlEntities(props.actorDisplayName, 2)\n\tprops.message = decodeHtmlEntities(props.message, 2)\n\n\treturn comment.data\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=script&lang=js\"","\n\n\n\n\n\n","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comment.vue?vue&type=template&id=70317f94&scoped=true\"\nimport script from \"./Comment.vue?vue&type=script&lang=js\"\nexport * from \"./Comment.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comment.vue?vue&type=style&index=0&id=70317f94&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"70317f94\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c(_vm.tag,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.deleted && !_vm.isLimbo),expression:\"!deleted && !isLimbo\"}],tag:\"component\",staticClass:\"comment\",class:{ 'comment--loading': _vm.loading }},[_c('div',{staticClass:\"comment__side\"},[_c('NcAvatar',{staticClass:\"comment__avatar\",attrs:{\"display-name\":_vm.actorDisplayName,\"user\":_vm.actorId,\"size\":32}})],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__body\"},[_c('div',{staticClass:\"comment__header\"},[_c('span',{staticClass:\"comment__author\"},[_vm._v(_vm._s(_vm.actorDisplayName))]),_vm._v(\" \"),(_vm.isOwnComment && _vm.id && !_vm.loading)?_c('NcActions',{staticClass:\"comment__actions\"},[(!_vm.editing)?[_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onEdit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconPencilOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,3345211262)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Edit comment'))+\"\\n\\t\\t\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.onDeleteWithUndo},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconTrashCanOutline',{attrs:{\"size\":20}})]},proxy:true}],null,false,1034796883)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Delete comment'))+\"\\n\\t\\t\\t\\t\\t\")])]:_c('NcActionButton',{on:{\"click\":_vm.onEditCancel},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconClose',{attrs:{\"size\":20}})]},proxy:true}],null,false,2888946197)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Cancel edit'))+\"\\n\\t\\t\\t\\t\")])],2):_vm._e(),_vm._v(\" \"),(_vm.id && _vm.loading)?_c('div',{staticClass:\"comment_loading icon-loading-small\"}):(_vm.creationDateTime)?_c('NcDateTime',{staticClass:\"comment__timestamp\",attrs:{\"timestamp\":_vm.timestamp,\"ignore-seconds\":true}}):_vm._e()],1),_vm._v(\" \"),(_vm.editor || _vm.editing)?_c('form',{staticClass:\"comment__editor\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('div',{staticClass:\"comment__editor-group\"},[_c('NcRichContenteditable',{ref:\"editor\",attrs:{\"auto-complete\":_vm.autoComplete,\"contenteditable\":!_vm.loading,\"label\":_vm.editor ? _vm.t('comments', 'New comment') : _vm.t('comments', 'Edit comment'),\"placeholder\":_vm.t('comments', 'Write a comment …'),\"model-value\":_vm.localMessage,\"user-data\":_vm.userData,\"aria-describedby\":\"tab-comments__editor-description\"},on:{\"update:value\":_vm.updateLocalMessage,\"submit\":_vm.onSubmit}}),_vm._v(\" \"),_c('div',{staticClass:\"comment__submit\"},[_c('NcButton',{attrs:{\"variant\":\"tertiary-no-background\",\"type\":\"submit\",\"aria-label\":_vm.t('comments', 'Post comment'),\"disabled\":_vm.isEmptyMessage},on:{\"click\":_vm.onSubmit},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loading)?_c('NcLoadingIcon'):_c('IconArrowRight',{attrs:{\"size\":20}})]},proxy:true}],null,false,758946661)})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"comment__editor-description\",attrs:{\"id\":\"tab-comments__editor-description\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', '@ for mentions, : for emoji, / for smart picker'))+\"\\n\\t\\t\\t\")])]):_c('NcRichText',{staticClass:\"comment__message\",class:{ 'comment__message--expanded': _vm.expanded },attrs:{\"text\":_vm.richContent.message,\"arguments\":_vm.richContent.mentions,\"use-markdown\":\"\"},nativeOn:{\"click\":function($event){return _vm.onExpand.apply(null, arguments)}}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n    props: {\n        resourceId: {\n            type: Number,\n            required: true,\n        },\n        resourceType: {\n            type: String,\n            default: 'files',\n        },\n    },\n    data() {\n        return {\n            editorData: {\n                actorDisplayName: getCurrentUser().displayName,\n                actorId: getCurrentUser().uid,\n                key: 'editor',\n            },\n            userData: {},\n            currentResourceId: this.resourceId,\n        };\n    },\n    methods: {\n        /**\n         * Autocomplete `@mentions`\n         *\n         * @param search the query\n         * @param callback the callback to process the results with\n         */\n        async autoComplete(search, callback) {\n            const { data } = await axios.get(generateOcsUrl('core/autocomplete/get'), {\n                params: {\n                    search,\n                    itemType: this.resourceType,\n                    itemId: this.currentResourceId,\n                    sorter: 'commenters|share-recipients',\n                    limit: loadState('comments', 'maxAutoCompleteResults'),\n                },\n            });\n            // Save user data so it can be used by the editor to replace mentions\n            data.ocs.data.forEach((user) => {\n                this.userData[user.id] = user;\n            });\n            return callback(Object.values(this.userData));\n        },\n        /**\n         * Make sure we have all mentions as Array of objects\n         *\n         * @param mentions the mentions list\n         */\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        genMentionsData(mentions) {\n            Object.values(mentions)\n                .flat()\n                .forEach((mention) => {\n                this.userData[mention.mentionId] = {\n                    // TODO: support groups\n                    icon: 'icon-user',\n                    id: mention.mentionId,\n                    label: mention.mentionDisplayName,\n                    source: 'users',\n                    primary: getCurrentUser()?.uid === mention.mentionId,\n                };\n            });\n            return this.userData;\n        },\n    },\n});\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n/**\n * Creates a cancelable axios 'request object'.\n *\n * @param {Function} request the axios promise request\n * @return {object}\n */\nfunction cancelableRequest(request) {\n\tconst controller = new AbortController()\n\tconst signal = controller.signal\n\n\t/**\n\t * Execute the request\n\t *\n\t * @param {string} url the url to send the request to\n\t * @param {object} [options] optional config for the request\n\t */\n\tconst fetch = async function(url, options) {\n\t\tconst response = await request(\n\t\t\turl,\n\t\t\t{ signal, ...options },\n\t\t)\n\t\treturn response\n\t}\n\n\treturn {\n\t\trequest: fetch,\n\t\tabort: () => controller.abort(),\n\t}\n}\n\nexport default cancelableRequest\n","\n\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport client from './DavClient.js';\n/**\n * Mark comments older than the date timestamp as read\n *\n * @param resourceType the resource type\n * @param resourceId the resource ID\n * @param date the date object\n */\nexport function markCommentsAsRead(resourceType, resourceId, date) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const readMarker = date.toUTCString();\n    return client.customRequest(resourcePath, {\n        method: 'PROPPATCH',\n        data: `\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t${readMarker}\n\t\t\t\t\n\t\t\t\n\t\t\t`,\n    });\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=script&lang=js\"","\n      import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n      import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n      import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n      import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n      import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n      import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n      import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n      \n      \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\";\n       export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Comments.vue?vue&type=template&id=6c8c157a&scoped=true\"\nimport script from \"./Comments.vue?vue&type=script&lang=js\"\nexport * from \"./Comments.vue?vue&type=script&lang=js\"\nimport style0 from \"./Comments.vue?vue&type=style&index=0&id=6c8c157a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  \"6c8c157a\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"element-visibility\",rawName:\"v-element-visibility\",value:(_vm.onVisibilityChange),expression:\"onVisibilityChange\"}],staticClass:\"comments\",class:{ 'icon-loading': _vm.isFirstLoading }},[_c('Comment',_vm._b({staticClass:\"comments__writer\",attrs:{\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"editor\":true,\"user-data\":_vm.userData,\"resource-id\":_vm.currentResourceId},on:{\"new\":_vm.onNewComment}},'Comment',_vm.editorData,false)),_vm._v(\" \"),(!_vm.isFirstLoading)?[(!_vm.hasComments && _vm.done)?_c('NcEmptyContent',{staticClass:\"comments__empty\",attrs:{\"name\":_vm.t('comments', 'No comments yet, start the conversation!')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconMessageReplyTextOutline')]},proxy:true}],null,false,326612300)}):_c('ul',_vm._l((_vm.comments),function(comment){return _c('Comment',_vm._b({key:comment.props.id,staticClass:\"comments__list\",attrs:{\"tag\":\"li\",\"auto-complete\":_vm.autoComplete,\"resource-type\":_vm.resourceType,\"message\":comment.props.message,\"resource-id\":_vm.currentResourceId,\"user-data\":_vm.genMentionsData(comment.props.mentions)},on:{\"update:message\":function($event){return _vm.$set(comment.props, \"message\", $event)},\"delete\":_vm.onDelete}},'Comment',comment.props,false))}),1),_vm._v(\" \"),(_vm.loading && !_vm.isFirstLoading)?_c('div',{staticClass:\"comments__info icon-loading\"}):(_vm.hasComments && _vm.done)?_c('div',{staticClass:\"comments__info\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('comments', 'No more messages'))+\"\\n\\t\\t\")]):(_vm.error)?[_c('NcEmptyContent',{staticClass:\"comments__error\",attrs:{\"name\":_vm.error},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}],null,false,3663249556)}),_vm._v(\" \"),_c('NcButton',{staticClass:\"comments__retry\",on:{\"click\":_vm.getComments},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconRefresh')]},proxy:true}],null,false,2997625269)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('comments', 'Retry'))+\"\\n\\t\\t\\t\")])]:_vm._e()]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getCSPNonce } from '@nextcloud/auth'\nimport { n, t } from '@nextcloud/l10n'\nimport { createPinia, PiniaVuePlugin } from 'pinia'\nimport Vue from 'vue'\nimport CommentsApp from '../views/Comments.vue'\nimport logger from '../logger.js'\n\nVue.use(PiniaVuePlugin)\n\n__webpack_nonce__ = getCSPNonce()\n\n// Add translates functions\nVue.mixin({\n\tdata() {\n\t\treturn {\n\t\t\tlogger,\n\t\t}\n\t},\n\tmethods: {\n\t\tt,\n\t\tn,\n\t},\n})\n\nexport default class CommentInstance {\n\t/**\n\t * Initialize a new Comments instance for the desired type\n\t *\n\t * @param {string} resourceType the comments endpoint type\n\t * @param  {object} options the vue options (propsData, parent, el...)\n\t */\n\tconstructor(resourceType = 'files', options = {}) {\n\t\tconst pinia = createPinia()\n\n\t\t// Merge options and set `resourceType` property\n\t\toptions = {\n\t\t\t...options,\n\t\t\tpropsData: {\n\t\t\t\t...(options.propsData ?? {}),\n\t\t\t\tresourceType,\n\t\t\t},\n\t\t\tpinia,\n\t\t}\n\t\t// Init Comments component\n\t\tconst View = Vue.extend(CommentsApp)\n\t\treturn new View(options)\n\t}\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from './logger.js'\nimport CommentsInstance from './services/CommentsInstance.js'\n\n// Init Comments\nif (window.OCA && !window.OCA.Comments) {\n\tObject.assign(window.OCA, { Comments: {} })\n}\n\n// Init Comments App view\nObject.assign(window.OCA.Comments, { View: CommentsInstance })\nlogger.debug('OCA.Comments.View initialized')\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comment[data-v-70317f94]{display:flex;gap:8px;padding:5px 10px}.comment__side[data-v-70317f94]{display:flex;align-items:flex-start;padding-top:6px}.comment__body[data-v-70317f94]{display:flex;flex-grow:1;flex-direction:column;container-type:inline-size}.comment__header[data-v-70317f94]{display:flex;align-items:center;min-height:44px}.comment__actions[data-v-70317f94]{margin-inline-start:10px !important}.comment__author[data-v-70317f94]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--color-text-maxcontrast)}.comment_loading[data-v-70317f94],.comment__timestamp[data-v-70317f94]{margin-inline-start:auto;text-align:end;white-space:nowrap;color:var(--color-text-maxcontrast)}.comment__editor-group[data-v-70317f94]{position:relative}.comment__editor-description[data-v-70317f94]{color:var(--color-text-maxcontrast);padding-block:var(--default-grid-baseline)}.comment__submit[data-v-70317f94]{position:absolute !important;bottom:5px;inset-inline-end:0}.comment__message[data-v-70317f94]{white-space:pre-wrap;word-break:normal;max-height:200px;overflow:auto;scrollbar-gutter:stable;scrollbar-width:thin;margin-top:-6px}.comment__message--expanded[data-v-70317f94]{max-height:none;overflow:visible}.comment__message[data-v-70317f94] img{max-width:100%;height:auto}.rich-contenteditable__input[data-v-70317f94]{min-height:44px;margin:0;padding:10px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/components/Comment.vue\"],\"names\":[],\"mappings\":\"AAKA,0BACC,YAAA,CACA,OAAA,CACA,gBAAA,CAEA,gCACC,YAAA,CACA,sBAAA,CACA,eAAA,CAGD,gCACC,YAAA,CACA,WAAA,CACA,qBAAA,CACA,0BAAA,CAGD,kCACC,YAAA,CACA,kBAAA,CACA,eAAA,CAGD,mCACC,mCAAA,CAGD,kCACC,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,mCAAA,CAGD,uEAEC,wBAAA,CACA,cAAA,CACA,kBAAA,CACA,mCAAA,CAGD,wCACC,iBAAA,CAGD,8CACC,mCAAA,CACA,0CAAA,CAGD,kCACC,4BAAA,CACA,UAAA,CACA,kBAAA,CAGD,mCACC,oBAAA,CACA,iBAAA,CACA,gBAAA,CACA,aAAA,CACA,uBAAA,CACA,oBAAA,CACA,eAAA,CACA,6CACC,eAAA,CACA,gBAAA,CAED,uCACC,cAAA,CACA,WAAA,CAKH,8CACC,eAAA,CACA,QAAA,CACA,YAlFiB\",\"sourcesContent\":[\"\\n@use \\\"sass:math\\\";\\n\\n$comment-padding: 10px;\\n\\n.comment {\\n\\tdisplay: flex;\\n\\tgap: 8px;\\n\\tpadding: 5px $comment-padding;\\n\\n\\t&__side {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: flex-start;\\n\\t\\tpadding-top: 6px;\\n\\t}\\n\\n\\t&__body {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-grow: 1;\\n\\t\\tflex-direction: column;\\n\\t\\tcontainer-type: inline-size;\\n\\t}\\n\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tmin-height: 44px;\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tmargin-inline-start: $comment-padding !important;\\n\\t}\\n\\n\\t&__author {\\n\\t\\toverflow: hidden;\\n\\t\\twhite-space: nowrap;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&_loading,\\n\\t&__timestamp {\\n\\t\\tmargin-inline-start: auto;\\n\\t\\ttext-align: end;\\n\\t\\twhite-space: nowrap;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t}\\n\\n\\t&__editor-group {\\n\\t\\tposition: relative;\\n\\t}\\n\\n\\t&__editor-description {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tpadding-block: var(--default-grid-baseline);\\n\\t}\\n\\n\\t&__submit {\\n\\t\\tposition: absolute !important;\\n\\t\\tbottom: 5px;\\n\\t\\tinset-inline-end: 0;\\n\\t}\\n\\n\\t&__message {\\n\\t\\twhite-space: pre-wrap;\\n\\t\\tword-break: normal;\\n\\t\\tmax-height: 200px;\\n\\t\\toverflow: auto;\\n\\t\\tscrollbar-gutter: stable;\\n\\t\\tscrollbar-width: thin;\\n\\t\\tmargin-top: -6px;\\n\\t\\t&--expanded {\\n\\t\\t\\tmax-height: none;\\n\\t\\t\\toverflow: visible;\\n\\t\\t}\\n\\t\\t:deep(img) {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\theight: auto;\\n\\t\\t}\\n\\t}\\n}\\n\\n.rich-contenteditable__input {\\n\\tmin-height: 44px;\\n\\tmargin: 0;\\n\\tpadding: $comment-padding;\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.comments[data-v-6c8c157a]{min-height:100%;display:flex;flex-direction:column}.comments__empty[data-v-6c8c157a],.comments__error[data-v-6c8c157a]{flex:1 0}.comments__retry[data-v-6c8c157a]{margin:0 auto}.comments__info[data-v-6c8c157a]{height:60px;color:var(--color-text-maxcontrast);text-align:center;line-height:60px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/comments/src/views/Comments.vue\"],\"names\":[],\"mappings\":\"AACA,2BACC,eAAA,CACA,YAAA,CACA,qBAAA,CAEA,oEAEC,QAAA,CAGD,kCACC,aAAA,CAGD,iCACC,WAAA,CACA,mCAAA,CACA,iBAAA,CACA,gBAAA\",\"sourcesContent\":[\"\\n.comments {\\n\\tmin-height: 100%;\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\n\\t&__empty,\\n\\t&__error {\\n\\t\\tflex: 1 0;\\n\\t}\\n\\n\\t&__retry {\\n\\t\\tmargin: 0 auto;\\n\\t}\\n\\n\\t&__info {\\n\\t\\theight: 60px;\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\ttext-align: center;\\n\\t\\tline-height: 60px;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n    return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (isArray(list)) {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction 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; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? 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; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"428c2ff62c4b8b3c97fc\",\"4508\":\"bd9a6bf4d650882814a8\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"fa22a350943490669cfb\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 7062;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t7062: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(15256)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","assertError","err","isError","Error","obj","Object","prototype","toString","call","Layerr","constructor","errorOptionsOrMessage","messageText","args","arguments","options","shortMessage","length","cause","slice","join","assign","parseArguments","message","super","defineProperty","value","info","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","output","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","filePath","replaced","replace","encodeURIComponent","split","makePathAbsolute","pathStr","startsWith","normalisePath","normalisedPath","test","substr","extractURLPath","fullURL","urlPath","pathname","joinURL","parts","strArray","resultArray","TypeError","match","first","shift","i","component","push","str","normalize","reduce","nextPart","partIndex","generateDigestAuthHeader","digest","url","uri","indexOf","method","toUpperCase","qop","ncString","nc","ha1","algorithm","user","realm","pass","nonce","cnonce","ha1Hash","md5","toLowerCase","ha1Compute","username","password","ha2","digestResponse","authValues","response","opaque","authHeader","k","responseIndicatesDigestAuth","headers","get","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","EntityLevel","EncodingMode","fromBase64","text","base64","decode","generateBasicAuthHeader","encode","Map","fromCodePoint","codePointAt","root","WorkerGlobalScope","self","window","globalThis","fetch","bind","AuthType","ErrorCode","setupAuth","context","oauthToken","authType","Auto","Authorization","Digest","hasDigestAuth","createDigestContext","None","Password","Token","token","token_type","access_token","code","InvalidAuthType","Headers","Request","Response","HOT_PATCHER_TYPE","NOOP","createNewItem","original","methods","final","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","target","allowTargetOverrides","keys","forEach","foreignKey","hasOwnProperty","execute","key","item","result","_this","apply","sequence","isPatched","patch","opts","chain","patchInline","plugin","restore","setFinal","__patcher","isReactNative","TARGET","cloneShallow","getPrototypeOf","proto","isPlainObject","setPrototypeOf","merge","items","nextItem","mergeObjects","obj1","obj2","Array","isArray","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","header","lowerHeader","hasArrayBuffer","ArrayBuffer","objToString","isArrayBuffer","isBuffer","prepareRequestOptions","requestOptions","userOptions","finalOptions","data","signal","httpAgent","httpsAgent","_digest","withCredentials","async","request","requestStandard","ok","status","undefined","requestDigest","requestAuto","re","exec","uid","Math","floor","NONCE_CHARS","random","makeNonce","parseDigestAuth","response2","patcher","body","newHeaders","JSON","stringify","requestDataToFetchBody","credentials","agent","parsedURL","protocol","getFetchOptions","assertValidPattern","pattern","posixClasses","braceEscape","s","rangesToString","ranges","parseClass","glob","position","pos","charAt","negs","sawStart","uflag","escaping","negate","endPos","rangeStart","WHILE","c","cls","unip","u","neg","entries","sranges","snegs","windowsPathsNoEscape","types","Set","isExtglobType","has","isExtglobAST","adoptionMap","adoptionWithSpaceMap","adoptionAnyMap","usurpMap","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","parent","hasMagic","p","map","n","pop","pp","part","copyIn","toJSON","ret","isStart","unshift","isEnd","pl","clone","ast","opt","extDepth","maxDepth","maxExtglobRecursion","inBrace","braceStart","braceNeg","acc","noext","ext","depthAdd","substring","child","gc","includes","index","blank","splice","m","nt","iterations","done","fromGlob","toMMPattern","toRegExpSource","nocase","nocaseMagicOnly","flags","RegExp","_src","_glob","allowDot","dot","noEmpty","src","_","start","aps","needNoTrav","needNoDot","end","repeated","me","bodyDotAllowed","_hasMagic","filter","inStar","needUflag","consumed","magic","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","f","endsWith","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","$0","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","len","defaultPlatform","process","env","__MINIMATCH_TESTING_PLATFORM__","platform","sep","GLOBSTAR","Symbol","a","b","defaults","def","orig","unescape","escape","makeRe","braceExpand","list","nobrace","mm","nonull","globMagic","set","nonegate","comment","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","maxGlobstarRecursion","regexp","allowWindowsEscape","make","magicalBraces","debug","parseNegate","console","error","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","parse","noglobstar","j","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","prev","levelTwoFileOptimize","didSomething","dd","gss","next","p2","other","splin","matched","partsMatch","emptyGSMatch","ai","bi","which","negateOffset","matchOne","file","fileStartIndex","patternStartIndex","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fileIndex","patternIndex","firstgs","lastgs","lastIndexOf","head","tail","fileHead","fileTailMatch","tailStart","sawSome","bodySegments","currentBody","nonGsParts","nonGsPartsSums","fileLength","bodyIndex","globStarDepth","sawTail","bs","after","sub","fi","pi","fl","hit","fastTest","Reflect","twoStar","add","open","close","ex","ff","filename","matchBase","flipNegate","createErrorFromResponse","prefix","statusText","handleResponseCode","processResponsePayload","isDetailed","nameStartChar","regexName","getAllMatches","string","regex","matches","allmatches","startIndex","lastIndex","isName","DANGEROUS_PROPERTY_NAMES","criticalProperties","defaultOnDangerousProperty","defaultOptions","preserveOrder","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","removeNSPrefix","allowBooleanAttributes","parseTagValue","parseAttributeValue","trimValues","cdataPropName","numberParseOptions","hex","leadingZeros","eNotation","tagValueProcessor","tagName","val","attributeValueProcessor","attrName","stopNodes","alwaysCreateTextNode","commentPropName","unpairedTags","processEntities","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","jPath","captureMetaData","maxNestedTags","strictReservedNames","onDangerousProperty","validatePropertyName","propertyName","optionName","normalized","some","dangerous","normalizeProcessEntities","enabled","maxEntitySize","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","maxEntityCount","allowedTags","tagFilter","max","buildOptions","built","propertyNameOptions","node","METADATA_SYMBOL","XmlNode","tagname","create","addChild","getMetaDataSymbol","DocTypeReader","suppressValidationErr","readDocType","xmlData","entities","entityCount","angleBracketsCount","hasBody","exp","hasSeq","entityName","readEntityExp","escaped","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","startChar","elementName","contentModel","trim","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","hexRegex","numRegex","consider","decimalPoint","infinity","eNotationRegx","Matcher","separator","path","siblingStacks","attrValues","namespace","values","currentLevel","siblings","siblingKey","counter","count","tag","updateCurrent","current","getCurrentTag","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","getDepth","includeNamespace","toArray","reset","expression","segments","hasDeepWildcard","_matchWithDeepWildcard","_matchSimple","segment","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","found","attrValue","actualValue","positionValue","snapshot","Expression","_parse","_hasDeepWildcard","seg","_hasAttributeCondition","_hasPositionSelector","currentPart","_parseSegment","bracketContent","withoutBrackets","bracketMatch","content","tagAndPosition","nsIndex","positionMatch","colonIndex","tagPart","posPart","eqIndex","nthMatch","parseInt","hasAttributeCondition","hasPositionSelector","extractRawAttributes","prefixedAttrs","rawAttrs","extractNamespace","rawTagName","ns","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","replaceEntitiesValue","readStopNodeData","saveTextToParentTag","ignoreAttributesFn","entityExpansionCount","currentExpandedLength","matcher","isCurrentNodeStopNode","stopNodeExpressions","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","jPathOrMatcher","newval","parseValue","tags","attrsRegx","attrStr","rawAttrsForMatcher","oldVal","parsedVal","jPathStr","aName","sanitizeName","newVal","attrCollection","xmlObj","textData","docTypeReader","closeIndex","findClosingIndex","lastTagName","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","min","lastTag","isSelfClosing","tagContent","entityConfig","entity","lengthBefore","parentNode","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","search","trimStart","openTagCount","shouldParse","trimmedStr","skipLike","numStr","parse_int","isFinite","sign","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","num","parsedStr","isPositive","Infinity","handleInfinity","toNumber","base","codePoint","fn","newTagName","stripAttributePrefix","prettify","compress","arr","compressedObj","tagObj","property","propName","isLeaf","isLeafTag","assignAttributes","attrMap","atrrName","rawAttrName","propCount","isWhiteSpace","char","readPI","getErrorObject","getLineNumberForPosition","readCommentAndCDATA","readAttributeStr","tagClosed","validAttrStrRegxp","validateAttributeString","attrNames","getPositionFromMatch","validateAttrName","validateAmpersand","validateNumberAmpersand","lineNumber","msg","line","col","validateTagName","lines","XMLParser","validationOption","tagFound","reachedRoot","tagStartPos","closingTag","attrStrStart","isValid","otg","openPos","afterAmp","t","validate","orderedObjParser","orderedResult","addEntity","PropertyType","displaynameTagParser","getPropertyOfType","prop","Original","parseXML","xml","attributeParsers","tagParsers","Promise","resolve","multistatus","normaliseResponse","normaliseResult","processor","tagValue","getParser","prepareFileFromProps","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","resourceType","getcontenttype","mimeType","getetag","etag","collection","stat","basename","lastmod","mime","displayname","translateDiskSpace","getStat","details","remoteURL","Accept","Depth","responseData","responseItem","propstat","e","statusLine","statusCodeStr","statusCode","parseStat","parsing","createDirectory","dirPath","recursive","paths","directory","currentPath","getAllDirectories","sort","creating","testPath","createDirectoryRecursively","TRANSFORM_RETAIN_FORMAT","v","toXml","jArray","indentation","format","indentBy","arrToStr","xmlStr","isPreviousElementTag","extractAttributeValues","isStopNode","checkStopNode","tagText","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","getRawContent","suppressUnpairedNode","suppressEmptyNode","hasAttrs","attr","attr_to_str_raw","nestedContent","attrVal","suppressBooleanAttributes","textValue","oneListGroup","Builder","isAttribute","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","object","level","extractAttributes","rawContent","buildRawContent","buildAttributesForStopNode","buildObjectNode","j2x","buildTextValNode","repeat","jObj","arrayNodeName","isCurrentStopNode","Date","buildAttrPairStr","closeTag","arrLen","listTagVal","listTagAttr","Ks","L","attrGroup","attrKey","nestedAttrs","cleanKey","tagEndExp","piClosingChar","generateLockXML","ownerHREF","lockinfo","lockscope","exclusive","locktype","write","owner","href","copy","DEFAULT_TIMEOUT","getDAVCompliance","compliance","server","DEFAULT_CONTACT_HREF","getRootPath","generateRemoteUrl","client","authTypeRaw","remoteBasePath","contactHref","remotePath","copyFile","destination","Destination","Overwrite","overwrite","shallow","createReadStream","outStream","PassThroughStream","range","rangeHeader","Range","responseError","callback","setTimeout","getFileStream","then","stream","pipe","catch","emit","createWriteStream","writeStream","maxRedirects","customRequest","deleteFile","exists","getDirectoryContents","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","responseItems","nodes","normaliseHREF","decodeURIComponent","getDirectoryFiles","processGlobFilter","getFileContents","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","Buffer","from","getFileContentsBuffer","getFileDownloadLink","authContents","LinkUnsupportedAuthType","getFileUploadLink","getHeaders","getQuota","quotaUsed","quotaAvail","used","available","parseQuota","lock","refreshToken","timeout","Timeout","If","lockPayload","serverTimeout","moveFile","destinationFilename","putFileContents","contentLength","Readable","byteLength","DataTypeNoLength","calculateDataLength","partialUpdateFileContents","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","searchArbiter","responseText","results","truncated","parseSearch","getSearch","setHeaders","unlock","registerAttributeParser","parser","registerTagParser","createClient","requesttoken","onRequestTokenUpdate","getRequestToken","decodeHtmlEntities","passes","DOMParser","decoded","parseFromString","documentElement","textContent","useDeletedCommentLimbo","defineStore","state","idsInLimbo","actions","addId","id","removeId","checkForId","resourceId","required","deleted","editing","loading","computed","mapStores","onEdit","onEditCancel","updateLocalMessage","onEditComment","commentId","commentPath","EditComment","logger","showError","onDeleteWithUndo","deletedCommentLimboStore","timeOutDelete","onDelete","TOAST_UNDO_TIMEOUT","showUndo","clearTimeout","DeleteComment","onNewComment","newComment","resourcePath","axios","post","actorDisplayName","getCurrentUser","displayName","actorId","actorType","creationDateTime","toUTCString","objectType","verb","NewComment","localMessage","components","IconArrowRight","IconClose","IconTrashCanOutline","IconPencilOutline","NcActionButton","NcActions","NcActionSeparator","NcAvatar","NcButton","NcDateTime","NcLoadingIcon","NcRichContenteditable","NcRichText","mixins","CommentMixin","inheritAttrs","editor","Boolean","autoComplete","Function","userData","expanded","submitted","isOwnComment","richContent","mentions","NcUserBubble","label","primary","isEmptyMessage","timestamp","isLimbo","watch","beforeMount","onSubmit","$nextTick","$refs","$el","focus","onExpand","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","directives","rawName","class","scopedSlots","_u","proxy","preventDefault","ref","nativeOn","defineComponent","editorData","currentResourceId","generateOcsUrl","params","itemType","itemId","sorter","limit","loadState","ocs","genMentionsData","flat","mention","mentionId","icon","mentionDisplayName","source","getComments","datetime","toISOString","offset","Comment","NcEmptyContent","IconRefresh","IconMessageReplyTextOutline","IconAlertCircleOutline","elementVisibility","CommentView","comments","cancelRequest","hasComments","isFirstLoading","onVisibilityChange","isVisible","date","readMarker","markCommentsAsRead","update","resetState","onScrollBottomReached","abort","controller","AbortController","cancelableRequest","findIndex","_l","$set","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","mixin","OCA","Comments","View","pinia","createPinia","propsData","extend","CommentsApp","balanced","maybeMatch","r","pre","reg","begs","beg","left","right","module","exports","freeGlobal","global","InvalidCharacterError","TABLE","REGEX_SPACE_CHARACTERS","input","buffer","padding","charCodeAt","bitStorage","bitCounter","fromCharCode","expand","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","numeric","parseCommaParts","postParts","embrace","isPadded","el","lte","y","gte","isTop","expansions","expansion","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","incr","abs","pad","need","z","$apply","$call","$reflectApply","actualApply","$TypeError","$actualApply","setFunctionLength","$defineProperty","callBindBasic","applyBind","originalFunction","func","adjustedLength","GetIntrinsic","$indexOf","allowMissing","intrinsic","___CSS_LOADER_EXPORT___","$SyntaxError","gopd","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","hasProtoAccessor","callBind","gOPD","__proto__","$Object","$getPrototypeOf","EvalError","RangeError","ReferenceError","SyntaxError","URIError","isCallable","toStr","iterator","thisArg","receiver","array","forEachArray","forEachString","forEachObject","concatty","that","bound","arrLike","slicy","boundLength","boundArgs","joiny","Empty","implementation","cached","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","pow","round","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","Atomics","BigInt","BigInt64Array","BigUint64Array","DataView","decodeURI","encodeURI","eval","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isNaN","parseFloat","Proxy","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","gen","LEGACY_ALIASES","hasOwn","$concat","concat","$spliceApply","$replace","$strSlice","$exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","reflectGetProto","originalGetProto","getDunderProto","O","getOwnPropertyDescriptor","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","toStringTag","$hasOwn","http","https","validateParams","cb","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","document","all","strClass","isFnRegex","safeRegexTest","getGeneratorFunction","GeneratorFunction","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","whichTypedArray","$isNaN","_typeof","_wrapNativeSuper","Class","_cache","Wrapper","_construct","_getPrototypeOf","_setPrototypeOf","Parent","construct","sham","_isNativeReflectConstruct","instance","o","ObjectPrototypeMutationError","_Error","Constructor","_classCallCheck","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","_loop","idx","currentSegment","remainingSegments","pathToHere","_ret","isLastSegment","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","defaultStyle","style","quoteStyle","quoteChar","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","baseIndent","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attributes","childNodes","xs","singleLineValues","indentedJoin","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","protoTag","stringTag","l","remaining","trailer","quoteRE","lowbyte","lineJoiner","isArr","symMap","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","relative","to","fromParts","toParts","samePartsLength","outputParts","_makeLong","dirname","dir","extname","pathObject","isObject","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","mapDomain","ucs2decode","extra","ucs2encode","basicToDigit","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","out","basic","oldi","w","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","utils","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","numberStr","parseArrayValue","currentArrayLength","parseKeys","givenKey","valuesParsed","segmentContent","splitKeyIntoSegments","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isValidArrayIndex","markOverflow","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","existing","parseValues","newObj","compact","getSideChannel","arrayPrefixGenerators","brackets","indices","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","step","findFlag","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","defaultEncoder","kind","mapped","nextIndex","sourceKeys","combined","mergeTarget","targetItem","keyNum","pairs","query","port","isRegex","define","hasDescriptors","functionLengthIsConfigurable","functionLengthIsWritable","listGetNode","isDelete","curr","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","host","hostname","req","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","XDomainRequest","checkTypeSupport","responseType","isFunction","ReadableStream","writableStream","WritableStream","abortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","Blob","headersList","keyName","_fetchAbortController","requestTimeout","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","statusValid","_write","chunk","encoding","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusMessage","reject","_resumeFetch","pipeTo","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","_charset","charsetMatch","_read","newData","alloc","MSStreamReader","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","this_len","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","enc","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","dest","pipeOpts","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","wrap","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","_final","doWrite","onwriteDrain","holder","allBuffers","isBuf","callFinal","rState","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","origin","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","working","isDataViewToString","isDataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","trace","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","formatProperty","formatArray","cur","reduceToSingleString","ar","d","pid","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","availableTypedArrays","g","typedArrays","cache","typedArray","superProto","getter","trySlices","tryTypedArrays","possibleNames","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","__esModule","definition","chunkId","promises","script","needAttach","scripts","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
diff --git a/dist/comments-comments-tab.js b/dist/comments-comments-tab.js
index f75b035694872..595dbd73bd50d 100644
--- a/dist/comments-comments-tab.js
+++ b/dist/comments-comments-tab.js
@@ -1,2 +1,2 @@
-(()=>{var t,e,r,n={96689(t,e,r){"use strict";r.d(e,{A:()=>n});const n=(0,r(35947).YK)().setApp("comments").detectUser().build()},35550(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(21777),o=r(82415),i=r(17003);const s=(0,o.UU)((0,i.e)());function a(t){s.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,n.zo)(a),a((0,n.do)());const u=s},17003(t,e,r){"use strict";r.d(e,{e:()=>o});var n=r(63814);function o(){return(0,n.dC)("dav/comments")}},80609(t,e,r){"use strict";var n=r(21777),o=r(35810),i=r(53334),s=r(26422),a=r(10810),u=r(85471),l=r(51651),c=r(96689),p=r(35906);let f,h;u.Ay.use(a.R2);var d=r(81222);r.nc=(0,n.aV)();const g="comments_files-sidebar-tab";(0,d.C)("comments","activityEnabled",!1)&&void 0!==window.OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:n})=>{const o=(0,a.Ey)();if(!f){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(4906)]).then(r.bind(r,44906));f=u.Ay.extend(t)}h=new f({el:t,pinia:o,propsData:{reloadCallback:n,resourceId:e.fileid}}),c.A.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{h&&h.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:n})=>{const{data:o}=await(0,p.v)({resourceType:"files",resourceId:t.fileid},{limit:e,offset:n??0});c.A.debug("Loaded comments",{node:t,comments:o});const{default:i}=await Promise.all([r.e(4208),r.e(3556),r.e(7039)]).then(r.bind(r,57039)),s=u.Ay.extend(i);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,l.A)(e.props?.creationDateTime).toDate().getTime(),mount(r,{reload:n}){this._CommentsViewInstance=new s({el:r,propsData:{comment:e,resourceId:t.fileid,reloadCallback:n}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),c.A.info("Comments plugin registered for Activity sidebar action")}):(0,o.rS)({id:"comments",displayName:(0,i.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:g,async onInit(){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(8124)]).then(r.bind(r,38124));u.Ay.use(a.R2),u.Ay.mixin({pinia:(0,a.Ey)()});const e=(0,s.A)(u.Ay,t);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(g,e)}})},35906(t,e,r){"use strict";r.d(e,{e:()=>a,v:()=>u});var n=r(82415),o=r(5e3),i=r(90176),s=r(35550);const a=20;async function u({resourceType:t,resourceId:e},r){const u=["",t,e].join("/"),l=r.datetime?`${r.datetime.toISOString()}`:"",c=await s.A.customRequest(u,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??a}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${l}\n\t\t\t`,...r}),p=await c.text(),f=function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return(0,i.ch)(r,r.id.toString(),e)})}(await(0,n.h4)(p),!0);return(0,o.hq)(c,f,!0)}},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,u=r.indexOf(t),l=r.indexOf(e,u+1),c=u;if(u>=0&&l>0){if(t===e)return[u,l];for(n=[],i=r.length;c>=0&&!a;)c==u?(n.push(c),u=r.indexOf(t,c+1)):1==n.length?a=[n.pop(),l]:((o=n.pop())=0?u:l;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,u="",l=-1,c=t.length-i;++l>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(l)<<8,r=t.charCodeAt(++l),u+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(l),u+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),u},decode:function(t){var e=(t=String(t).replace(u,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",l=-1;++l>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return l}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),y(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(u)}(t),!0).map(c)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function l(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function c(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(u).join(".")}function p(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var u=p(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function f(t){return"{"+t+"}"}function h(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function y(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?y(o.post,!1):[""];if(/\$$/.test(o.pre))for(var u=0;u=0;if(!x&&!E)return o.post.match(/,(?!,).*\}/)?y(t=o.pre+"{"+o.body+s+o.post):[t];if(x)m=o.body.split(/\.\./);else if(1===(m=p(o.body)).length&&1===(m=y(m[0],!1).map(f)).length)return a.map(function(t){return o.pre+m[0]+t});if(x){var S=l(m[0]),A=l(m[1]),O=Math.max(m[0].length,m[1].length),_=3==m.length?Math.abs(l(m[2])):1,T=d;A0){var k=new Array(R+1).join("0");P=j<0?"-"+k+P.slice(1):k+P}}b.push(P)}}else{b=[];for(var C=0;C0?r:0),!0)},o?o(t.exports,"apply",{value:s}):t.exports.apply=s},36556(t,e,r){"use strict";var n=r(70453),o=r(73126),i=o([n("%String.prototype.indexOf%")]);t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&i(t,".prototype.")>-1?o([r]):r}},30041(t,e,r){"use strict";var n=r(30655),o=r(58068),i=r(69675),s=r(75795);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new i("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,u=arguments.length>4?arguments[4]:null,l=arguments.length>5?arguments[5]:null,c=arguments.length>6&&arguments[6],p=!!s&&s(t,e);if(n)n(t,e,{configurable:null===l&&p?p.configurable:!l,enumerable:null===a&&p?p.enumerable:!a,value:r,writable:null===u&&p?p.writable:!u});else{if(!c&&(a||u||l))throw new o("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},7176(t,e,r){"use strict";var n,o=r(73126),i=r(75795);try{n=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var s=!!n&&i&&i(Object.prototype,"__proto__"),a=Object,u=a.getPrototypeOf;t.exports=s&&"function"==typeof s.get?o([s.get]):"function"==typeof u&&function(t){return u(null==t?t:a(t))}},30655(t){"use strict";var e=Object.defineProperty||!1;if(e)try{e({},"a",{value:1})}catch(t){e=!1}t.exports=e},41237(t){"use strict";t.exports=EvalError},69383(t){"use strict";t.exports=Error},79290(t){"use strict";t.exports=RangeError},79538(t){"use strict";t.exports=ReferenceError},58068(t){"use strict";t.exports=SyntaxError},69675(t){"use strict";t.exports=TypeError},35345(t){"use strict";t.exports=URIError},79612(t){"use strict";t.exports=Object},82682(t,e,r){"use strict";var n=r(69600),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){if(!n(e))throw new TypeError("iterator must be a function");var s,a;arguments.length>=3&&(s=r),a=t,"[object Array]"===o.call(a)?function(t,e,r){for(var n=0,o=t.length;ne},70453(t,e,r){"use strict";var n,o=r(79612),i=r(69383),s=r(41237),a=r(79290),u=r(79538),l=r(58068),c=r(69675),p=r(35345),f=r(71514),h=r(58968),d=r(6188),g=r(68002),y=r(75880),m=r(70414),b=r(73093),v=Function,w=function(t){try{return v('"use strict"; return ('+t+").constructor;")()}catch(t){}},x=r(75795),E=r(30655),S=function(){throw new c},A=x?function(){try{return S}catch(t){try{return x(arguments,"callee").get}catch(t){return S}}}():S,O=r(64039)(),_=r(93628),T=r(71064),N=r(48648),j=r(11002),P=r(10076),R={},k="undefined"!=typeof Uint8Array&&_?_(Uint8Array):n,C={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":O&&_?_([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":R,"%AsyncGenerator%":R,"%AsyncGeneratorFunction%":R,"%AsyncIteratorPrototype%":R,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":s,"%Float16Array%":"undefined"==typeof Float16Array?n:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":v,"%GeneratorFunction%":R,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":O&&_?_(_([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&O&&_?_((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":o,"%Object.getOwnPropertyDescriptor%":x,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":a,"%ReferenceError%":u,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&O&&_?_((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":O&&_?_(""[Symbol.iterator]()):n,"%Symbol%":O?Symbol:n,"%SyntaxError%":l,"%ThrowTypeError%":A,"%TypedArray%":k,"%TypeError%":c,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet,"%Function.prototype.call%":P,"%Function.prototype.apply%":j,"%Object.defineProperty%":E,"%Object.getPrototypeOf%":T,"%Math.abs%":f,"%Math.floor%":h,"%Math.max%":d,"%Math.min%":g,"%Math.pow%":y,"%Math.round%":m,"%Math.sign%":b,"%Reflect.getPrototypeOf%":N};if(_)try{null.error}catch(t){var I=_(_(t));C["%Error.prototype%"]=I}var M=function t(e){var r;if("%AsyncFunction%"===e)r=w("async function () {}");else if("%GeneratorFunction%"===e)r=w("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=w("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var o=t("%AsyncGenerator%");o&&_&&(r=_(o.prototype))}return C[e]=r,r},L={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},D=r(66743),$=r(9957),U=D.call(P,Array.prototype.concat),F=D.call(j,Array.prototype.splice),q=D.call(P,String.prototype.replace),W=D.call(P,String.prototype.slice),H=D.call(P,RegExp.prototype.exec),B=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,V=/\\(\\)?/g,G=function(t,e){var r,n=t;if($(L,n)&&(n="%"+(r=L[n])[0]+"%"),$(C,n)){var o=C[n];if(o===R&&(o=M(n)),void 0===o&&!e)throw new c("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:o}}throw new l("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new c("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new c('"allowMissing" argument must be a boolean');if(null===H(/^%?[^%]*%?$/,t))throw new l("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=W(t,0,1),r=W(t,-1);if("%"===e&&"%"!==r)throw new l("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new l("invalid intrinsic syntax, expected opening `%`");var n=[];return q(t,B,function(t,e,r,o){n[n.length]=r?q(o,V,"$1"):e||t}),n}(t),n=r.length>0?r[0]:"",o=G("%"+n+"%",e),i=o.name,s=o.value,a=!1,u=o.alias;u&&(n=u[0],F(r,U([0,1],u)));for(var p=1,f=!0;p=r.length){var y=x(s,h);s=(f=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:s[h]}else f=$(s,h),s=s[h];f&&!a&&(C[i]=s)}}return s}},71064(t,e,r){"use strict";var n=r(79612);t.exports=n.getPrototypeOf||null},48648(t){"use strict";t.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},93628(t,e,r){"use strict";var n=r(48648),o=r(71064),i=r(7176);t.exports=n?function(t){return n(t)}:o?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return o(t)}:i?function(t){return i(t)}:null},6549(t){"use strict";t.exports=Object.getOwnPropertyDescriptor},75795(t,e,r){"use strict";var n=r(6549);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},30592(t,e,r){"use strict";var n=r(30655),o=function(){return!!n};o.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=o},64039(t,e,r){"use strict";var n="undefined"!=typeof Symbol&&Symbol,o=r(41333);t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&o()}},41333(t){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var n in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var o=Object.getOwnPropertySymbols(t);if(1!==o.length||o[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},49092(t,e,r){"use strict";var n=r(41333);t.exports=function(){return n()&&!!Symbol.toStringTag}},9957(t,e,r){"use strict";var n=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=r(66743);t.exports=i.call(n,o)},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},69600(t){"use strict";var e,r,n=Function.prototype.toString,o="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof o&&"function"==typeof Object.defineProperty)try{e=Object.defineProperty({},"length",{get:function(){throw r}}),r={},o(function(){throw 42},null,e)}catch(t){t!==r&&(o=null)}else o=null;var i=/^\s*class\b/,s=function(t){try{var e=n.call(t);return i.test(e)}catch(t){return!1}},a=function(t){try{return!s(t)&&(n.call(t),!0)}catch(t){return!1}},u=Object.prototype.toString,l="function"==typeof Symbol&&!!Symbol.toStringTag,c=!(0 in[,]),p=function(){return!1};if("object"==typeof document){var f=document.all;u.call(f)===u.call(document.all)&&(p=function(t){if((c||!t)&&(void 0===t||"object"==typeof t))try{var e=u.call(t);return("[object HTMLAllCollection]"===e||"[object HTML document.all class]"===e||"[object HTMLCollection]"===e||"[object Object]"===e)&&null==t("")}catch(t){}return!1})}t.exports=o?function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;try{o(t,null,e)}catch(t){if(t!==r)return!1}return!s(t)&&a(t)}:function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;if(l)return a(t);if(s(t))return!1;var e=u.call(t);return!("[object Function]"!==e&&"[object GeneratorFunction]"!==e&&!/^\[object HTML/.test(e))&&a(t)}},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),u=n("Function.prototype.toString"),l=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=l();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var u=o("RegExp.prototype.exec"),l={},c=function(){throw l},p={toString:c,valueOf:c};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=c),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{u(t,p)}catch(t){return t===l}}}else{var f=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===f(t)}}t.exports=n},35680(t,e,r){"use strict";var n=r(25767);t.exports=function(t){return!!n(t)}},71514(t){"use strict";t.exports=Math.abs},58968(t){"use strict";t.exports=Math.floor},94459(t){"use strict";t.exports=Number.isNaN||function(t){return t!=t}},6188(t){"use strict";t.exports=Math.max},68002(t){"use strict";t.exports=Math.min},75880(t){"use strict";t.exports=Math.pow},70414(t){"use strict";t.exports=Math.round},73093(t,e,r){"use strict";var n=r(94459);t.exports=function(t){return n(t)||0===t?t:t<0?-1:1}},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!u(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=u(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=a&&u&&"function"==typeof u.get?u.get:null,c=a&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,f="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,h="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,y=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,x=String.prototype.toLowerCase,E=RegExp.prototype.test,S=Array.prototype.concat,A=Array.prototype.join,O=Array.prototype.slice,_=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,N=Object.getOwnPropertySymbols,j="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,P="function"==typeof Symbol&&"object"==typeof Symbol.iterator,R="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,k=Object.prototype.propertyIsEnumerable,C=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||E.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-_(-t):_(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function F(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function q(t){return v.call(String(t),/"/g,""")}function W(t){return!R||!("object"==typeof t&&(R in t||void 0!==t[R]))}function H(t){return"[object Array]"===K(t)&&W(t)}function B(t){return"[object RegExp]"===K(t)&&W(t)}function V(t){if(P)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!j)return!1;try{return j.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var u=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof u&&"symbol"!==u)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return Y(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var E=String(e)+"n";return g?I(e,E):E}var _=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=_&&_>0&&"object"==typeof e)return H(e)?"[Array]":"[Object]";var N,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=A.call(Array(t.indent+1)," ")}return{base:r,prev:A.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(X(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=O.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!B(e)){var G=function(t){if(t.name)return t.name;var e=m.call(y.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),J=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(J.length>0?" { "+A.call(J,", ")+" }":"")}if(V(e)){var nt=P?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):j.call(e);return"object"!=typeof e||P?nt:Z(nt)}if((N=e)&&"object"==typeof N&&("undefined"!=typeof HTMLElement&&N instanceof HTMLElement||"string"==typeof N.nodeName&&"function"==typeof N.getAttribute)){for(var ot="<"+x.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(H(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+A.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&W(t)}(e)){var ut=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||k.call(e,"cause")?0===ut.length?"["+String(e)+"]":"{ ["+String(e)+"] "+A.call(ut,", ")+" }":"{ ["+String(e)+"] "+A.call(S.call("[cause]: "+U(e.cause),ut),", ")+" }"}if("object"==typeof e&&u){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:_-n});if("symbol"!==u&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{l.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return s&&s.call(e,function(t,r){lt.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),lt,L)}if(function(t){if(!l||!t||"object"!=typeof t)return!1;try{l.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return c&&c.call(e,function(t){ct.push(U(t,e))}),tt("Set",l.call(e),ct,L)}if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return Q("WeakMap");if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return Q("WeakSet");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{return h.call(t),!0}catch(t){}return!1}(e))return Q("WeakRef");if(function(t){return"[object Number]"===K(t)&&W(t)}(e))return Z(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Z(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&W(t)}(e))return Z(d.call(e));if(function(t){return"[object String]"===K(t)&&W(t)}(e))return Z(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&W(t)}(e)&&!B(e)){var pt=rt(e,U),ft=C?C(e)===Object.prototype:e instanceof Object||e.constructor===Object,ht=e instanceof Object?"":"null prototype",dt=!ft&&R&&Object(e)===e&&R in e?b.call(K(e),8,-1):ht?"Object":"",gt=(ft||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||ht?"["+A.call(S.call([],dt||[],ht||[]),": ")+"] ":"");return 0===pt.length?gt+"{}":L?gt+"{"+et(pt,L)+"}":gt+"{ "+A.call(pt,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function X(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Y(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,F(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,J),"single",e)}function J(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Z(t){return"Object("+t+")"}function Q(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):A.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+A.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=H(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},u.normalize=function(t){var e=u.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},u.isAbsolute=function(t){return"/"===t.charAt(0)},u.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=u.resolve(t).substr(1),e=u.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,h=String.fromCharCode;function d(t){throw new RangeError(p[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function y(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(c,".")).split("."),e).join(".")}function m(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=h((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+h(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function x(t,e,r){var n=0;for(t=r?f(t/700):t>>1,t+=f(t/e);t>455;n+=a)t=f(t/35);return f(n+36*t/(t+38))}function E(t){var e,r,n,o,i,u,l,c,p,h,g=[],y=t.length,m=0,w=128,E=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=y&&d("invalid-input"),((c=v(t.charCodeAt(o++)))>=a||c>f((s-m)/u))&&d("overflow"),m+=c*u,!(c<(p=l<=E?1:l>=E+26?26:l-E));l+=a)u>f(s/(h=a-p))&&d("overflow"),u*=h;E=x(m-i,e=g.length+1,0==i),f(m/e)>s-w&&d("overflow"),w+=f(m/e),m%=e,g.splice(m++,0,w)}return b(g)}function S(t){var e,r,n,o,i,u,l,c,p,g,y,b,v,E,S,A=[];for(b=(t=m(t)).length,e=128,r=0,i=72,u=0;u=e&&yf((s-r)/(v=n+1))&&d("overflow"),r+=(l-e)*v,e=l,u=0;us&&d("overflow"),y==e){for(c=r,p=a;!(c<(g=p<=i?1:p>=i+26?26:p-i));p+=a)S=c-g,E=a-g,A.push(h(w(g+S%E,0))),c=f(S/E);A.push(h(w(c,0))),i=x(r,v,n==o),r=0,++n}++r,++e}return A.join("")}i={version:"1.4.1",ucs2:{decode:m,encode:b},decode:E,encode:S,toASCII:function(t){return y(t,function(t){return l.test(t)?"xn--"+S(t):t})},toUnicode:function(t){return y(t,function(t){return u.test(t)?E(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},u=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},l=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a[a.length]=s}for(var u=0;null!==(i=n.exec(r))&&u0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:u(e,r,i),l=t.length-1;l>=0;--l){var c,p=t[l];if("[]"===p&&r.parseArrays)c=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{c=r.plainObjects?{__proto__:null}:{};var f="["===p.charAt(0)&&"]"===p.charAt(p.length-1)?p.slice(1,-1):p,h=r.decodeDotInKeys?f.replace(/%2E/g,"."):f,d=parseInt(h,10),g=!isNaN(d)&&p!==h&&String(d)===h&&d>=0&&r.parseArrays;if(r.parseArrays||""!==h)if(g&&dc)throw new RangeError("Parameter limit exceeded. Only "+c+" parameter"+(1===c?"":"s")+" allowed.");var f,h=-1,d=e.charset;if(e.charsetSentinel)for(f=0;f-1&&(y=i(y)?[y]:y),e.comma&&i(y)&&y.length>e.arrayLimit){if(e.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");y=n.combine([],y,e.arrayLimit,e.plainObjects)}if(null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],y,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=y)}}return r}(t,r):t,p=r.plainObjects?{__proto__:null}:{},f=Object.keys(c),h=0;h0?_.join(",")||null:void 0}];else if(u(y))R=y;else{var C=Object.keys(_);R=m?C.sort(m):C}var I=f?String(r).replace(/\./g,"%2E"):String(r),M=s&&u(_)&&1===_.length?I+"[]":I;if(a&&u(_)&&0===_.length)return M+"[]";for(var L=0;L0?x+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),u=function(t,e){return a.set(t,e),t},l=function(t){return a.has(t)},c=function(t){return a.get(t)},p=function(t,e){a.set(t,e)},f=function(){for(var t=[],e=0;e<256;++e)t[t.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return t}(),h=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?u(h(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(u,u+d):s,c=[],p=0;p=48&&h<=57||h>=65&&h<=90||h>=97&&h<=122||i===n.RFC1738&&(40===h||41===h)?c[c.length]=l.charAt(p):h<128?c[c.length]=f[h]:h<2048?c[c.length]=f[192|h>>6]+f[128|63&h]:h<55296||h>=57344?c[c.length]=f[224|h>>12]+f[128|h>>6&63]+f[128|63&h]:(p+=1,h=65536+((1023&h)<<10|1023&l.charCodeAt(p)),c[c.length]=f[240|h>>18]+f[128|h>>12&63]+f[128|h>>6&63]+f[128|63&h])}a+=c.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:l,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},markOverflow:u,maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;nn.arrayLimit)return u(h(e.concat(r),n),o);e[o]=r}else{if(!e||"object"!=typeof e)return[e,r];if(l(e)){var a=c(e)+1;e[a]=r,p(e,a)}else(n&&(n.plainObjects||n.allowPrototypes)||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e){if(l(r)){for(var f=Object.keys(r),d=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},g=0;gn.arrayLimit?u(h(y,n),y.length-1):y}var m=e;return s(e)&&!s(r)&&(m=h(e,n)),s(e)&&s(r)?(r.forEach(function(r,o){if(i.call(e,o)){var s=e[o];s&&"object"==typeof s&&r&&"object"==typeof r?e[o]=t(s,r,n):e[e.length]=r}else e[o]=r}),e):Object.keys(r).reduce(function(e,o){var s=r[o];if(i.call(e,o)?e[o]=t(e[o],s,n):e[o]=s,l(r)&&!l(e)&&u(e,c(r)),l(e)){var a=parseInt(o,10);String(a)===o&&a>=0&&a>c(e)&&p(e,a)}return e},m)}}},73992(t,e){"use strict";var r=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var n,i,s=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((n=t[i])||null!=n&&!isNaN(n)||(n=""),i=o(i),n=o(n),null===i||null===n)continue;s.push(i+"="+n)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,o={};e=r.exec(t);){var i=n(e[1]),s=n(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},92063(t){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},99721(t,e,r){"use strict";var n=r(36556),o=r(14035),i=n("RegExp.prototype.exec"),s=r(69675);t.exports=function(t){if(!o(t))throw new s("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},96897(t,e,r){"use strict";var n=r(70453),o=r(30041),i=r(30592)(),s=r(75795),a=r(69675),u=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new a("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||u(e)!==e)throw new a("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,l=!0;if("length"in t&&s){var c=s(t,"length");c&&!c.configurable&&(n=!1),c&&!c.writable&&(l=!1)}return(n||l||!r)&&(i?o(t,"length",e,!0,!0):o(t,"length",e)),t}},14803(t,e,r){"use strict";var n=r(58859),o=r(69675),i=function(t,e,r){for(var n,o=t;null!=(n=o.next);o=n)if(n.key===e)return o.next=n.next,r||(n.next=t.next,t.next=n),n};t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new o("Side channel does not contain "+n(t))},delete:function(e){var r=t&&t.next,n=function(t,e){if(t)return i(t,e,!0)}(t,e);return n&&r&&r===n&&(t=void 0),!!n},get:function(e){return function(t,e){if(t){var r=i(t,e);return r&&r.value}}(t,e)},has:function(e){return function(t,e){return!!t&&!!i(t,e)}(t,e)},set:function(e,r){t||(t={next:void 0}),function(t,e,r){var n=i(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(t,e,r)}};return e}},80507(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(69675),a=n("%Map%",!0),u=o("Map.prototype.get",!0),l=o("Map.prototype.set",!0),c=o("Map.prototype.has",!0),p=o("Map.prototype.delete",!0),f=o("Map.prototype.size",!0);t.exports=!!a&&function(){var t,e={assert:function(t){if(!e.has(t))throw new s("Side channel does not contain "+i(t))},delete:function(e){if(t){var r=p(t,e);return 0===f(t)&&(t=void 0),r}return!1},get:function(e){if(t)return u(t,e)},has:function(e){return!!t&&c(t,e)},set:function(e,r){t||(t=new a),l(t,e,r)}};return e}},72271(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(80507),a=r(69675),u=n("%WeakMap%",!0),l=o("WeakMap.prototype.get",!0),c=o("WeakMap.prototype.set",!0),p=o("WeakMap.prototype.has",!0),f=o("WeakMap.prototype.delete",!0);t.exports=u?function(){var t,e,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},delete:function(r){if(u&&r&&("object"==typeof r||"function"==typeof r)){if(t)return f(t,r)}else if(s&&e)return e.delete(r);return!1},get:function(r){return u&&r&&("object"==typeof r||"function"==typeof r)&&t?l(t,r):e&&e.get(r)},has:function(r){return u&&r&&("object"==typeof r||"function"==typeof r)&&t?p(t,r):!!e&&e.has(r)},set:function(r,n){u&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new u),c(t,r,n)):s&&(e||(e=s()),e.set(r,n))}};return r}:s},920(t,e,r){"use strict";var n=r(69675),o=r(58859),i=r(14803),s=r(80507),a=r(72271)||s||i;t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new n("Side channel does not contain "+o(t))},delete:function(e){return!!t&&t.delete(e)},get:function(e){return t&&t.get(e)},has:function(e){return!!t&&t.has(e)},set:function(e,r){t||(t=a()),t.set(e,r)}};return e}},11568(t,e,r){var n=r(55537),o=r(6917),i=r(57510),s=r(86866),a=r(88835),u=e;u.request=function(t,e){t="string"==typeof t?a.parse(t):i(t);var r=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||r,s=t.hostname||t.host,u=t.port,l=t.path||"/";s&&-1!==s.indexOf(":")&&(s="["+s+"]"),t.url=(s?o+"//"+s:"")+(u?":"+u:"")+l,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var c=new n(t);return e&&c.on("response",e),c},u.get=function(t,e){var r=u.request(t,e);return r.end(),r},u.ClientRequest=n,u.IncomingMessage=o.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=s,u.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},6688(t,e){var r;function n(){if(void 0!==r)return r;if(globalThis.XMLHttpRequest){r=new globalThis.XMLHttpRequest;try{r.open("GET",globalThis.XDomainRequest?"/":"https://example.com")}catch(t){r=null}}else r=null;return r}function o(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(globalThis.fetch)&&i(globalThis.ReadableStream),e.writableStream=i(globalThis.WritableStream),e.abortController=i(globalThis.AbortController),e.arraybuffer=e.fetch||o("arraybuffer"),e.msstream=!e.fetch&&o("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&o("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),r=null},55537(t,e,r){var n=r(62045).hp,o=r(65606),i=r(6688),s=r(56698),a=r(6917),u=r(63242),l=a.IncomingMessage,c=a.readyStates,p=t.exports=function(t){var e,r=this;u.Writable.call(r),r._opts=t,r._body=[],r._headers={},t.auth&&r.setHeader("Authorization","Basic "+n.from(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){r.setHeader(e,t.headers[e])});var o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!i.abortController)o=!1,e=!0;else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!i.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}r._mode=function(t,e){return i.fetch&&e?"fetch":i.mozchunkedarraybuffer?"moz-chunked-arraybuffer":i.msstream?"ms-stream":i.arraybuffer&&t?"arraybuffer":"text"}(e,o),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",function(){r._onFinish()})};s(p,u.Writable),p.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===f.indexOf(r)&&(this._headers[r]={name:t,value:e})},p.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},p.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},p.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts;"timeout"in e&&0!==e.timeout&&t.setTimeout(e.timeout);var r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=new Blob(t._body,{type:(r["content-type"]||{}).value||""}));var s=[];if(Object.keys(r).forEach(function(t){var e=r[t].name,n=r[t].value;Array.isArray(n)?n.forEach(function(t){s.push([e,t])}):s.push([e,n])}),"fetch"===t._mode){var a=null;if(i.abortController){var u=new AbortController;a=u.signal,t._fetchAbortController=u,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=globalThis.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}globalThis.fetch(t._opts.url,{method:t._opts.method,headers:s,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:a}).then(function(e){t._fetchResponse=e,t._resetTimers(!1),t._connect()},function(e){t._resetTimers(!0),t._destroyed||t.emit("error",e)})}else{var l=t._xhr=new globalThis.XMLHttpRequest;try{l.open(t._opts.method,t._opts.url,!0)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}"responseType"in l&&(l.responseType=t._mode),"withCredentials"in l&&(l.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in l&&l.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(l.timeout=e.requestTimeout,l.ontimeout=function(){t.emit("requestTimeout")}),s.forEach(function(t){l.setRequestHeader(t[0],t[1])}),t._response=null,l.onreadystatechange=function(){switch(l.readyState){case c.LOADING:case c.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(l.onprogress=function(){t._onXHRProgress()}),l.onerror=function(){t._destroyed||(t._resetTimers(!0),t.emit("error",new Error("XHR error")))};try{l.send(n)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}}}},p.prototype._onXHRProgress=function(){var t=this;t._resetTimers(!1),function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress(t._resetTimers.bind(t)))},p.prototype._connect=function(){var t=this;t._destroyed||(t._response=new l(t._xhr,t._fetchResponse,t._mode,t._resetTimers.bind(t)),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},p.prototype._write=function(t,e,r){this._body.push(t),r()},p.prototype._resetTimers=function(t){var e=this;globalThis.clearTimeout(e._socketTimer),e._socketTimer=null,t?(globalThis.clearTimeout(e._fetchTimer),e._fetchTimer=null):e._socketTimeout&&(e._socketTimer=globalThis.setTimeout(function(){e.emit("timeout")},e._socketTimeout))},p.prototype.abort=p.prototype.destroy=function(t){var e=this;e._destroyed=!0,e._resetTimers(!0),e._response&&(e._response._destroyed=!0),e._xhr?e._xhr.abort():e._fetchAbortController&&e._fetchAbortController.abort(),t&&e.emit("error",t)},p.prototype.end=function(t,e,r){"function"==typeof t&&(r=t,t=void 0),u.Writable.prototype.end.call(this,t,e,r)},p.prototype.setTimeout=function(t,e){var r=this;e&&r.once("timeout",e),r._socketTimeout=t,r._resetTimers(!1)},p.prototype.flushHeaders=function(){},p.prototype.setNoDelay=function(){},p.prototype.setSocketKeepAlive=function(){};var f=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},6917(t,e,r){var n=r(65606),o=r(62045).hp,i=r(6688),s=r(56698),a=r(63242),u=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},l=e.IncomingMessage=function(t,e,r,s){var u=this;if(a.Readable.call(u),u._mode=r,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",function(){n.nextTick(function(){u.emit("close")})}),"fetch"===r){if(u._fetchResponse=e,u.url=e.url,u.statusCode=e.status,u.statusMessage=e.statusText,e.headers.forEach(function(t,e){u.headers[e.toLowerCase()]=t,u.rawHeaders.push(e,t)}),i.writableStream){var l=new WritableStream({write:function(t){return s(!1),new Promise(function(e,r){u._destroyed?r():u.push(o.from(t))?e():u._resumeFetch=e})},close:function(){s(!0),u._destroyed||u.push(null)},abort:function(t){s(!0),u._destroyed||u.emit("error",t)}});try{return void e.body.pipeTo(l).catch(function(t){s(!0),u._destroyed||u.emit("error",t)})}catch(t){}}var c=e.body.getReader();!function t(){c.read().then(function(e){u._destroyed||(s(e.done),e.done?u.push(null):(u.push(o.from(e.value)),t()))}).catch(function(t){s(!0),u._destroyed||u.emit("error",t)})}()}else if(u._xhr=t,u._pos=0,u.url=t.responseURL,u.statusCode=t.status,u.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var r=e[1].toLowerCase();"set-cookie"===r?(void 0===u.headers[r]&&(u.headers[r]=[]),u.headers[r].push(e[2])):void 0!==u.headers[r]?u.headers[r]+=", "+e[2]:u.headers[r]=e[2],u.rawHeaders.push(e[1],e[2])}}),u._charset="x-user-defined",!i.overrideMimeType){var p=u.rawHeaders["mime-type"];if(p){var f=p.match(/;\s*charset=([^;])(;|$)/);f&&(u._charset=f[1].toLowerCase())}u._charset||(u._charset="utf-8")}};s(l,a.Readable),l.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},l.prototype._onXHRProgress=function(t){var e=this,r=e._xhr,n=null;switch(e._mode){case"text":if((n=r.responseText).length>e._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(l.result.slice(e._pos)))),e._pos=l.result.byteLength)},l.onload=function(){t(!0),e.push(null)},l.readAsArrayBuffer(n)}e._xhr.readyState===u.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,u;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var l=("number"!=typeof u&&(u=0),u+1>(a=t).length||-1===a.indexOf(".",u)?"argument":"property");s='The "'.concat(t,'" ').concat(l," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var i=r(52341),s=r(9573);r(56698)(c,i);for(var a=o(s.prototype),u=0;u0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===u.prototype||(e=function(t){return u.from(t)}(e)),n)a.endEmitted?E(t,new x):T(t,a,e,!0);else if(a.ended)E(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):k(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,k(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=N?t=N:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function P(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(R,t))}function R(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function k(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(C,t,e))}function C(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(F,e,t))}function F(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function q(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):P(this),null;if(0===(t=j(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},O.prototype._read=function(t){E(this,new w("_read()"))},O.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:u;function u(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",h),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",f),t.removeListener("unpipe",e),r.removeListener("end",u),r.removeListener("end",g),r.removeListener("data",p),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",l);var c=!1;function p(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==q(n.pipes,t))&&!c&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function f(e){i("onerror",e),g(),t.removeListener("error",f),0===s(t,"error")&&E(t,e)}function h(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",h),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",p),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",f),t.once("close",h),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},O.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?P(this):n.reading||o.nextTick(M,this))),r},O.prototype.addListener=O.prototype.on,O.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},O.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},O.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},O.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},O.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new x(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(O.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(O.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),O.prototype._write=function(t,e,r){r(new g("_write()"))},O.prototype._writev=null,O.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,R(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(O.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(O.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),O.prototype.destroy=p.destroy,O.prototype._undestroy=p.undestroy,O.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),u=Symbol("lastReject"),l=Symbol("error"),c=Symbol("ended"),p=Symbol("lastPromise"),f=Symbol("handlePromise"),h=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[h].read();null!==r&&(t[p]=null,t[a]=null,t[u]=null,e(d(r,!1)))}}function y(t){o.nextTick(g,t)}var m=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(d(void 0,!0));if(this[h].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[l]?r(t[l]):e(d(void 0,!0))})});var r,n=this[p];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[c]?r(d(void 0,!0)):e[f](r,n)},n)}}(n,this));else{var i=this[h].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[f])}return this[p]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[h].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),m);t.exports=function(t){var e,r=Object.create(b,(i(e={},h,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,u,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[p]=null,r[a]=null,r[u]=null,t(d(n,!1))):(r[a]=t,r[u]=e)},writable:!0}),e));return r[p]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[u];return null!==e&&(r[p]=null,r[a]=null,r[u]=null,e(t)),void(r[l]=t)}var n=r[a];null!==n&&(r[p]=null,r[a]=null,r[u]=null,n(d(void 0,!0))),r[c]=!0}),t.on("readable",y.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return u.alloc(0);for(var e=u.allocUnsafe(t>>>0),r=this.head,n=0;r;)p(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=u.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:c,value:function(t,e){return l(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return a||u?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){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)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){c||(c=t),t&&f.forEach(u),i||(f.forEach(u),p(c))})});return e.reduce(l)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function p(t){return(t||"").toString().replace(i,"")}var f=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],h={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new m(unescape(t.pathname),{});else if("string"===o)for(e in n=new m(t,{}),h)delete n[e];else if("object"===o){for(e in t)e in h||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function y(t,e){t=(t=p(t)).replace(s,""),e=e||{};var r,n=l.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],u=0;return i?a?(r=n[2]+n[3]+n[4],u=n[2].length+n[3].length):(r=n[2]+n[4],u=n[2].length):a?(r=n[3]+n[4],u=n[3].length):r=n[4],"file:"===o?u>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):u>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:r}}function m(t,e,r){if(t=(t=p(t)).replace(s,""),!(this instanceof m))return new m(t,e,r);var i,a,u,l,h,b,v=f.slice(),w=typeof e,x=this,E=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=y(t||"",e=d(e))).protocol&&!a.slashes,x.slashes=a.slashes||i&&e.slashes,x.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(x.protocol)))&&(v[3]=[/(.*)/,"pathname"]);E",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),c=["%","/","?",";","#"].concat(l),p=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?k+="x":k+=R[C];if(!k.match(f)){var M=j.slice(0,_),L=j.slice(_+1),D=R.match(h);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),N||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,N&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[x])for(_=0,P=l.length;_0)&&r.host.split("@"))&&(r.auth=N.shift(),r.hostname=N.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!E.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var A=E.slice(-1)[0],O=(r.host||t.host||E.length>1)&&("."===A||".."===A)||""===A,_=0,T=E.length;T>=0;T--)"."===(A=E[T])?E.splice(T,1):".."===A?(E.splice(T,1),_++):_&&(E.splice(T,1),_--);if(!w&&!x)for(;_--;_)E.unshift("..");!w||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),O&&"/"!==E.join("/").substr(-1)&&E.push("");var N,j=""===E[0]||E[0]&&"/"===E[0].charAt(0);return S&&(r.hostname=j?"":E.length?E.shift():"",r.host=r.hostname,(N=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=N.shift(),r.hostname=N.shift(),r.host=r.hostname)),(w=w||r.host&&E.length)&&!j&&E.unshift(""),E.length>0?r.pathname=E.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var u="undefined"!=typeof BigInt,l="undefined"!=typeof Symbol,c=a(Object.prototype.toString),p=a(Number.prototype.valueOf),f=a(String.prototype.valueOf),h=a(Boolean.prototype.valueOf);if(u)var d=a(BigInt.prototype.valueOf);if(l)var g=a(Symbol.prototype.valueOf);function y(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function m(t){return"[object Map]"===c(t)}function b(t){return"[object Set]"===c(t)}function v(t){return"[object WeakMap]"===c(t)}function w(t){return"[object WeakSet]"===c(t)}function x(t){return"[object ArrayBuffer]"===c(t)}function E(t){return"undefined"!=typeof ArrayBuffer&&(x.working?x(t):t instanceof ArrayBuffer)}function S(t){return"[object DataView]"===c(t)}function A(t){return"undefined"!=typeof DataView&&(S.working?S(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||A(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},m.working="undefined"!=typeof Map&&m(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(m.working?m(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},x.working="undefined"!=typeof ArrayBuffer&&x(new ArrayBuffer),e.isArrayBuffer=E,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=A;var O="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function _(t){return"[object SharedArrayBuffer]"===c(t)}function T(t){return void 0!==O&&(void 0===_.working&&(_.working=_(new O)),_.working?_(t):t instanceof O)}function N(t){return y(t,p)}function j(t){return y(t,f)}function P(t){return y(t,h)}function R(t){return u&&y(t,d)}function k(t){return l&&y(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=N,e.isStringObject=j,e.isBooleanObject=P,e.isBigIntObject=R,e.isSymbolObject=k,e.isBoxedPrimitive=function(t){return N(t)||j(t)||P(t)||R(t)||k(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(E(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=c),f(n,t,n.depth)}function c(t,e){var r=l.styles[e];return r?"["+l.colors[r][0]+"m"+t+"["+l.colors[r][1]+"m":t}function p(t,e){return t}function f(t,r,n){if(t.customInspect&&r&&O(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=f(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),A(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(r);if(0===s.length){if(O(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(x(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(S(r))return t.stylize(Date.prototype.toString.call(r),"date");if(A(r))return h(r)}var l,c="",p=!1,E=["{","}"];return g(r)&&(p=!0,E=["[","]"]),O(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),x(r)&&(c=" "+RegExp.prototype.toString.call(r)),S(r)&&(c=" "+Date.prototype.toUTCString.call(r)),A(r)&&(c=" "+h(r)),0!==s.length||p&&0!=r.length?n<0?x(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),l=p?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(l,c,E)):E[0]+c+E[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),j(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=m(r)?f(t,u.value,null):f(t,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return"  "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return"   "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function m(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function x(t){return E(t)&&"[object RegExp]"===_(t)}function E(t){return"object"==typeof t&&null!==t}function S(t){return E(t)&&"[object Date]"===_(t)}function A(t){return E(t)&&("[object Error]"===_(t)||t instanceof Error)}function O(t){return"function"==typeof t}function _(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=y,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=x,e.types.isRegExp=x,e.isObject=E,e.isDate=S,e.types.isDate=S,e.isError=A,e.types.isNativeError=A,e.isFunction=O,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function j(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),N[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!E(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var P="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(P&&t[P]){var e;if("function"!=typeof(e=t[P]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,P,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;i-1?e:"Object"===e&&function(t){var e=!1;return n(g,function(r,n){if(!e)try{r(t),e=h(n,1)}catch(t){}}),e}(t)}return a?function(t){var e=!1;return n(g,function(r,n){if(!e)try{"$"+r(t)===n&&(e=h(n,1))}catch(t){}}),e}(t):null}},57510(t){t.exports=function(){for(var t={},r=0;ro});const n="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,o=n.fetch.bind(n);n.Headers,n.Request,n.Response},49965(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(44928),o=r(72766),i=r(87818),s=r(89596);const a={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:"  ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function u(t){if(this.options=Object.assign({},a,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function l(t,e,r,n){const o=this.extractAttributes(t);if(n.push(e,o),this.checkStopNode(n)){const o=this.buildRawContent(t),i=this.buildAttributesForStopNode(t);return n.pop(),this.buildObjectNode(o,e,i,r)}const i=this.j2x(t,r+1,n);return n.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,r,n):this.buildObjectNode(i.val,e,i.attrStr,r)}function c(t){return this.options.indentBy.repeat(t)}function p(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}u.prototype.build=function(t){if(this.options.preserveOrder)return(0,n.A)(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new s.A;return this.j2x(t,0,e).val}},u.prototype.j2x=function(t,e,r){let n="",o="";if(this.options.maxNestedTags&&r.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const i=this.options.jPath?r.toString():r,s=this.checkStopNode(r);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(o+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?o+="":"?"===a[0]?o+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)o+=this.buildTextValNode(t[a],a,"",e,r);else if("object"!=typeof t[a]){const u=this.isAttribute(a);if(u&&!this.ignoreAttributesFn(u,i))n+=this.buildAttrPairStr(u,""+t[a],s);else if(!u)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);o+=this.replaceEntitiesValue(e)}else{r.push(a);const n=this.checkStopNode(r);if(r.pop(),n){const r=""+t[a];o+=""===r?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+r+""+t+"${t}`;else if("object"==typeof t&&null!==t){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);e+=""===n?`<${r}${o}/>`:`<${r}${o}>${n}`}}else if("object"==typeof n&&null!==n){const t=this.buildRawContent(n),o=this.buildAttributesForStopNode(n);e+=""===t?`<${r}${o}/>`:`<${r}${o}>${t}`}else e+=`<${r}>${n}`}return e},u.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const r=t[this.options.attributesGroupName];for(let t in r){if(!Object.prototype.hasOwnProperty.call(r,t))continue;const n=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,o=r[t];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}else for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;const n=this.isAttribute(r);if(n){const o=t[r];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}return e},u.prototype.buildObjectNode=function(t,e,r,n){if(""===t)return"?"===e[0]?this.indentate(n)+"<"+e+r+"?"+this.tagEndChar:this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar;{let o=""+t+o}},u.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},44928(t,e,r){"use strict";r.d(e,{A:()=>i});var n=r(87818),o=r(89596);function i(t,e){let r="";e.format&&e.indentBy.length>0&&(r="\n");const i=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let r=t.toString();return r=h(r,e),r}return""}for(let d=0;d`,l=!1,n.pop();continue}if(y===e.commentPropName){i+=r+`\x3c!--${g[y][0][e.textNodeName]}--\x3e`,l=!0,n.pop();continue}if("?"===y[0]){const t=p(g[":@"],e,b),o="?xml"===y?"":r;let s=g[y][0][e.textNodeName];s=0!==s.length?" "+s:"",i+=o+`<${y}${s}${t}?>`,l=!0,n.pop();continue}let v=r;""!==v&&(v+=e.indentBy);const w=r+`<${y}${p(g[":@"],e,b)}`;let x;x=b?u(g[y],e):s(g[y],e,v,n,o),-1!==e.unpairedTags.indexOf(y)?e.suppressUnpairedNode?i+=w+">":i+=w+"/>":x&&0!==x.length||!e.suppressEmptyNode?x&&x.endsWith(">")?i+=w+`>${x}${r}`:(i+=w+">",x&&""!==r&&(x.includes("/>")||x.includes("`):i+=w+"/>",l=!0,n.pop()}return i}function a(t,e){if(!t||e.ignoreAttributes)return null;const r={};let n=!1;for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o.startsWith(e.attributeNamePrefix)?o.substr(e.attributeNamePrefix.length):o]=t[o],n=!0);return n?r:null}function u(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let r="";for(let n=0;n${n}`:r+=`<${i}${t}/>`}}}return r}function l(t,e){let r="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let o=t[n];!0===o&&e.suppressBooleanAttributes?r+=` ${n.substr(e.attributeNamePrefix.length)}`:r+=` ${n.substr(e.attributeNamePrefix.length)}="${o}"`}return r}function c(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},69031(t,e,r){"use strict";r.d(e,{Eo:()=>s,Xe:()=>i,q9:()=>u,vl:()=>l,yQ:()=>a});const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new RegExp("^["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function i(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;ti});var n=r(69031);const o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t,e){e=Object.assign({},o,e);const r=[];let n=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let o=0;o"!==t[o]&&" "!==t[o]&&"\t"!==t[o]&&"\n"!==t[o]&&"\r"!==t[o];o++)m+=t[o];if(m=m.trim(),"/"===m[m.length-1]&&(m=m.substring(0,m.length-1),o--),!g(m)){let e;return e=0===m.trim().length?"Invalid space after '<'.":"Tag '"+m+"' is an invalid name.",h("InvalidTag",e,y(t,o))}const b=l(t,o);if(!1===b)return h("InvalidAttr","Attributes for '"+m+"' have open quote.",y(t,o));let v=b.value;if(o=b.index,"/"===v[v.length-1]){const r=o-v.length;v=v.substring(0,v.length-1);const i=p(v,e);if(!0!==i)return h(i.err.code,i.err.msg,y(t,r+i.err.line));n=!0}else if(d){if(!b.tagClosed)return h("InvalidTag","Closing tag '"+m+"' doesn't have proper closing.",y(t,o));if(v.trim().length>0)return h("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",y(t,c));if(0===r.length)return h("InvalidTag","Closing tag '"+m+"' has not been opened.",y(t,c));{const e=r.pop();if(m!==e.tagName){let r=y(t,e.tagStartPos);return h("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+m+"'.",y(t,c))}0==r.length&&(i=!0)}}else{const s=p(v,e);if(!0!==s)return h(s.err.code,s.err.msg,y(t,o-v.length+s.err.line));if(!0===i)return h("InvalidXml","Multiple possible root nodes found.",y(t,o));-1!==e.unpairedTags.indexOf(m)||r.push({tagName:m,tagStartPos:c}),n=!0}for(o++;o0)||h("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):h("InvalidXml","Start tag expected.",1)}function s(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function a(t,e){const r=e;for(;e5&&"xml"===n)return h("InvalidXml","XML declaration allowed only at the start of the document.",y(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function u(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function l(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const c=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function p(t,e){const r=(0,n.Xe)(t,c),o={};for(let t=0;tn});const n=r(49965).A},25003(t,e,r){"use strict";r.d(e,{A:()=>o});var n=r(69031);class o{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const r=Object.create(null);let n=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let o=1,i=!1,a=!1,u="";for(;e"===t[e]){if(a?"-"===t[e-1]&&"-"===t[e-2]&&(a=!1,o--):o--,0===o)break}else"["===t[e]?i=!0:u+=t[e];else{if(i&&s(t,"!ENTITY",e)){let o,i;if(e+=7,[o,i,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===i.indexOf("&")){if(!1!==this.options.enabled&&this.options.maxEntityCount&&n>=this.options.maxEntityCount)throw new Error(`Entity count (${n+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);const t=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");r[o]={regx:RegExp(`&${t};`,"g"),val:i},n++}}else if(i&&s(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(i&&s(t,"!ATTLIST",e))e+=8;else if(i&&s(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!s(t,"!--",e))throw new Error("Invalid DOCTYPE");a=!0}o++,u=""}if(0!==o)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){e=i(t,e);let r="";for(;ethis.options.maxEntitySize)throw new Error(`Entity "${r}" size (${n.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[r,n,--e]}readNotationExp(t,e){e=i(t,e);let r="";for(;e{for(;eu});var n=r(69031);const o=t=>n.q9.includes(t)?"__"+t:t,i={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:o};function s(t,e){if("string"!=typeof t)return;const r=t.toLowerCase();if(n.q9.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);if(n.vl.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`)}function a(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,maxEntityCount:100,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:t.maxEntitySize??1e4,maxExpansionDepth:t.maxExpansionDepth??10,maxTotalExpansions:t.maxTotalExpansions??1e3,maxExpandedLength:t.maxExpandedLength??1e5,maxEntityCount:t.maxEntityCount??100,allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null}:a(!0)}const u=function(t){const e=Object.assign({},i,t),r=[{value:e.attributeNamePrefix,name:"attributeNamePrefix"},{value:e.attributesGroupName,name:"attributesGroupName"},{value:e.textNodeName,name:"textNodeName"},{value:e.cdataPropName,name:"cdataPropName"},{value:e.commentPropName,name:"commentPropName"}];for(const{value:t,name:e}of r)t&&s(t,e);return null===e.onDangerousProperty&&(e.onDangerousProperty=o),e.processEntities=a(e.processEntities),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),e}},79781(t,e,r){"use strict";r.d(e,{A:()=>f});var n=r(69031),o=r(13127),i=r(25003),s=r(60524),a=r(72984),u=r(87818),l=r(89596);function c(t,e){if(!t)return{};const r=e.attributesGroupName?t[e.attributesGroupName]:t;if(!r)return{};const n={};for(const t in r)t.startsWith(e.attributeNamePrefix)?n[t.substring(e.attributeNamePrefix.length)]=r[t]:n[t]=r[t];return n}function p(t){if(!t||"string"!=typeof t)return;const e=t.indexOf(":");if(-1!==e&&e>0){const r=t.substring(0,e);if("xmlns"!==r)return r}}class f{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>T(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>T(e,16,"&#x")}},this.addExternalEntities=h,this.parseXml=b,this.parseTextData=d,this.resolveNameSpace=g,this.buildAttributesMap=m,this.isItStopNode=E,this.replaceEntitiesValue=w,this.readStopNodeData=O,this.saveTextToParentTag=x,this.addChild=v,this.ignoreAttributesFn=(0,a.A)(this.options.ignoreAttributes),this.entityExpansionCount=0,this.currentExpandedLength=0,this.matcher=new l.A,this.isCurrentNodeStopNode=!1,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodeExpressions=[];for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t,e,r));const n=this.options.jPath?r.toString():r,a=this.options.tagValueProcessor(e,t,n,o,i);return null==a?t:typeof a!=typeof t||a!==t?a:this.options.trimValues||t.trim()===t?_(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function g(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const y=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function m(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const o=(0,n.Xe)(t,y),i=o.length,s={},a={};for(let t=0;t0&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(a);for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}o=N(this.options.transformTagName,o,"",this.options).tagName,r&&(n=this.saveTextToParentTag(n,r,this.matcher));const s=this.matcher.getCurrentTag();if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);s&&-1!==this.options.unpairedTags.indexOf(s)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=A(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,this.matcher),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new o.A(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,this.matcher,e.tagName)),this.addChild(r,t,this.matcher,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=S(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,this.matcher),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=s.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=S(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,this.matcher);let s=this.parseTextData(o,r.tagname,this.matcher,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,s),i=e+2}else{let s=A(t,i,this.options.removeNSPrefix);if(!s){const e=t.substring(Math.max(0,i-50),Math.min(t.length,i+50));throw new Error(`readTagExp returned undefined at position ${i}. Context: "${e}"`)}let a=s.tagName;const u=s.rawTagName;let l=s.tagExp,f=s.attrExpPresent,h=s.closeIndex;if(({tagName:a,tagExp:l}=N(this.options.transformTagName,a,l,this.options)),this.options.strictReservedNames&&(a===this.options.commentPropName||a===this.options.cdataPropName))throw new Error(`Invalid tag name: ${a}`);r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,this.matcher,!1));const d=r;d&&-1!==this.options.unpairedTags.indexOf(d.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());let g=!1;l.length>0&&l.lastIndexOf("/")===l.length-1&&(g=!0,"/"===a[a.length-1]?(a=a.substr(0,a.length-1),l=a):l=l.substr(0,l.length-1),f=a!==l);let y,m=null,b={};y=p(u),a!==e.tagname&&this.matcher.push(a,{},y),a!==l&&f&&(m=this.buildAttributesMap(l,this.matcher,a),m&&(b=c(m,this.options))),a!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode(this.stopNodeExpressions,this.matcher));const v=i;if(this.isCurrentNodeStopNode){let e="";if(g)i=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))i=s.closeIndex;else{const r=this.readStopNodeData(t,u,h+1);if(!r)throw new Error(`Unexpected end of ${u}`);i=r.i,e=r.tagContent}const n=new o.A(a);m&&(n[":@"]=m),n.add(this.options.textNodeName,e),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,n,this.matcher,v)}else{if(g){({tagName:a,tagExp:l}=N(this.options.transformTagName,a,l,this.options));const t=new o.A(a);m&&(t[":@"]=m),this.addChild(r,t,this.matcher,v),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(-1!==this.options.unpairedTags.indexOf(a)){const t=new o.A(a);m&&(t[":@"]=m),this.addChild(r,t,this.matcher,v),this.matcher.pop(),this.isCurrentNodeStopNode=!1,i=s.closeIndex;continue}{const t=new o.A(a);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),m&&(t[":@"]=m),this.addChild(r,t,this.matcher,v),r=t}}n="",i=h}}else n+=t[i];return e.child};function v(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.jPath?r.toString():r,i=this.options.updateTag(e.tagname,o,e[":@"]);!1===i||("string"==typeof i?(e.tagname=i,t.addChild(e,n)):t.addChild(e,n))}function w(t,e,r){const n=this.options.processEntities;if(!n||!n.enabled)return t;if(n.allowedTags){const o=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(e):n.allowedTags(e,o)))return t}if(n.tagFilter){const o=this.options.jPath?r.toString():r;if(!n.tagFilter(e,o))return t}for(const e of Object.keys(this.docTypeEntities)){const r=this.docTypeEntities[e],o=t.match(r.regx);if(o){if(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions)throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);const e=t.length;if(t=t.replace(r.regx,r.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-e,this.currentExpandedLength>n.maxExpandedLength))throw new Error(`Total expanded content size exceeded: ${this.currentExpandedLength} > ${n.maxExpandedLength}`)}}for(const e of Object.keys(this.lastEntities)){const r=this.lastEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(const e of Object.keys(this.htmlEntities)){const r=this.htmlEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)}function x(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function E(t,e){if(!t||0===t.length)return!1;for(let r=0;r"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=S(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=S(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=S(t,"]]>",r,"StopNode is not closed.")-2;else{const n=A(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function _(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&(0,s.A)(t,r)}return(0,n.yQ)(t)?t:""}function T(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}function N(t,e,r,n){if(t){const n=t(e);r===e&&(r=n),e=n}return{tagName:e=j(e,n),tagExp:r}}function j(t,e){if(n.vl.includes(t))throw new Error(`[SECURITY] Invalid name: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);return n.q9.includes(t)?e.onDangerousProperty(t):t}},1912(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(60341),o=r(79781),i=r(35382),s=r(86301),a=r(13127);class u{constructor(t){this.externalEntities={},this.options=(0,n.D)(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const r=(0,s.t)(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new o.A(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:(0,i.A)(n,this.options,r.matcher)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return a.A.getMetaDataSymbol()}}},35382(t,e,r){"use strict";r.d(e,{A:()=>i});const n=r(13127).A.getMetaDataSymbol();function o(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;const r={};for(const n in t)n.startsWith(e)?r[n.substring(e.length)]=t[n]:r[n]=t[n];return r}function i(t,e,r){return s(t,e,r)}function s(t,e,r){let i;const c={};for(let p=0;p0&&(c[e.textNodeName]=i):void 0!==i&&(c[e.textNodeName]=i),c}function a(t){const e=Object.keys(t);for(let t=0;to}),n="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class o{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][n]={startIndex:e})}static getMetaDataSymbol(){return n}}},21657(t,e,r){"use strict";function n(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}r.d(e,{K:()=>n})},19621(t,e,r){"use strict";r.d(e,{T:()=>a});var n=r(21657);const o="@@HOTPATCHER",i=()=>{};function s(t){return{original:t,methods:[t],final:!1}}class a{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=o}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==o)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||i)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return(0,n.K)(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=s(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(s(e),{original:r})}else this.configuration.registry[t]=s(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}},93028(t,e,r){"use strict";function n(t){if(!o(t))throw new Error("Parameter was not an error")}function o(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}r.d(e,{b:()=>o,t:()=>n})},11163(t,e,r){"use strict";r.d(e,{z:()=>n});function n(){return"Layerr"}},42294(t,e,r){"use strict";r.d(e,{GU:()=>n.G});var n=r(17601)},17601(t,e,r){"use strict";r.d(e,{G:()=>s});var n=r(93028),o=r(11163),i=r(78049);class s extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:s}=(0,i.W)(r);let a=s;if(n.cause&&(a=`${a}: ${n.cause.message}`),super(a),this.message=a,n.name&&"string"==typeof n.name?this.name=n.name:this.name=(0,o.z)(),n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,n.t)(t),t._cause&&(0,n.b)(t._cause)?t._cause:null}static fullStack(t){(0,n.t)(t);const e=s.cause(t);return e?`${t.stack}\ncaused by: ${s.fullStack(e)}`:t.stack??""}static info(t){(0,n.t)(t);const e={},r=s.cause(t);return r&&Object.assign(e,s.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},78049(t,e,r){"use strict";r.d(e,{W:()=>o});var n=r(93028);function o(t){let e,r="";if(0===t.length)e={};else if((0,n.b)(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}},87818(t,e,r){"use strict";r.d(e,{A:()=>n});class n{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let r=0,n="";for(;rn});class n{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[]}push(t,e=null,r=null){this.path.length>0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const o=this.siblingStacks[n],i=r?`${r}:${t}`:t,s=o.get(i)||0;let a=0;for(const t of o.values())a+=t;o.set(i,s+1);const u={tag:t,position:a,counter:s};null!=r&&(u.namespace=r),null!=e&&(u.values=e),this.path.push(u)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const r=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(r)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[r];if("deep-wildcard"===n.type){if(r--,r<0)return!0;const n=t[r];let o=!1;for(let t=e;t>=0;t--){const i=t===this.path.length-1;if(this._matchSegment(n,this.path[t],i)){e=t-1,r--,o=!0;break}}if(!o)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,r--}}return r<0}_matchSegment(t,e,r){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!r)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const r=e.values[t.attrName];if(String(r)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!r)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}},60524(t,e,r){"use strict";r.d(e,{A:()=>s});const n=/^[-+]?0x[a-fA-F0-9]+$/,o=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};function s(t,e={}){if(e=Object.assign({},i,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&n.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(a);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const n=o.exec(r);if(n){const o=n[1]||"",i=n[2];let a=(s=n[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substring(0,s.length-1)),s):s;const u=o?"."===t[i.length+1]:"."===t[i.length];if(!e.leadingZeros&&(i.length>1||1===i.length&&!u))return t;{const n=Number(r),s=String(n);if(0===n)return n;if(-1!==s.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===s||s===a||s===`${o}${a}`?n:t;let u=i?a:r;return i?u===s||o+u===s?n:t:u===s||u===o+s?n:t}}return t}var s}const a=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/},406(t,e,r){"use strict";function n(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}r.d(e,{A:()=>n})},19396(t,e,r){"use strict";r.d(e,{V:()=>o});var n=r(57221);function o(t,e){return`Basic ${(0,n.nk)(`${t}:${e}`)}`}},90036(t,e,r){"use strict";r.d(e,{C8:()=>i,Wb:()=>a,XX:()=>s,oD:()=>u});var n=r(83503),o=r(35658);function i(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}function s(t,e){const r=t.url.replace("//",""),i=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),s=t.method?t.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),c=n(`${s}:${i}`),p=n(a?`${l}:${e.nonce}:${u}:${e.cnonce}:${a}:${c}`:`${l}:${e.nonce}:${c}`),f={username:e.username,realm:e.realm,nonce:e.nonce,uri:i,qop:a,response:p,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},h=[];for(const t in f)f[t]&&("qop"===t||"nc"===t||"algorithm"===t?h.push(`${t}=${f[t]}`):h.push(`${t}="${f[t]}"`));return`Digest ${h.join(", ")}`}function a(t,e){if(!u(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function u(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},36942(t,e,r){"use strict";r.d(e,{e:()=>u});var n=r(42294),o=r(90036),i=r(19396),s=r(89793),a=r(38374);function u(t,e,r,u,l){switch(t.authType){case a.hT.Auto:e&&r&&(t.headers.Authorization=(0,i.V)(e,r));break;case a.hT.Digest:t.digest=(0,o.C8)(e,r,l);break;case a.hT.None:break;case a.hT.Password:t.headers.Authorization=(0,i.V)(e,r);break;case a.hT.Token:t.headers.Authorization=(0,s.O)(u);break;default:throw new n.GU({info:{code:a.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},89793(t,e,r){"use strict";function n(t){return`${t.token_type} ${t.access_token}`}r.d(e,{O:()=>n})},47397(t,e,r){"use strict";r.d(e,{m:()=>i});const n="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function i(t){return n&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},53850(t,e,r){"use strict";function n(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}r.d(e,{P:()=>n})},22921(t,e,r){"use strict";function n(){return"string"==typeof TARGET&&"react-native"===TARGET}function o(){return"string"==typeof TARGET&&"web"===TARGET}r.d(e,{H:()=>o,l:()=>n})},84819(t,e,r){"use strict";r.d(e,{G:()=>i});var n=r(19621);let o=null;function i(){return o||(o=new n.T),o}},84997(t,e,r){"use strict";r.d(e,{U:()=>A});var n=r(85394),o=r(36942),i=r(50335),s=r(28161),a=r(68476),u=r(76374),l=r(77101),c=r(75892),p=r(74419),f=r(17658),h=r(39615),d=r(86772),g=r(84830),y=r(80156),m=r(77087),b=r(30047),v=r(81838),w=r(10524),x=r(90176),E=r(38374);const S="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function A(t,e={}){const{authType:r=null,remoteBasePath:A,contactHref:O=S,ha1:_,headers:T={},httpAgent:N,httpsAgent:j,password:P,token:R,username:k,withCredentials:C}=e;let I=r;I||(I=k||P?E.hT.Password:E.hT.None);const M={authType:I,remoteBasePath:A,contactHref:O,ha1:_,headers:Object.assign({},T),httpAgent:N,httpsAgent:j,password:P,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[x.jp]},remotePath:(0,n.wB)(t),remoteURL:t,token:R,username:k,withCredentials:C};return(0,o.e)(M,k,P,R,_),{copyFile:(t,e,r)=>(0,i.m)(M,t,e,r),createDirectory:(t,e)=>(0,s.c)(M,t,e),createReadStream:(t,e)=>(0,a.V)(M,t,e),createWriteStream:(t,e,r)=>(0,a.o)(M,t,e,r),customRequest:(t,e)=>(0,u.J)(M,t,e),deleteFile:(t,e)=>(0,l.W)(M,t,e),exists:(t,e)=>(0,c.t)(M,t,e),getDirectoryContents:(t,e)=>(0,p.A)(M,t,e),getFileContents:(t,e)=>(0,f.F)(M,t,e),getFileDownloadLink:t=>(0,f.b)(M,t),getFileUploadLink:t=>(0,b.w)(M,t),getHeaders:()=>Object.assign({},M.headers),getQuota:t=>(0,d.T)(M,t),lock:(t,e)=>(0,h.s)(M,t,e),moveFile:(t,e,r)=>(0,m.m)(M,t,e,r),putFileContents:(t,e,r)=>(0,b.g)(M,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>(0,v.V)(M,t,e,r,n,o),getDAVCompliance:t=>(0,w.p)(M,t),search:(t,e)=>(0,y.T)(M,t,e),setHeaders:t=>{M.headers=Object.assign({},t)},stat:(t,e)=>(0,g.z)(M,t,e),unlock:(t,e,r)=>(0,h.T)(M,t,e,r),registerAttributeParser:t=>{M.parsing.attributeParsers.push(t)},registerTagParser:t=>{M.parsing.tagParsers.push(t)}}}},82415(t,e,r){"use strict";r.d(e,{UU:()=>n.U,h4:()=>o.h4});var n=r(84997),o=(r(38374),r(90176));r(71922),r(5e3)},50335(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T",Depth:a.shallow?"0":"infinity"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},28161(t,e,r){"use strict";r.d(e,{c:()=>u});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3),a=r(84830);async function u(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=(0,o.xi)((0,o.qb)(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let i=!1;for(const o of n)if(i)await u(t,o,{...r,recursive:!1});else try{if("directory"!==(await(0,a.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;i=!0,await u(t,o,{...r,recursive:!1})}}(t,e,r);const l=(0,i.H)({url:(0,n.oq)(t.remoteURL,(p=(0,o.O0)(e),p.endsWith("/")?p:p+"/")),method:"MKCOL"},t,r),c=await(0,i.E)(l,t);var p;(0,s.HT)(t,c)}},68476(t,e,r){"use strict";r.d(e,{V:()=>l,o:()=>c});var n=r(88310),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);const u=()=>{};function l(t,e,r={}){const u=new(0,n.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const u=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:n},t,r),l=await(0,s.E)(u,t);if((0,a.HT)(t,l),n.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return r.callback&&setTimeout(()=>{r.callback(l)},0),l.body}(t,e,r).then(t=>{t.pipe(u)}).catch(t=>{u.emit("error",t)}),u}function c(t,e,r={},l=u){const c=new(0,n.PassThrough),p={};!1===r.overwrite&&(p["If-None-Match"]="*");const f=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:p,data:c,maxRedirects:0},t,r);return(0,s.E)(f,t).then(e=>(0,a.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{c.emit("error",t)}),c}},76374(t,e,r){"use strict";r.d(e,{J:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r){r.url||(r.url=(0,n.oq)(t.remoteURL,(0,o.O0)(e)));const a=(0,i.H)(r,t,{}),u=await(0,i.E)(a,t);return(0,s.HT)(t,u),u}},77101(t,e,r){"use strict";r.d(e,{W:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,r),u=await(0,i.E)(a,t);(0,s.HT)(t,u)}},74419(t,e,r){"use strict";r.d(e,{A:()=>l});var n=r(12692),o=r(85394),i=r(36236),s=r(90176),a=r(89062),u=r(5e3);async function l(t,e,r={}){const l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),c=await(0,a.E)(l,t);(0,u.HT)(t,c);const p=await c.text();if(!p)throw new Error("Failed parsing directory contents: Empty response");const f=await(0,s.h4)(p,t.parsing),h=(0,i.dU)(e);let d=function(t,e,r,a=!1,u=!1){const l=n.join(e,"/"),{multistatus:{response:c}}=t,p=c.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:r}}=t,u="/"===l?decodeURIComponent((0,i.qb)(e)):(0,i.qb)(n.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,s.ch)(r,u,a)});return u?p:p.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(f,(0,i.dU)(t.remoteBasePath||t.remotePath),h,r.details,r.includeSelf);return r.glob&&(d=(0,u.eh)(d,r.glob)),(0,u.hq)(c,d,r.details)}},75892(t,e,r){"use strict";r.d(e,{t:()=>o});var n=r(84830);async function o(t,e,r={}){try{return await(0,n.z)(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}},10524(t,e,r){"use strict";r.d(e,{p:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,r),u=await(0,i.E)(a,t);try{(0,s.HT)(t,u)}catch(t){throw t}return{compliance:(u.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:u.headers.get("Server")??""}}},17658(t,e,r){"use strict";r.d(e,{F:()=>h,b:()=>d});var n=r(42294),o=r(85394),i=r(36236),s=r(57221),a=r(22921),u=r(89062),l=r(5e3),c=r(38374),p=r(62045).hp;const f=t=>t;async function h(t,e,r={}){const{format:s="binary"}=r;if("binary"!==s&&"text"!==s)throw new n.GU({info:{code:c.O4.InvalidOutputFormat}},`Invalid output format: ${s}`);return"text"===s?async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[f]},t,r),s=await(0,u.E)(n,t);(0,l.HT)(t,s);const a=await s.text();return(0,l.hq)(s,a,r.details)}(t,e,r):async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET"},t,r),s=await(0,u.E)(n,t);let c;return(0,l.HT)(t,s),c=(0,a.H)()||(0,a.l)()?await s.arrayBuffer():p.from(await s.arrayBuffer()),(0,l.hq)(s,c,r.details)}(t,e,r)}function d(t,e){let r=(0,o.oq)(t.remoteURL,(0,i.O0)(e));const a=/^https:/i.test(r)?"https":"http";switch(t.authType){case c.hT.None:break;case c.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,s.Ey)(e);r=r.replace(/^https?:\/\//,`${a}://${n}@`);break}default:throw new n.GU({info:{code:c.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},86772(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(89062),o=r(5e3),i=r(90176),s=r(85394),a=r(7815);async function u(t,e={}){const r=e.path||"/",u=(0,n.H)({url:(0,s.oq)(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,n.E)(u,t);(0,o.HT)(t,l);const c=await l.text(),p=await(0,i.h4)(c,t.parsing),f=(0,a.K)(p);return(0,o.hq)(l,f,e.details)}},39615(t,e,r){"use strict";r.d(e,{T:()=>p,s:()=>c});var n=r(26602),o=r(85394),i=r(36236),s=r(27562),a=r(89062),u=r(5e3);const l="Infinite, Second-4100000000";async function c(t,e,r={}){const{refreshToken:c,timeout:p=l}=r,f={Accept:"text/plain,application/xml",Timeout:p};c&&(f.If=c);const h=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"LOCK",headers:f,data:(0,s.A)(t.contactHref)},t,r),d=await(0,a.E)(h,t);(0,u.HT)(t,d);const g=await d.text(),y=(0,s.o)(g),m=n.get(y,"prop.lockdiscovery.activelock.locktoken.href"),b=n.get(y,"prop.lockdiscovery.activelock.timeout");if(!m)throw(0,u.YQ)(d,"No lock token received: ");return{token:m,serverTimeout:b}}async function p(t,e,r,n={}){const s=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),l=await(0,a.E)(s,t);if((0,u.HT)(t,l),204!==l.status&&200!==l.status)throw(0,u.YQ)(l)}},77087(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},81838(t,e,r){"use strict";r.d(e,{V:()=>c});var n=r(42294),o=r(85394),i=r(36236),s=r(89062),a=r(5e3),u=r(10524),l=r(38374);async function c(t,e,r,c,p,f={}){const h=await(0,u.p)(t,e,f);if(h.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,u,c,p={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const f={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(u-r+1),"X-Update-Range":`bytes=${r}-${u}`},h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PATCH",headers:f,data:c},t,p),d=await(0,s.E)(h,t);(0,a.HT)(t,d)}(t,e,r,c,p,f);if(h.server.includes("Apache")&&h.compliance.includes(""))return await async function(t,e,r,u,c,p={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const f={"Content-Type":"application/octet-stream","Content-Length":""+(u-r+1),"Content-Range":`bytes ${r}-${u}/*`},h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:f,data:c},t,p),d=await(0,s.E)(h,t);(0,a.HT)(t,d)}(t,e,r,c,p,f);throw new n.GU({info:{code:l.O4.NotSupported}},"Not supported")}},30047(t,e,r){"use strict";r.d(e,{g:()=>h,w:()=>d});var n=r(42294),o=r(88310),i=r(57221),s=r(85394),a=r(36236),u=r(71922),l=r(22921),c=r(89062),p=r(5e3),f=r(38374);async function h(t,e,r,n={}){const{contentLength:i=!0,overwrite:f=!0}=n,h={"Content-Type":"application/octet-stream"};!(0,l.H)()&&!(0,l.l)()&&void 0!==o&&void 0!==o?.Readable&&r instanceof o.Readable||!1===i||(h["Content-Length"]="number"==typeof i?`${i}`:`${(0,u.J)(r)}`),f||(h["If-None-Match"]="*");const d=(0,c.H)({url:(0,s.oq)(t.remoteURL,(0,a.O0)(e)),method:"PUT",headers:h,data:r},t,n),g=await(0,c.E)(d,t);try{(0,p.HT)(t,g)}catch(t){const e=t;if(412!==e.status||f)throw e;return!1}return!0}function d(t,e){let r=`${(0,s.oq)(t.remoteURL,(0,a.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(r)?"https":"http";switch(t.authType){case f.hT.None:break;case f.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,i.Ey)(e);r=r.replace(/^https?:\/\//,`${o}://${n}@`);break}default:throw new n.GU({info:{code:f.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},80156(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const p=await c.text(),f=await(0,n.h4)(p,t.parsing),h=(0,n.KA)(f,e,u);return(0,a.hq)(c,h,u)}},84830(t,e,r){"use strict";r.d(e,{z:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const p=await c.text(),f=await(0,n.h4)(p,t.parsing),h=(0,n.ky)(f,e,u);return(0,a.hq)(c,h,u)}},89062(t,e,r){"use strict";r.d(e,{E:()=>g,H:()=>d});var n=r(11568),o=r(11083),i=r(97192),s=r(84819),a=r(22921),u=r(90036),l=r(79275),c=r(79605),p=r(39299),f=r(38374),h=r(36942);function d(t,e,r){const n=(0,l.q)(t);return n.headers=(0,c.l)(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function g(t,e){return e.authType===f.hT.Auto?async function(t,e){const r=await m(t);return r.ok?(e.authType=f.hT.Password,r):401==r.status&&(0,u.oD)(r)?(e.authType=f.hT.Digest,(0,h.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,y(t)):r}(t,e):t._digest?y(t):m(t)}async function y(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}}));const r=await m(t);if(401==r.status){if(e.hasDigestAuth=(0,u.Wb)(r,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}});const r=await m(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function m(t){const e=(0,s.G)();return e.patchInline("request",t=>e.patchInline("fetch",i.hd,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=(0,c.l)(e,t.headers)),void 0!==t.data){const[n,o]=(0,p.P)(t.data);r.body=n,e=(0,c.l)(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),(0,a.H)()||(0,a.l)()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new n.Agent:t.httpsAgent||new o.Agent),r.headers=e,r}(t)),t)}},5e3(t,e,r){"use strict";r.d(e,{HT:()=>s,YQ:()=>i,eh:()=>a,hq:()=>u});var n=r(44916),o=r(79605);function i(t,e=""){const r=new Error(`${e}Invalid response: ${t.status} ${t.statusText}`);return r.status=t.status,r.response=t,r}function s(t,e){const{status:r}=e;if(401===r&&t.digest)return e;if(r>=400)throw i(e);return e}function a(t,e){return t.filter(t=>(0,n.xF)(t.filename,e,{matchBase:!0}))}function u(t,e,r=!1){return r?{data:e,headers:t.headers?(0,o.N)(t.headers):{},status:t.status,statusText:t.statusText}:e}},39299(t,e,r){"use strict";r.d(e,{P:()=>a});var n=r(88310),o=r(47397),i=r(53850),s=r(22921);function a(t){if(!(0,s.H)()&&!(0,s.l)()&&t instanceof n.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,i.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},35658(t,e,r){"use strict";r.d(e,{M:()=>o});var n=r(83503);function o(t,e,r,o,i,s,a){const u=a||n(`${e}:${r}:${o}`);return t&&"md5-sess"===t.toLowerCase()?n(`${u}:${i}:${s}`):u}},90176(t,e,r){"use strict";r.d(e,{KA:()=>h,ch:()=>p,h4:()=>c,i5:()=>d,jp:()=>u,ky:()=>f});var n,o=r(12692),i=r(1912),s=r(26602),a=r(36236);function u(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function l(t,e,r=n.Original){const o=s.get(t,e);return"array"===r&&!1===Array.isArray(o)?[o]:"object"===r&&Array.isArray(o)?o[0]:o}function c(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[u]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return s.set(r,"multistatus.response",l(r,"multistatus.response",n.Array)),s.set(r,"multistatus.response",s.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?s.set(e,"status",l(e,"status",n.Object)):(s.set(e,"propstat",l(e,"propstat",n.Object)),s.set(e,"propstat.prop",l(e,"propstat.prop",n.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new i.A({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function p(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:i="0",resourcetype:s=null,getcontenttype:a=null,getetag:u=null}=t,l=s&&"object"==typeof s&&void 0!==s.collection?"directory":"file",c={filename:e,basename:o.basename(e),lastmod:n,size:parseInt(i,10),type:l,etag:"string"==typeof u?u.replace(/"/g,""):null};return"file"===l&&(c.mime=a&&"string"==typeof a?a.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function f(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,u,l]=i.split(" ",3),c=parseInt(u,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return p(o,(0,a.qb)(e),r)}function h(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith((0,a.O0)(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(p(t.propstat.prop,e,r))}),n}function d(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}!function(t){t.Array="array",t.Object="object",t.Original="original"}(n||(n={}))},57221(t,e,r){"use strict";r.d(e,{Ey:()=>o,nk:()=>i});var n=r(85914);function o(t){return n.decode(t)}function i(t){return n.encode(t)}r(15723)},79605(t,e,r){"use strict";function n(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function o(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}r.d(e,{N:()=>n,l:()=>o})},79275(t,e,r){"use strict";function n(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function o(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?i(e,t):n(t)}return e}function i(t,e){const r=n(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?i(r[t],e[t]):n(e[t]):r[t]=e[t]:r[t]=e[t]}),r}r.d(e,{h:()=>o,q:()=>n})},36236(t,e,r){"use strict";r.d(e,{O0:()=>a,dU:()=>l,qb:()=>c,xi:()=>u});var n=r(42294),o=r(12692);const i="__PATH_SEPARATOR_POSIX__",s="__PATH_SEPARATOR_WINDOWS__";function a(t){try{const e=t.replace(/\//g,i).replace(/\\\\/g,s);return encodeURIComponent(e).split(s).join("\\\\").split(i).join("/")}catch(t){throw new n.GU(t,"Failed encoding path")}}function u(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=o.dirname(e)}while(e&&"/"!==e);return r}function l(t){return t.startsWith("/")?t:"/"+t}function c(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}},7815(t,e,r){"use strict";r.d(e,{K:()=>o});var n=r(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":o}}}=e;return void 0!==r&&void 0!==o?{used:parseInt(String(r),10),available:(0,n.i5)(o)}:null}catch(t){}return null}},71922(t,e,r){"use strict";r.d(e,{J:()=>u});var n=r(42294),o=r(67691),i=r(47397),s=r(53850),a=r(38374);function u(t){if((0,i.m)(t))return t.byteLength;if((0,s.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new n.GU({info:{code:a.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},85394(t,e,r){"use strict";r.d(e,{S8:()=>l,oq:()=>u,wB:()=>a});var n=r(61160),o=r(42294),i=r(406),s=r(36236);function a(t){let e=new n(t).pathname;return e.length<=0&&(e="/"),(0,s.qb)(e)}function u(...t){return(0,i.A)(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},27562(t,e,r){"use strict";r.d(e,{A:()=>i,o:()=>a});var n=r(1912),o=r(99111);function i(t){return new o.A({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=s(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}function a(t){return new n.A({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},38374(t,e,r){"use strict";var n,o;r.d(e,{O4:()=>o,hT:()=>n}),r(97192),function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(n||(n={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(o||(o={}))},27341(t,e,r){"use strict";new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint},26549(t,e,r){"use strict";var n,o,i,s;r(75780),r(92148),r(27341),function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(n||(n={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(i||(i={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(s||(s={}))},13197(t,e,r){"use strict";r(91573),r(40144)},40144(t,e,r){"use strict";new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])},75780(t,e,r){},92148(t,e,r){},91573(t,e,r){},15723(t,e,r){"use strict";var n,o;r(26549),r(13197),r(40144),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(n||(n={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(o||(o={}))},84300(t,e,r){"use strict";r.d(e,{f:()=>n});const n=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")}},17908(t,e,r){"use strict";r.d(e,{d:()=>x});var n,o=r(73733),i=r(24754);const s=new Set(["!","?","+","*","@"]),a=t=>s.has(t),u=t=>a(t.type),l=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),c=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),p=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),f=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),h="(?!\\.)",d=new Set(["[","."]),g=new Set(["..","."]),y=new Set("().*{}+?[]^$\\!"),m=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),b="[^/]",v=b+"*?",w=b+"+?";class x{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#u;#l;#c=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?r:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#l?this.#l:this.type?this.#l=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#l=this.#n.map(t=>String(t)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[o,i,s,a]="string"==typeof e?n.#E(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||s,this.#r=this.#r||a,o}).join("");let s="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!g.has(this.#n[0]))){const r=d,n=e&&r.has(o.charAt(0))||o.startsWith("\\.")&&r.has(o.charAt(2))||o.startsWith("\\.\\.")&&r.has(o.charAt(4)),i=!e&&!t&&r.has(o.charAt(0));s=n?"(?!(?:^|/)\\.\\.?(?:$|/))":i?h:""}let a="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(a="(?:$|\\/)"),[s+o+a,(0,i.x)(o),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,o="!"===this.type?"(?:(?!(?:":"(?:";let s=this.#S(e);if(this.isStart()&&this.isEnd()&&!s&&"!"!==this.type){const t=this.toString(),e=this;return e.#n=[t],e.type=null,e.#e=void 0,[t,(0,i.x)(this.toString()),!1,!1]}let a=!r||t||e?"":this.#S(!0);a===s&&(a=""),a&&(s=`(?:${s})(?:${a})*?`);let l="";return l="!"===this.type&&this.#c?(this.isStart()&&!e?h:"")+w:o+s+("!"===this.type?"))"+(!this.isStart()||e||t?"":h)+v+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&a?")":"*"===this.type&&a?")?":`)${this.type}`),[l,(0,i.x)(s),this.#e=!!this.#e,this.#r]}#S(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#E(t,e,r=!1){let n=!1,s="",a=!1,u=!1;for(let i=0;is});const n={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=t=>t.replace(/[[\]\\-]/g,"\\$&"),i=t=>t.join(""),s=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const s=[],a=[];let u=r+1,l=!1,c=!1,p=!1,f=!1,h=r,d="";t:for(;ud?s.push(o(d)+"-"+o(e)):e===d&&s.push(o(e)),d="",u++):t.startsWith("-]",u+1)?(s.push(o(e+"-")),u+=2):t.startsWith("-",u+1)?(d=e,u+=2):(s.push(o(e)),u++)}else p=!0,u++}else f=!0,u++}if(hn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&")},44916(t,e,r){"use strict";r.d(e,{xF:()=>l});var n=r(68928),o=r(84300),i=r(17908),s=r(25093),a=r(24754),u=r(65606);const l=(t,e,r={})=>((0,o.f)(e),!(!r.nocomment&&"#"===e.charAt(0))&&new L(e,r).match(t)),c=/^\*+([^+@!?\*\[\(]*)$/,p=t=>e=>!e.startsWith(".")&&e.endsWith(t),f=t=>e=>e.endsWith(t),h=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),d=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),g=/^\*+\.\*+$/,y=t=>!t.startsWith(".")&&t.includes("."),m=t=>"."!==t&&".."!==t&&t.includes("."),b=/^\.\*+$/,v=t=>"."!==t&&".."!==t&&t.startsWith("."),w=/^\*+$/,x=t=>0!==t.length&&!t.startsWith("."),E=t=>0!==t.length&&"."!==t&&".."!==t,S=/^\?+([^+@!?\*\[\(]*)?$/,A=([t,e=""])=>{const r=N([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},O=([t,e=""])=>{const r=j([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},_=([t,e=""])=>{const r=j([t]);return e?t=>r(t)&&t.endsWith(e):r},T=([t,e=""])=>{const r=N([t]);return e?t=>r(t)&&t.endsWith(e):r},N=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},j=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},P="object"==typeof u&&u?"object"==typeof u.env&&u.env&&u.env.__MINIMATCH_TESTING_PLATFORM__||u.platform:"posix",R="win32"===P?"\\":"/";l.sep=R;const k=Symbol("globstar **");l.GLOBSTAR=k,l.filter=(t,e={})=>r=>l(r,t,e);const C=(t,e={})=>Object.assign({},t,e);l.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return l;const e=l;return Object.assign((r,n,o={})=>e(r,n,C(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,C(t,r))}static defaults(r){return e.defaults(C(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,C(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,C(t,n))}},unescape:(r,n={})=>e.unescape(r,C(t,n)),escape:(r,n={})=>e.escape(r,C(t,n)),filter:(r,n={})=>e.filter(r,C(t,n)),defaults:r=>e.defaults(C(t,r)),makeRe:(r,n={})=>e.makeRe(r,C(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,C(t,n)),match:(r,n,o={})=>e.match(r,n,C(t,o)),sep:e.sep,GLOBSTAR:k})};const I=(t,e={})=>((0,o.f)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:n(t));l.braceExpand=I,l.makeRe=(t,e={})=>new L(t,e).makeRe(),l.match=(t,e,r={})=>{const n=new L(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const M=/[?*]|[+@!]\(.*?\)|\[|\]/;class L{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){(0,o.f)(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||P,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&M.test(t[2])||M.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const u=r.slice(0);u[n]="**",t.push(u),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;n=2&&(t=this.levelTwoFileOptimize(t)),e.includes(k)?this.#A(t,e,r,n,o):this.#O(t,e,r,n,o)}#A(t,e,r,n,o){const i=e.indexOf(k,o),s=e.lastIndexOf(k),[a,u,l]=r?[e.slice(o,i),e.slice(i+1),[]]:[e.slice(o,i),e.slice(i+1,s),e.slice(s+1)];if(a.length){const e=t.slice(n,n+a.length);if(!this.#O(e,a,r,0,0))return!1;n+=a.length}let c=0;if(l.length){if(l.length+n>t.length)return!1;let e=t.length-l.length;if(this.#O(t,l,r,e,0))c=l.length;else{if(""!==t[t.length-1]||n+l.length===t.length)return!1;if(e--,!this.#O(t,l,r,e,0))return!1;c=l.length+1}}if(!u.length){let e=!!c;for(let r=n;r{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===k?k:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===k&&i!==k&&(void 0===i?void 0!==o&&o!==k?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==k&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=k))}),e.filter(t=>t!==k).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;tn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,t=[],i.O=(e,r,n,o)=>{if(!r){var s=1/0;for(c=0;c=o)&&Object.keys(i.O).every(t=>i.O[t](r[u]))?r.splice(u--,1):(a=!1,o0&&t[c-1][2]>o;c--)t[c]=t[c-1];t[c]=[r,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,r)=>(i.f[r](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"428c2ff62c4b8b3c97fc",3556:"57d00a12b4953e229068",4508:"bd9a6bf4d650882814a8",4906:"75718b28aced26adc4af",5448:"71cfe268d6f1213c4735",5528:"fa22a350943490669cfb",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7039:"be7eefcb933f99fc5b1f",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8124:"75a422293ae2add34a10",8815:"9a5c507c75429c9c04e4"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},r="nextcloud-ui-legacy:",i.l=(t,n,o,s)=>{if(e[t])e[t].push(n);else{var a,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(h);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),r)return r(n)},h=setTimeout(f.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=f.bind(null,a.onerror),a.onload=f.bind(null,a.onload),u&&document.head.appendChild(a)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var s=i.p+i.u(e),a=new Error;i.l(s,r=>{if(i.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,n[1](a)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[s,a,u]=r,l=0;if(s.some(e=>0!==t[e])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(u)var c=u(i)}for(e&&e(r);li(80609));s=i.O(s)})();
-//# sourceMappingURL=comments-comments-tab.js.map?v=fa2e2ba8442b6c151e25
\ No newline at end of file
+(()=>{var t,e,r,n={96689(t,e,r){"use strict";r.d(e,{A:()=>n});const n=(0,r(35947).YK)().setApp("comments").detectUser().build()},35550(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(21777),o=r(82415),i=r(17003);const s=(0,o.UU)((0,i.e)());function a(t){s.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:t??""})}(0,n.zo)(a),a((0,n.do)());const u=s},17003(t,e,r){"use strict";r.d(e,{e:()=>o});var n=r(63814);function o(){return(0,n.dC)("dav/comments")}},80609(t,e,r){"use strict";var n=r(21777),o=r(35810),i=r(53334),s=r(26422),a=r(10810),u=r(85471),l=r(51651),c=r(96689),p=r(35906);let f,h;u.Ay.use(a.R2);var d=r(81222);r.nc=(0,n.aV)();const g="comments_files-sidebar-tab";(0,d.C)("comments","activityEnabled",!1)&&void 0!==window.OCA?.Activity?.registerSidebarAction?window.addEventListener("DOMContentLoaded",function(){window.OCA.Activity.registerSidebarAction({mount:async(t,{node:e,reload:n})=>{const o=(0,a.Ey)();if(!f){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(4906)]).then(r.bind(r,44906));f=u.Ay.extend(t)}h=new f({el:t,pinia:o,propsData:{reloadCallback:n,resourceId:e.fileid}}),c.A.info("Comments plugin mounted in Activity sidebar action",{node:e})},unmount:()=>{h&&h.$destroy()}}),window.OCA.Activity.registerSidebarEntries(async({node:t,limit:e,offset:n})=>{const{data:o}=await(0,p.v)({resourceType:"files",resourceId:t.fileid},{limit:e,offset:n??0});c.A.debug("Loaded comments",{node:t,comments:o});const{default:i}=await Promise.all([r.e(4208),r.e(3556),r.e(7039)]).then(r.bind(r,57039)),s=u.Ay.extend(i);return o.map(e=>({_CommentsViewInstance:void 0,timestamp:(0,l.A)(e.props?.creationDateTime).toDate().getTime(),mount(r,{reload:n}){this._CommentsViewInstance=new s({el:r,propsData:{comment:e,resourceId:t.fileid,reloadCallback:n}})},unmount(){this._CommentsViewInstance?.$destroy()}}))}),window.OCA.Activity.registerSidebarFilter(t=>"comments"!==t.type),c.A.info("Comments plugin registered for Activity sidebar action")}):(0,o.rS)({id:"comments",displayName:(0,i.t)("comments","Comments"),iconSvgInline:'',order:50,tagName:g,async onInit(){const{default:t}=await Promise.all([r.e(4208),r.e(3556),r.e(8124)]).then(r.bind(r,38124));u.Ay.use(a.R2),u.Ay.mixin({pinia:(0,a.Ey)()});const e=(0,s.A)(u.Ay,t);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(g,e)}})},35906(t,e,r){"use strict";r.d(e,{e:()=>a,v:()=>u});var n=r(82415),o=r(5e3),i=r(90176),s=r(35550);const a=20;async function u({resourceType:t,resourceId:e},r){const u=["",t,e].join("/"),l=r.datetime?`${r.datetime.toISOString()}`:"",c=await s.A.customRequest(u,{method:"REPORT",data:`\n\t\t\t\n\t\t\t\t${r.limit??a}\n\t\t\t\t${r.offset||0}\n\t\t\t\t${l}\n\t\t\t`,...r}),p=await c.text(),f=function(t,e=!1){const{multistatus:{response:r}}=t;return r.map(t=>{const r=t.propstat.prop;return(0,i.ch)(r,r.id.toString(),e)})}(await(0,n.h4)(p),!0);return(0,o.hq)(c,f,!0)}},8505(t){"use strict";function e(t,e,o){t instanceof RegExp&&(t=r(t,o)),e instanceof RegExp&&(e=r(e,o));var i=n(t,e,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+t.length,i[1]),post:o.slice(i[1]+e.length)}}function r(t,e){var r=e.match(t);return r?r[0]:null}function n(t,e,r){var n,o,i,s,a,u=r.indexOf(t),l=r.indexOf(e,u+1),c=u;if(u>=0&&l>0){if(t===e)return[u,l];for(n=[],i=r.length;c>=0&&!a;)c==u?(n.push(c),u=r.indexOf(t,c+1)):1==n.length?a=[n.pop(),l]:((o=n.pop())=0?u:l;n.length&&(a=[i,s])}return a}t.exports=e,e.range=n},85914(t,e,r){var n;t=r.nmd(t),function(){var o=(t&&t.exports,"object"==typeof globalThis&&globalThis);o.global!==o&&o.window;var i=function(t){this.message=t};(i.prototype=new Error).name="InvalidCharacterError";var s=function(t){throw new i(t)},a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,l={encode:function(t){t=String(t),/[^\0-\xFF]/.test(t)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var e,r,n,o,i=t.length%3,u="",l=-1,c=t.length-i;++l>18&63)+a.charAt(o>>12&63)+a.charAt(o>>6&63)+a.charAt(63&o);return 2==i?(e=t.charCodeAt(l)<<8,r=t.charCodeAt(++l),u+=a.charAt((o=e+r)>>10)+a.charAt(o>>4&63)+a.charAt(o<<2&63)+"="):1==i&&(o=t.charCodeAt(l),u+=a.charAt(o>>2)+a.charAt(o<<4&63)+"=="),u},decode:function(t){var e=(t=String(t).replace(u,"")).length;e%4==0&&(e=(t=t.replace(/==?$/,"")).length),(e%4==1||/[^+a-zA-Z0-9/]/.test(t))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var r,n,o=0,i="",l=-1;++l>(-2*o&6)));return i},version:"1.0.0"};void 0===(n=function(){return l}.call(e,r,e,t))||(t.exports=n)}()},68928(t,e,r){var n=r(8505);t.exports=function(t){return t?("{}"===t.substr(0,2)&&(t="\\{\\}"+t.substr(2)),y(function(t){return t.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(s).split("\\,").join(a).split("\\.").join(u)}(t),!0).map(c)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",a="\0COMMA"+Math.random()+"\0",u="\0PERIOD"+Math.random()+"\0";function l(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function c(t){return t.split(o).join("\\").split(i).join("{").split(s).join("}").split(a).join(",").split(u).join(".")}function p(t){if(!t)return[""];var e=[],r=n("{","}",t);if(!r)return t.split(",");var o=r.pre,i=r.body,s=r.post,a=o.split(",");a[a.length-1]+="{"+i+"}";var u=p(s);return s.length&&(a[a.length-1]+=u.shift(),a.push.apply(a,u)),e.push.apply(e,a),e}function f(t){return"{"+t+"}"}function h(t){return/^-?0\d/.test(t)}function d(t,e){return t<=e}function g(t,e){return t>=e}function y(t,e){var r=[],o=n("{","}",t);if(!o)return[t];var i=o.pre,a=o.post.length?y(o.post,!1):[""];if(/\$$/.test(o.pre))for(var u=0;u=0;if(!x&&!E)return o.post.match(/,(?!,).*\}/)?y(t=o.pre+"{"+o.body+s+o.post):[t];if(x)m=o.body.split(/\.\./);else if(1===(m=p(o.body)).length&&1===(m=y(m[0],!1).map(f)).length)return a.map(function(t){return o.pre+m[0]+t});if(x){var S=l(m[0]),A=l(m[1]),O=Math.max(m[0].length,m[1].length),_=3==m.length?Math.abs(l(m[2])):1,T=d;A0){var k=new Array(R+1).join("0");P=j<0?"-"+k+P.slice(1):k+P}}b.push(P)}}else{b=[];for(var C=0;C0?r:0),!0)},o?o(t.exports,"apply",{value:s}):t.exports.apply=s},36556(t,e,r){"use strict";var n=r(70453),o=r(73126),i=o([n("%String.prototype.indexOf%")]);t.exports=function(t,e){var r=n(t,!!e);return"function"==typeof r&&i(t,".prototype.")>-1?o([r]):r}},30041(t,e,r){"use strict";var n=r(30655),o=r(58068),i=r(69675),s=r(75795);t.exports=function(t,e,r){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new i("`obj` must be an object or a function`");if("string"!=typeof e&&"symbol"!=typeof e)throw new i("`property` must be a string or a symbol`");if(arguments.length>3&&"boolean"!=typeof arguments[3]&&null!==arguments[3])throw new i("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&"boolean"!=typeof arguments[4]&&null!==arguments[4])throw new i("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&"boolean"!=typeof arguments[5]&&null!==arguments[5])throw new i("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&"boolean"!=typeof arguments[6])throw new i("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,u=arguments.length>4?arguments[4]:null,l=arguments.length>5?arguments[5]:null,c=arguments.length>6&&arguments[6],p=!!s&&s(t,e);if(n)n(t,e,{configurable:null===l&&p?p.configurable:!l,enumerable:null===a&&p?p.enumerable:!a,value:r,writable:null===u&&p?p.writable:!u});else{if(!c&&(a||u||l))throw new o("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.");t[e]=r}}},7176(t,e,r){"use strict";var n,o=r(73126),i=r(75795);try{n=[].__proto__===Array.prototype}catch(t){if(!t||"object"!=typeof t||!("code"in t)||"ERR_PROTO_ACCESS"!==t.code)throw t}var s=!!n&&i&&i(Object.prototype,"__proto__"),a=Object,u=a.getPrototypeOf;t.exports=s&&"function"==typeof s.get?o([s.get]):"function"==typeof u&&function(t){return u(null==t?t:a(t))}},30655(t){"use strict";var e=Object.defineProperty||!1;if(e)try{e({},"a",{value:1})}catch(t){e=!1}t.exports=e},41237(t){"use strict";t.exports=EvalError},69383(t){"use strict";t.exports=Error},79290(t){"use strict";t.exports=RangeError},79538(t){"use strict";t.exports=ReferenceError},58068(t){"use strict";t.exports=SyntaxError},69675(t){"use strict";t.exports=TypeError},35345(t){"use strict";t.exports=URIError},79612(t){"use strict";t.exports=Object},82682(t,e,r){"use strict";var n=r(69600),o=Object.prototype.toString,i=Object.prototype.hasOwnProperty;t.exports=function(t,e,r){if(!n(e))throw new TypeError("iterator must be a function");var s,a;arguments.length>=3&&(s=r),a=t,"[object Array]"===o.call(a)?function(t,e,r){for(var n=0,o=t.length;ne},70453(t,e,r){"use strict";var n,o=r(79612),i=r(69383),s=r(41237),a=r(79290),u=r(79538),l=r(58068),c=r(69675),p=r(35345),f=r(71514),h=r(58968),d=r(6188),g=r(68002),y=r(75880),m=r(70414),b=r(73093),v=Function,w=function(t){try{return v('"use strict"; return ('+t+").constructor;")()}catch(t){}},x=r(75795),E=r(30655),S=function(){throw new c},A=x?function(){try{return S}catch(t){try{return x(arguments,"callee").get}catch(t){return S}}}():S,O=r(64039)(),_=r(93628),T=r(71064),N=r(48648),j=r(11002),P=r(10076),R={},k="undefined"!=typeof Uint8Array&&_?_(Uint8Array):n,C={__proto__:null,"%AggregateError%":"undefined"==typeof AggregateError?n:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?n:ArrayBuffer,"%ArrayIteratorPrototype%":O&&_?_([][Symbol.iterator]()):n,"%AsyncFromSyncIteratorPrototype%":n,"%AsyncFunction%":R,"%AsyncGenerator%":R,"%AsyncGeneratorFunction%":R,"%AsyncIteratorPrototype%":R,"%Atomics%":"undefined"==typeof Atomics?n:Atomics,"%BigInt%":"undefined"==typeof BigInt?n:BigInt,"%BigInt64Array%":"undefined"==typeof BigInt64Array?n:BigInt64Array,"%BigUint64Array%":"undefined"==typeof BigUint64Array?n:BigUint64Array,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?n:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":i,"%eval%":eval,"%EvalError%":s,"%Float16Array%":"undefined"==typeof Float16Array?n:Float16Array,"%Float32Array%":"undefined"==typeof Float32Array?n:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?n:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?n:FinalizationRegistry,"%Function%":v,"%GeneratorFunction%":R,"%Int8Array%":"undefined"==typeof Int8Array?n:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?n:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?n:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":O&&_?_(_([][Symbol.iterator]())):n,"%JSON%":"object"==typeof JSON?JSON:n,"%Map%":"undefined"==typeof Map?n:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&O&&_?_((new Map)[Symbol.iterator]()):n,"%Math%":Math,"%Number%":Number,"%Object%":o,"%Object.getOwnPropertyDescriptor%":x,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?n:Promise,"%Proxy%":"undefined"==typeof Proxy?n:Proxy,"%RangeError%":a,"%ReferenceError%":u,"%Reflect%":"undefined"==typeof Reflect?n:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?n:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&O&&_?_((new Set)[Symbol.iterator]()):n,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?n:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":O&&_?_(""[Symbol.iterator]()):n,"%Symbol%":O?Symbol:n,"%SyntaxError%":l,"%ThrowTypeError%":A,"%TypedArray%":k,"%TypeError%":c,"%Uint8Array%":"undefined"==typeof Uint8Array?n:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?n:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?n:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?n:Uint32Array,"%URIError%":p,"%WeakMap%":"undefined"==typeof WeakMap?n:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?n:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?n:WeakSet,"%Function.prototype.call%":P,"%Function.prototype.apply%":j,"%Object.defineProperty%":E,"%Object.getPrototypeOf%":T,"%Math.abs%":f,"%Math.floor%":h,"%Math.max%":d,"%Math.min%":g,"%Math.pow%":y,"%Math.round%":m,"%Math.sign%":b,"%Reflect.getPrototypeOf%":N};if(_)try{null.error}catch(t){var I=_(_(t));C["%Error.prototype%"]=I}var M=function t(e){var r;if("%AsyncFunction%"===e)r=w("async function () {}");else if("%GeneratorFunction%"===e)r=w("function* () {}");else if("%AsyncGeneratorFunction%"===e)r=w("async function* () {}");else if("%AsyncGenerator%"===e){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if("%AsyncIteratorPrototype%"===e){var o=t("%AsyncGenerator%");o&&_&&(r=_(o.prototype))}return C[e]=r,r},L={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},D=r(66743),$=r(9957),U=D.call(P,Array.prototype.concat),F=D.call(j,Array.prototype.splice),q=D.call(P,String.prototype.replace),W=D.call(P,String.prototype.slice),H=D.call(P,RegExp.prototype.exec),B=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,V=/\\(\\)?/g,G=function(t,e){var r,n=t;if($(L,n)&&(n="%"+(r=L[n])[0]+"%"),$(C,n)){var o=C[n];if(o===R&&(o=M(n)),void 0===o&&!e)throw new c("intrinsic "+t+" exists, but is not available. Please file an issue!");return{alias:r,name:n,value:o}}throw new l("intrinsic "+t+" does not exist!")};t.exports=function(t,e){if("string"!=typeof t||0===t.length)throw new c("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof e)throw new c('"allowMissing" argument must be a boolean');if(null===H(/^%?[^%]*%?$/,t))throw new l("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=function(t){var e=W(t,0,1),r=W(t,-1);if("%"===e&&"%"!==r)throw new l("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==e)throw new l("invalid intrinsic syntax, expected opening `%`");var n=[];return q(t,B,function(t,e,r,o){n[n.length]=r?q(o,V,"$1"):e||t}),n}(t),n=r.length>0?r[0]:"",o=G("%"+n+"%",e),i=o.name,s=o.value,a=!1,u=o.alias;u&&(n=u[0],F(r,U([0,1],u)));for(var p=1,f=!0;p=r.length){var y=x(s,h);s=(f=!!y)&&"get"in y&&!("originalValue"in y.get)?y.get:s[h]}else f=$(s,h),s=s[h];f&&!a&&(C[i]=s)}}return s}},71064(t,e,r){"use strict";var n=r(79612);t.exports=n.getPrototypeOf||null},48648(t){"use strict";t.exports="undefined"!=typeof Reflect&&Reflect.getPrototypeOf||null},93628(t,e,r){"use strict";var n=r(48648),o=r(71064),i=r(7176);t.exports=n?function(t){return n(t)}:o?function(t){if(!t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("getProto: not an object");return o(t)}:i?function(t){return i(t)}:null},6549(t){"use strict";t.exports=Object.getOwnPropertyDescriptor},75795(t,e,r){"use strict";var n=r(6549);if(n)try{n([],"length")}catch(t){n=null}t.exports=n},30592(t,e,r){"use strict";var n=r(30655),o=function(){return!!n};o.hasArrayLengthDefineBug=function(){if(!n)return null;try{return 1!==n([],"length",{value:1}).length}catch(t){return!0}},t.exports=o},64039(t,e,r){"use strict";var n="undefined"!=typeof Symbol&&Symbol,o=r(41333);t.exports=function(){return"function"==typeof n&&"function"==typeof Symbol&&"symbol"==typeof n("foo")&&"symbol"==typeof Symbol("bar")&&o()}},41333(t){"use strict";t.exports=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var t={},e=Symbol("test"),r=Object(e);if("string"==typeof e)return!1;if("[object Symbol]"!==Object.prototype.toString.call(e))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(var n in t[e]=42,t)return!1;if("function"==typeof Object.keys&&0!==Object.keys(t).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(t).length)return!1;var o=Object.getOwnPropertySymbols(t);if(1!==o.length||o[0]!==e)return!1;if(!Object.prototype.propertyIsEnumerable.call(t,e))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var i=Object.getOwnPropertyDescriptor(t,e);if(42!==i.value||!0!==i.enumerable)return!1}return!0}},49092(t,e,r){"use strict";var n=r(41333);t.exports=function(){return n()&&!!Symbol.toStringTag}},9957(t,e,r){"use strict";var n=Function.prototype.call,o=Object.prototype.hasOwnProperty,i=r(66743);t.exports=i.call(n,o)},11083(t,e,r){var n=r(11568),o=r(88835),i=t.exports;for(var s in n)n.hasOwnProperty(s)&&(i[s]=n[s]);function a(t){if("string"==typeof t&&(t=o.parse(t)),t.protocol||(t.protocol="https:"),"https:"!==t.protocol)throw new Error('Protocol "'+t.protocol+'" not supported. Expected "https:"');return t}i.request=function(t,e){return t=a(t),n.request.call(this,t,e)},i.get=function(t,e){return t=a(t),n.get.call(this,t,e)}},47244(t,e,r){"use strict";var n=r(49092)(),o=r(36556)("Object.prototype.toString"),i=function(t){return!(n&&t&&"object"==typeof t&&Symbol.toStringTag in t)&&"[object Arguments]"===o(t)},s=function(t){return!!i(t)||null!==t&&"object"==typeof t&&"length"in t&&"number"==typeof t.length&&t.length>=0&&"[object Array]"!==o(t)&&"callee"in t&&"[object Function]"===o(t.callee)},a=function(){return i(arguments)}();i.isLegacyArguments=s,t.exports=a?i:s},69600(t){"use strict";var e,r,n=Function.prototype.toString,o="object"==typeof Reflect&&null!==Reflect&&Reflect.apply;if("function"==typeof o&&"function"==typeof Object.defineProperty)try{e=Object.defineProperty({},"length",{get:function(){throw r}}),r={},o(function(){throw 42},null,e)}catch(t){t!==r&&(o=null)}else o=null;var i=/^\s*class\b/,s=function(t){try{var e=n.call(t);return i.test(e)}catch(t){return!1}},a=function(t){try{return!s(t)&&(n.call(t),!0)}catch(t){return!1}},u=Object.prototype.toString,l="function"==typeof Symbol&&!!Symbol.toStringTag,c=!(0 in[,]),p=function(){return!1};if("object"==typeof document){var f=document.all;u.call(f)===u.call(document.all)&&(p=function(t){if((c||!t)&&(void 0===t||"object"==typeof t))try{var e=u.call(t);return("[object HTMLAllCollection]"===e||"[object HTML document.all class]"===e||"[object HTMLCollection]"===e||"[object Object]"===e)&&null==t("")}catch(t){}return!1})}t.exports=o?function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;try{o(t,null,e)}catch(t){if(t!==r)return!1}return!s(t)&&a(t)}:function(t){if(p(t))return!0;if(!t)return!1;if("function"!=typeof t&&"object"!=typeof t)return!1;if(l)return a(t);if(s(t))return!1;var e=u.call(t);return!("[object Function]"!==e&&"[object GeneratorFunction]"!==e&&!/^\[object HTML/.test(e))&&a(t)}},48184(t,e,r){"use strict";var n=r(36556),o=r(99721)(/^\s*(?:function)?\*/),i=r(49092)(),s=r(93628),a=n("Object.prototype.toString"),u=n("Function.prototype.toString"),l=r(4233);t.exports=function(t){if("function"!=typeof t)return!1;if(o(u(t)))return!0;if(!i)return"[object GeneratorFunction]"===a(t);if(!s)return!1;var e=l();return e&&s(t)===e.prototype}},14035(t,e,r){"use strict";var n,o=r(36556),i=r(49092)(),s=r(9957),a=r(75795);if(i){var u=o("RegExp.prototype.exec"),l={},c=function(){throw l},p={toString:c,valueOf:c};"symbol"==typeof Symbol.toPrimitive&&(p[Symbol.toPrimitive]=c),n=function(t){if(!t||"object"!=typeof t)return!1;var e=a(t,"lastIndex");if(!e||!s(e,"value"))return!1;try{u(t,p)}catch(t){return t===l}}}else{var f=o("Object.prototype.toString");n=function(t){return!(!t||"object"!=typeof t&&"function"!=typeof t)&&"[object RegExp]"===f(t)}}t.exports=n},35680(t,e,r){"use strict";var n=r(25767);t.exports=function(t){return!!n(t)}},71514(t){"use strict";t.exports=Math.abs},58968(t){"use strict";t.exports=Math.floor},94459(t){"use strict";t.exports=Number.isNaN||function(t){return t!=t}},6188(t){"use strict";t.exports=Math.max},68002(t){"use strict";t.exports=Math.min},75880(t){"use strict";t.exports=Math.pow},70414(t){"use strict";t.exports=Math.round},73093(t,e,r){"use strict";var n=r(94459);t.exports=function(t){return n(t)||0===t?t:t<0?-1:1}},26602(t){"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},e(t)}function r(t){var e="function"==typeof Map?new Map:void 0;return r=function(t){if(null===t||(r=t,-1===Function.toString.call(r).indexOf("[native code]")))return t;var r;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,s)}function s(){return n(t,arguments,i(this).constructor)}return s.prototype=Object.create(t.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),o(s,t)},r(t)}function n(t,e,r){return n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(t){return!1}}()?Reflect.construct:function(t,e,r){var n=[null];n.push.apply(n,e);var i=new(Function.bind.apply(t,n));return r&&o(i,r.prototype),i},n.apply(null,arguments)}function o(t,e){return o=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t},o(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}var s=function(t){function r(t){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(n=function(t,r){return!r||"object"!==e(r)&&"function"!=typeof r?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):r}(this,i(r).call(this,t))).name="ObjectPrototypeMutationError",n}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&o(t,e)}(r,t),r}(r(Error));function a(t,r){for(var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=r.split("."),i=o.length,s=function(e){var r=o[e];if(!t)return{v:void 0};if("+"===r){if(Array.isArray(t))return{v:t.map(function(r,i){var s=o.slice(e+1);return s.length>0?a(r,s.join("."),n):n(t,i,o,e)})};var i=o.slice(0,e).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}t=n(t,r,o,e)},u=0;u2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;if("number"==typeof r)return r in t;try{var o=!1;return a(t,r,function(t,e,r,i){if(!u(r,i))return t&&t[e];o=n.own?t.hasOwnProperty(e):e in t}),o}catch(t){return!1}},hasOwn:function(t,e,r){return this.has(t,e,r||{own:!0})},isIn:function(t,r,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=e(t)||null===t)return!1;if(void 0===r)return!1;try{var i=!1,s=!1;return a(t,r,function(t,r,o,a){return i=i||t===n||!!t&&t[r]===n,s=u(o,a)&&"object"===e(t)&&r in t,t&&t[r]}),o.validPath?i&&s:i}catch(t){return!1}},ObjectPrototypeMutationError:s}},58859(t,e,r){var n="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&n?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,i=n&&o&&"function"==typeof o.get?o.get:null,s=n&&Map.prototype.forEach,a="function"==typeof Set&&Set.prototype,u=Object.getOwnPropertyDescriptor&&a?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,l=a&&u&&"function"==typeof u.get?u.get:null,c=a&&Set.prototype.forEach,p="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,f="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,h="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,d=Boolean.prototype.valueOf,g=Object.prototype.toString,y=Function.prototype.toString,m=String.prototype.match,b=String.prototype.slice,v=String.prototype.replace,w=String.prototype.toUpperCase,x=String.prototype.toLowerCase,E=RegExp.prototype.test,S=Array.prototype.concat,A=Array.prototype.join,O=Array.prototype.slice,_=Math.floor,T="function"==typeof BigInt?BigInt.prototype.valueOf:null,N=Object.getOwnPropertySymbols,j="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,P="function"==typeof Symbol&&"object"==typeof Symbol.iterator,R="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,k=Object.prototype.propertyIsEnumerable,C=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function I(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||E.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var n=t<0?-_(-t):_(t);if(n!==t){var o=String(n),i=b.call(e,o.length+1);return v.call(o,r,"$&_")+"."+v.call(v.call(i,/([0-9]{3})/g,"$&_"),/_$/,"")}}return v.call(e,r,"$&_")}var M=r(42634),L=M.custom,D=V(L)?L:null,$={__proto__:null,double:'"',single:"'"},U={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};function F(t,e,r){var n=r.quoteStyle||e,o=$[n];return o+t+o}function q(t){return v.call(String(t),/"/g,""")}function W(t){return!R||!("object"==typeof t&&(R in t||void 0!==t[R]))}function H(t){return"[object Array]"===K(t)&&W(t)}function B(t){return"[object RegExp]"===K(t)&&W(t)}function V(t){if(P)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!j)return!1;try{return j.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,n,o){var a=r||{};if(z(a,"quoteStyle")&&!z($,a.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(a,"maxStringLength")&&("number"==typeof a.maxStringLength?a.maxStringLength<0&&a.maxStringLength!==1/0:null!==a.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var u=!z(a,"customInspect")||a.customInspect;if("boolean"!=typeof u&&"symbol"!==u)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(a,"indent")&&null!==a.indent&&"\t"!==a.indent&&!(parseInt(a.indent,10)===a.indent&&a.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(a,"numericSeparator")&&"boolean"!=typeof a.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var g=a.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return Y(e,a);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return g?I(e,w):w}if("bigint"==typeof e){var E=String(e)+"n";return g?I(e,E):E}var _=void 0===a.depth?5:a.depth;if(void 0===n&&(n=0),n>=_&&_>0&&"object"==typeof e)return H(e)?"[Array]":"[Object]";var N,L=function(t,e){var r;if("\t"===t.indent)r="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;r=A.call(Array(t.indent+1)," ")}return{base:r,prev:A.call(Array(e+1),r)}}(a,n);if(void 0===o)o=[];else if(X(o,e)>=0)return"[Circular]";function U(e,r,i){if(r&&(o=O.call(o)).push(r),i){var s={depth:a.depth};return z(a,"quoteStyle")&&(s.quoteStyle=a.quoteStyle),t(e,s,n+1,o)}return t(e,a,n+1,o)}if("function"==typeof e&&!B(e)){var G=function(t){if(t.name)return t.name;var e=m.call(y.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),J=rt(e,U);return"[Function"+(G?": "+G:" (anonymous)")+"]"+(J.length>0?" { "+A.call(J,", ")+" }":"")}if(V(e)){var nt=P?v.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):j.call(e);return"object"!=typeof e||P?nt:Z(nt)}if((N=e)&&"object"==typeof N&&("undefined"!=typeof HTMLElement&&N instanceof HTMLElement||"string"==typeof N.nodeName&&"function"==typeof N.getAttribute)){for(var ot="<"+x.call(String(e.nodeName)),it=e.attributes||[],st=0;st"}if(H(e)){if(0===e.length)return"[]";var at=rt(e,U);return L&&!function(t){for(var e=0;e=0)return!1;return!0}(at)?"["+et(at,L)+"]":"[ "+A.call(at,", ")+" ]"}if(function(t){return"[object Error]"===K(t)&&W(t)}(e)){var ut=rt(e,U);return"cause"in Error.prototype||!("cause"in e)||k.call(e,"cause")?0===ut.length?"["+String(e)+"]":"{ ["+String(e)+"] "+A.call(ut,", ")+" }":"{ ["+String(e)+"] "+A.call(S.call("[cause]: "+U(e.cause),ut),", ")+" }"}if("object"==typeof e&&u){if(D&&"function"==typeof e[D]&&M)return M(e,{depth:_-n});if("symbol"!==u&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!i||!t||"object"!=typeof t)return!1;try{i.call(t);try{l.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var lt=[];return s&&s.call(e,function(t,r){lt.push(U(r,e,!0)+" => "+U(t,e))}),tt("Map",i.call(e),lt,L)}if(function(t){if(!l||!t||"object"!=typeof t)return!1;try{l.call(t);try{i.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return c&&c.call(e,function(t){ct.push(U(t,e))}),tt("Set",l.call(e),ct,L)}if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{f.call(t,f)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return Q("WeakMap");if(function(t){if(!f||!t||"object"!=typeof t)return!1;try{f.call(t,f);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return Q("WeakSet");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{return h.call(t),!0}catch(t){}return!1}(e))return Q("WeakRef");if(function(t){return"[object Number]"===K(t)&&W(t)}(e))return Z(U(Number(e)));if(function(t){if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}(e))return Z(U(T.call(e)));if(function(t){return"[object Boolean]"===K(t)&&W(t)}(e))return Z(d.call(e));if(function(t){return"[object String]"===K(t)&&W(t)}(e))return Z(U(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if("undefined"!=typeof globalThis&&e===globalThis||"undefined"!=typeof globalThis&&e===globalThis)return"{ [object globalThis] }";if(!function(t){return"[object Date]"===K(t)&&W(t)}(e)&&!B(e)){var pt=rt(e,U),ft=C?C(e)===Object.prototype:e instanceof Object||e.constructor===Object,ht=e instanceof Object?"":"null prototype",dt=!ft&&R&&Object(e)===e&&R in e?b.call(K(e),8,-1):ht?"Object":"",gt=(ft||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(dt||ht?"["+A.call(S.call([],dt||[],ht||[]),": ")+"] ":"");return 0===pt.length?gt+"{}":L?gt+"{"+et(pt,L)+"}":gt+"{ "+A.call(pt,", ")+" }"}return String(e)};var G=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return G.call(t,e)}function K(t){return g.call(t)}function X(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;re.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return Y(b.call(t,0,e.maxStringLength),e)+n}var o=U[e.quoteStyle||"single"];return o.lastIndex=0,F(v.call(v.call(t,o,"\\$1"),/[\x00-\x1f]/g,J),"single",e)}function J(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+w.call(e.toString(16))}function Z(t){return"Object("+t+")"}function Q(t){return t+" { ? }"}function tt(t,e,r,n){return t+" ("+e+") {"+(n?et(r,n):A.call(r,", "))+"}"}function et(t,e){if(0===t.length)return"";var r="\n"+e.prev+e.base;return r+A.call(t,","+r)+"\n"+e.prev}function rt(t,e){var r=H(t),n=[];if(r){n.length=t.length;for(var o=0;o=-1&&!e;r--){var o=r>=0?arguments[r]:n.cwd();if(!i(o))throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,e="/"===o.charAt(0))}return(e?"/":"")+(t=s(t.split("/"),!e).join("/"))||"."},u.normalize=function(t){var e=u.isAbsolute(t),r="/"===t.substr(-1);return(t=s(t.split("/"),!e).join("/"))||e||(t="."),t&&r&&(t+="/"),(e?"/":"")+t},u.isAbsolute=function(t){return"/"===t.charAt(0)},u.join=function(){for(var t="",e=0;e=0&&""===t[r];r--);return e>r?[]:t.slice(e,r+1)}t=u.resolve(t).substr(1),e=u.resolve(e).substr(1);for(var n=r(t.split("/")),o=r(e.split("/")),i=Math.min(n.length,o.length),s=i,a=0;a= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,h=String.fromCharCode;function d(t){throw new RangeError(p[t])}function g(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function y(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+g((t=t.replace(c,".")).split("."),e).join(".")}function m(t){for(var e,r,n=[],o=0,i=t.length;o=55296&&e<=56319&&o65535&&(e+=h((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+h(t)}).join("")}function v(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function x(t,e,r){var n=0;for(t=r?f(t/700):t>>1,t+=f(t/e);t>455;n+=a)t=f(t/35);return f(n+36*t/(t+38))}function E(t){var e,r,n,o,i,u,l,c,p,h,g=[],y=t.length,m=0,w=128,E=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&d("not-basic"),g.push(t.charCodeAt(n));for(o=r>0?r+1:0;o=y&&d("invalid-input"),((c=v(t.charCodeAt(o++)))>=a||c>f((s-m)/u))&&d("overflow"),m+=c*u,!(c<(p=l<=E?1:l>=E+26?26:l-E));l+=a)u>f(s/(h=a-p))&&d("overflow"),u*=h;E=x(m-i,e=g.length+1,0==i),f(m/e)>s-w&&d("overflow"),w+=f(m/e),m%=e,g.splice(m++,0,w)}return b(g)}function S(t){var e,r,n,o,i,u,l,c,p,g,y,b,v,E,S,A=[];for(b=(t=m(t)).length,e=128,r=0,i=72,u=0;u=e&&yf((s-r)/(v=n+1))&&d("overflow"),r+=(l-e)*v,e=l,u=0;us&&d("overflow"),y==e){for(c=r,p=a;!(c<(g=p<=i?1:p>=i+26?26:p-i));p+=a)S=c-g,E=a-g,A.push(h(w(g+S%E,0))),c=f(S/E);A.push(h(w(c,0))),i=x(r,v,n==o),r=0,++n}++r,++e}return A.join("")}i={version:"1.4.1",ucs2:{decode:m,encode:b},decode:E,encode:S,toASCII:function(t){return y(t,function(t){return l.test(t)?"xn--"+S(t):t})},toUnicode:function(t){return y(t,function(t){return u.test(t)?E(t.slice(4).toLowerCase()):t})}},void 0===(n=function(){return i}.call(e,r,e,t))||(t.exports=n)}()},74765(t){"use strict";var e=String.prototype.replace,r=/%20/g,n="RFC3986";t.exports={default:n,formatters:{RFC1738:function(t){return e.call(t,r,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:n}},55373(t,e,r){"use strict";var n=r(98636),o=r(62642),i=r(74765);t.exports={formats:i,parse:o,stringify:n}},62642(t,e,r){"use strict";var n=r(37720),o=Object.prototype.hasOwnProperty,i=Array.isArray,s={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:n.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictNullHandling:!1,throwOnLimitExceeded:!1},a=function(t){return t.replace(/&#(\d+);/g,function(t,e){return String.fromCharCode(parseInt(e,10))})},u=function(t,e,r){if(t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1)return t.split(",");if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");return t},l=function(t,e,r,i){if(t){var s=function(t,e){var r=e.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t;if(e.depth<=0){if(!e.plainObjects&&o.call(Object.prototype,r)&&!e.allowPrototypes)return;return[r]}var n=/(\[[^[\]]*])/g,i=/(\[[^[\]]*])/.exec(r),s=i?r.slice(0,i.index):r,a=[];if(s){if(!e.plainObjects&&o.call(Object.prototype,s)&&!e.allowPrototypes)return;a[a.length]=s}for(var u=0;null!==(i=n.exec(r))&&u0&&"[]"===t[t.length-1]){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var a=o?e:u(e,r,i),l=t.length-1;l>=0;--l){var c,p=t[l];if("[]"===p&&r.parseArrays)c=n.isOverflow(a)?a:r.allowEmptyArrays&&(""===a||r.strictNullHandling&&null===a)?[]:n.combine([],a,r.arrayLimit,r.plainObjects);else{c=r.plainObjects?{__proto__:null}:{};var f="["===p.charAt(0)&&"]"===p.charAt(p.length-1)?p.slice(1,-1):p,h=r.decodeDotInKeys?f.replace(/%2E/g,"."):f,d=parseInt(h,10),g=!isNaN(d)&&p!==h&&String(d)===h&&d>=0&&r.parseArrays;if(r.parseArrays||""!==h)if(g&&dc)throw new RangeError("Parameter limit exceeded. Only "+c+" parameter"+(1===c?"":"s")+" allowed.");var f,h=-1,d=e.charset;if(e.charsetSentinel)for(f=0;f-1&&(y=i(y)?[y]:y),e.comma&&i(y)&&y.length>e.arrayLimit){if(e.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(1===e.arrayLimit?"":"s")+" allowed in an array.");y=n.combine([],y,e.arrayLimit,e.plainObjects)}if(null!==g){var w=o.call(r,g);w&&"combine"===e.duplicates?r[g]=n.combine(r[g],y,e.arrayLimit,e.plainObjects):w&&"last"!==e.duplicates||(r[g]=y)}}return r}(t,r):t,p=r.plainObjects?{__proto__:null}:{},f=Object.keys(c),h=0;h0?_.join(",")||null:void 0}];else if(u(y))R=y;else{var C=Object.keys(_);R=m?C.sort(m):C}var I=f?String(r).replace(/\./g,"%2E"):String(r),M=s&&u(_)&&1===_.length?I+"[]":I;if(a&&u(_)&&0===_.length)return M+"[]";for(var L=0;L0?x+w:""}},37720(t,e,r){"use strict";var n=r(74765),o=r(920),i=Object.prototype.hasOwnProperty,s=Array.isArray,a=o(),u=function(t,e){return a.set(t,e),t},l=function(t){return a.has(t)},c=function(t){return a.get(t)},p=function(t,e){a.set(t,e)},f=function(){for(var t=[],e=0;e<256;++e)t[t.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return t}(),h=function(t,e){for(var r=e&&e.plainObjects?{__proto__:null}:{},n=0;nr?u(h(i,{plainObjects:n}),i.length-1):i},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],r=[],n=0;n1;){var e=t.pop(),r=e.obj[e.prop];if(s(r)){for(var n=[],o=0;o=d?s.slice(u,u+d):s,c=[],p=0;p=48&&h<=57||h>=65&&h<=90||h>=97&&h<=122||i===n.RFC1738&&(40===h||41===h)?c[c.length]=l.charAt(p):h<128?c[c.length]=f[h]:h<2048?c[c.length]=f[192|h>>6]+f[128|63&h]:h<55296||h>=57344?c[c.length]=f[224|h>>12]+f[128|h>>6&63]+f[128|63&h]:(p+=1,h=65536+((1023&h)<<10|1023&l.charCodeAt(p)),c[c.length]=f[240|h>>18]+f[128|h>>12&63]+f[128|h>>6&63]+f[128|63&h])}a+=c.join("")}return a},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isOverflow:l,isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},markOverflow:u,maybeMap:function(t,e){if(s(t)){for(var r=[],n=0;nn.arrayLimit)return u(h(e.concat(r),n),o);e[o]=r}else{if(!e||"object"!=typeof e)return[e,r];if(l(e)){var a=c(e)+1;e[a]=r,p(e,a)}else(n&&(n.plainObjects||n.allowPrototypes)||!i.call(Object.prototype,r))&&(e[r]=!0)}return e}if(!e||"object"!=typeof e){if(l(r)){for(var f=Object.keys(r),d=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},g=0;gn.arrayLimit?u(h(y,n),y.length-1):y}var m=e;return s(e)&&!s(r)&&(m=h(e,n)),s(e)&&s(r)?(r.forEach(function(r,o){if(i.call(e,o)){var s=e[o];s&&"object"==typeof s&&r&&"object"==typeof r?e[o]=t(s,r,n):e[e.length]=r}else e[o]=r}),e):Object.keys(r).reduce(function(e,o){var s=r[o];if(i.call(e,o)?e[o]=t(e[o],s,n):e[o]=s,l(r)&&!l(e)&&u(e,c(r)),l(e)){var a=parseInt(o,10);String(a)===o&&a>=0&&a>c(e)&&p(e,a)}return e},m)}}},73992(t,e){"use strict";var r=Object.prototype.hasOwnProperty;function n(t){try{return decodeURIComponent(t.replace(/\+/g," "))}catch(t){return null}}function o(t){try{return encodeURIComponent(t)}catch(t){return null}}e.stringify=function(t,e){e=e||"";var n,i,s=[];for(i in"string"!=typeof e&&(e="?"),t)if(r.call(t,i)){if((n=t[i])||null!=n&&!isNaN(n)||(n=""),i=o(i),n=o(n),null===i||null===n)continue;s.push(i+"="+n)}return s.length?e+s.join("&"):""},e.parse=function(t){for(var e,r=/([^=?#&]+)=?([^&]*)/g,o={};e=r.exec(t);){var i=n(e[1]),s=n(e[2]);null===i||null===s||i in o||(o[i]=s)}return o}},92063(t){"use strict";t.exports=function(t,e){if(e=e.split(":")[0],!(t=+t))return!1;switch(e){case"http":case"ws":return 80!==t;case"https":case"wss":return 443!==t;case"ftp":return 21!==t;case"gopher":return 70!==t;case"file":return!1}return 0!==t}},99721(t,e,r){"use strict";var n=r(36556),o=r(14035),i=n("RegExp.prototype.exec"),s=r(69675);t.exports=function(t){if(!o(t))throw new s("`regex` must be a RegExp");return function(e){return null!==i(t,e)}}},96897(t,e,r){"use strict";var n=r(70453),o=r(30041),i=r(30592)(),s=r(75795),a=r(69675),u=n("%Math.floor%");t.exports=function(t,e){if("function"!=typeof t)throw new a("`fn` is not a function");if("number"!=typeof e||e<0||e>4294967295||u(e)!==e)throw new a("`length` must be a positive 32-bit integer");var r=arguments.length>2&&!!arguments[2],n=!0,l=!0;if("length"in t&&s){var c=s(t,"length");c&&!c.configurable&&(n=!1),c&&!c.writable&&(l=!1)}return(n||l||!r)&&(i?o(t,"length",e,!0,!0):o(t,"length",e)),t}},14803(t,e,r){"use strict";var n=r(58859),o=r(69675),i=function(t,e,r){for(var n,o=t;null!=(n=o.next);o=n)if(n.key===e)return o.next=n.next,r||(n.next=t.next,t.next=n),n};t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new o("Side channel does not contain "+n(t))},delete:function(e){var r=t&&t.next,n=function(t,e){if(t)return i(t,e,!0)}(t,e);return n&&r&&r===n&&(t=void 0),!!n},get:function(e){return function(t,e){if(t){var r=i(t,e);return r&&r.value}}(t,e)},has:function(e){return function(t,e){return!!t&&!!i(t,e)}(t,e)},set:function(e,r){t||(t={next:void 0}),function(t,e,r){var n=i(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}}(t,e,r)}};return e}},80507(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(69675),a=n("%Map%",!0),u=o("Map.prototype.get",!0),l=o("Map.prototype.set",!0),c=o("Map.prototype.has",!0),p=o("Map.prototype.delete",!0),f=o("Map.prototype.size",!0);t.exports=!!a&&function(){var t,e={assert:function(t){if(!e.has(t))throw new s("Side channel does not contain "+i(t))},delete:function(e){if(t){var r=p(t,e);return 0===f(t)&&(t=void 0),r}return!1},get:function(e){if(t)return u(t,e)},has:function(e){return!!t&&c(t,e)},set:function(e,r){t||(t=new a),l(t,e,r)}};return e}},72271(t,e,r){"use strict";var n=r(70453),o=r(36556),i=r(58859),s=r(80507),a=r(69675),u=n("%WeakMap%",!0),l=o("WeakMap.prototype.get",!0),c=o("WeakMap.prototype.set",!0),p=o("WeakMap.prototype.has",!0),f=o("WeakMap.prototype.delete",!0);t.exports=u?function(){var t,e,r={assert:function(t){if(!r.has(t))throw new a("Side channel does not contain "+i(t))},delete:function(r){if(u&&r&&("object"==typeof r||"function"==typeof r)){if(t)return f(t,r)}else if(s&&e)return e.delete(r);return!1},get:function(r){return u&&r&&("object"==typeof r||"function"==typeof r)&&t?l(t,r):e&&e.get(r)},has:function(r){return u&&r&&("object"==typeof r||"function"==typeof r)&&t?p(t,r):!!e&&e.has(r)},set:function(r,n){u&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new u),c(t,r,n)):s&&(e||(e=s()),e.set(r,n))}};return r}:s},920(t,e,r){"use strict";var n=r(69675),o=r(58859),i=r(14803),s=r(80507),a=r(72271)||s||i;t.exports=function(){var t,e={assert:function(t){if(!e.has(t))throw new n("Side channel does not contain "+o(t))},delete:function(e){return!!t&&t.delete(e)},get:function(e){return t&&t.get(e)},has:function(e){return!!t&&t.has(e)},set:function(e,r){t||(t=a()),t.set(e,r)}};return e}},11568(t,e,r){var n=r(55537),o=r(6917),i=r(57510),s=r(86866),a=r(88835),u=e;u.request=function(t,e){t="string"==typeof t?a.parse(t):i(t);var r=-1===globalThis.location.protocol.search(/^https?:$/)?"http:":"",o=t.protocol||r,s=t.hostname||t.host,u=t.port,l=t.path||"/";s&&-1!==s.indexOf(":")&&(s="["+s+"]"),t.url=(s?o+"//"+s:"")+(u?":"+u:"")+l,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var c=new n(t);return e&&c.on("response",e),c},u.get=function(t,e){var r=u.request(t,e);return r.end(),r},u.ClientRequest=n,u.IncomingMessage=o.IncomingMessage,u.Agent=function(){},u.Agent.defaultMaxSockets=4,u.globalAgent=new u.Agent,u.STATUS_CODES=s,u.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]},6688(t,e){var r;function n(){if(void 0!==r)return r;if(globalThis.XMLHttpRequest){r=new globalThis.XMLHttpRequest;try{r.open("GET",globalThis.XDomainRequest?"/":"https://example.com")}catch(t){r=null}}else r=null;return r}function o(t){var e=n();if(!e)return!1;try{return e.responseType=t,e.responseType===t}catch(t){}return!1}function i(t){return"function"==typeof t}e.fetch=i(globalThis.fetch)&&i(globalThis.ReadableStream),e.writableStream=i(globalThis.WritableStream),e.abortController=i(globalThis.AbortController),e.arraybuffer=e.fetch||o("arraybuffer"),e.msstream=!e.fetch&&o("ms-stream"),e.mozchunkedarraybuffer=!e.fetch&&o("moz-chunked-arraybuffer"),e.overrideMimeType=e.fetch||!!n()&&i(n().overrideMimeType),r=null},55537(t,e,r){var n=r(62045).hp,o=r(65606),i=r(6688),s=r(56698),a=r(6917),u=r(63242),l=a.IncomingMessage,c=a.readyStates,p=t.exports=function(t){var e,r=this;u.Writable.call(r),r._opts=t,r._body=[],r._headers={},t.auth&&r.setHeader("Authorization","Basic "+n.from(t.auth).toString("base64")),Object.keys(t.headers).forEach(function(e){r.setHeader(e,t.headers[e])});var o=!0;if("disable-fetch"===t.mode||"requestTimeout"in t&&!i.abortController)o=!1,e=!0;else if("prefer-streaming"===t.mode)e=!1;else if("allow-wrong-content-type"===t.mode)e=!i.overrideMimeType;else{if(t.mode&&"default"!==t.mode&&"prefer-fast"!==t.mode)throw new Error("Invalid value for opts.mode");e=!0}r._mode=function(t,e){return i.fetch&&e?"fetch":i.mozchunkedarraybuffer?"moz-chunked-arraybuffer":i.msstream?"ms-stream":i.arraybuffer&&t?"arraybuffer":"text"}(e,o),r._fetchTimer=null,r._socketTimeout=null,r._socketTimer=null,r.on("finish",function(){r._onFinish()})};s(p,u.Writable),p.prototype.setHeader=function(t,e){var r=t.toLowerCase();-1===f.indexOf(r)&&(this._headers[r]={name:t,value:e})},p.prototype.getHeader=function(t){var e=this._headers[t.toLowerCase()];return e?e.value:null},p.prototype.removeHeader=function(t){delete this._headers[t.toLowerCase()]},p.prototype._onFinish=function(){var t=this;if(!t._destroyed){var e=t._opts;"timeout"in e&&0!==e.timeout&&t.setTimeout(e.timeout);var r=t._headers,n=null;"GET"!==e.method&&"HEAD"!==e.method&&(n=new Blob(t._body,{type:(r["content-type"]||{}).value||""}));var s=[];if(Object.keys(r).forEach(function(t){var e=r[t].name,n=r[t].value;Array.isArray(n)?n.forEach(function(t){s.push([e,t])}):s.push([e,n])}),"fetch"===t._mode){var a=null;if(i.abortController){var u=new AbortController;a=u.signal,t._fetchAbortController=u,"requestTimeout"in e&&0!==e.requestTimeout&&(t._fetchTimer=globalThis.setTimeout(function(){t.emit("requestTimeout"),t._fetchAbortController&&t._fetchAbortController.abort()},e.requestTimeout))}globalThis.fetch(t._opts.url,{method:t._opts.method,headers:s,body:n||void 0,mode:"cors",credentials:e.withCredentials?"include":"same-origin",signal:a}).then(function(e){t._fetchResponse=e,t._resetTimers(!1),t._connect()},function(e){t._resetTimers(!0),t._destroyed||t.emit("error",e)})}else{var l=t._xhr=new globalThis.XMLHttpRequest;try{l.open(t._opts.method,t._opts.url,!0)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}"responseType"in l&&(l.responseType=t._mode),"withCredentials"in l&&(l.withCredentials=!!e.withCredentials),"text"===t._mode&&"overrideMimeType"in l&&l.overrideMimeType("text/plain; charset=x-user-defined"),"requestTimeout"in e&&(l.timeout=e.requestTimeout,l.ontimeout=function(){t.emit("requestTimeout")}),s.forEach(function(t){l.setRequestHeader(t[0],t[1])}),t._response=null,l.onreadystatechange=function(){switch(l.readyState){case c.LOADING:case c.DONE:t._onXHRProgress()}},"moz-chunked-arraybuffer"===t._mode&&(l.onprogress=function(){t._onXHRProgress()}),l.onerror=function(){t._destroyed||(t._resetTimers(!0),t.emit("error",new Error("XHR error")))};try{l.send(n)}catch(e){return void o.nextTick(function(){t.emit("error",e)})}}}},p.prototype._onXHRProgress=function(){var t=this;t._resetTimers(!1),function(t){try{var e=t.status;return null!==e&&0!==e}catch(t){return!1}}(t._xhr)&&!t._destroyed&&(t._response||t._connect(),t._response._onXHRProgress(t._resetTimers.bind(t)))},p.prototype._connect=function(){var t=this;t._destroyed||(t._response=new l(t._xhr,t._fetchResponse,t._mode,t._resetTimers.bind(t)),t._response.on("error",function(e){t.emit("error",e)}),t.emit("response",t._response))},p.prototype._write=function(t,e,r){this._body.push(t),r()},p.prototype._resetTimers=function(t){var e=this;globalThis.clearTimeout(e._socketTimer),e._socketTimer=null,t?(globalThis.clearTimeout(e._fetchTimer),e._fetchTimer=null):e._socketTimeout&&(e._socketTimer=globalThis.setTimeout(function(){e.emit("timeout")},e._socketTimeout))},p.prototype.abort=p.prototype.destroy=function(t){var e=this;e._destroyed=!0,e._resetTimers(!0),e._response&&(e._response._destroyed=!0),e._xhr?e._xhr.abort():e._fetchAbortController&&e._fetchAbortController.abort(),t&&e.emit("error",t)},p.prototype.end=function(t,e,r){"function"==typeof t&&(r=t,t=void 0),u.Writable.prototype.end.call(this,t,e,r)},p.prototype.setTimeout=function(t,e){var r=this;e&&r.once("timeout",e),r._socketTimeout=t,r._resetTimers(!1)},p.prototype.flushHeaders=function(){},p.prototype.setNoDelay=function(){},p.prototype.setSocketKeepAlive=function(){};var f=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","date","dnt","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","via"]},6917(t,e,r){var n=r(65606),o=r(62045).hp,i=r(6688),s=r(56698),a=r(63242),u=e.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},l=e.IncomingMessage=function(t,e,r,s){var u=this;if(a.Readable.call(u),u._mode=r,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",function(){n.nextTick(function(){u.emit("close")})}),"fetch"===r){if(u._fetchResponse=e,u.url=e.url,u.statusCode=e.status,u.statusMessage=e.statusText,e.headers.forEach(function(t,e){u.headers[e.toLowerCase()]=t,u.rawHeaders.push(e,t)}),i.writableStream){var l=new WritableStream({write:function(t){return s(!1),new Promise(function(e,r){u._destroyed?r():u.push(o.from(t))?e():u._resumeFetch=e})},close:function(){s(!0),u._destroyed||u.push(null)},abort:function(t){s(!0),u._destroyed||u.emit("error",t)}});try{return void e.body.pipeTo(l).catch(function(t){s(!0),u._destroyed||u.emit("error",t)})}catch(t){}}var c=e.body.getReader();!function t(){c.read().then(function(e){u._destroyed||(s(e.done),e.done?u.push(null):(u.push(o.from(e.value)),t()))}).catch(function(t){s(!0),u._destroyed||u.emit("error",t)})}()}else if(u._xhr=t,u._pos=0,u.url=t.responseURL,u.statusCode=t.status,u.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(t){var e=t.match(/^([^:]+):\s*(.*)/);if(e){var r=e[1].toLowerCase();"set-cookie"===r?(void 0===u.headers[r]&&(u.headers[r]=[]),u.headers[r].push(e[2])):void 0!==u.headers[r]?u.headers[r]+=", "+e[2]:u.headers[r]=e[2],u.rawHeaders.push(e[1],e[2])}}),u._charset="x-user-defined",!i.overrideMimeType){var p=u.rawHeaders["mime-type"];if(p){var f=p.match(/;\s*charset=([^;])(;|$)/);f&&(u._charset=f[1].toLowerCase())}u._charset||(u._charset="utf-8")}};s(l,a.Readable),l.prototype._read=function(){var t=this._resumeFetch;t&&(this._resumeFetch=null,t())},l.prototype._onXHRProgress=function(t){var e=this,r=e._xhr,n=null;switch(e._mode){case"text":if((n=r.responseText).length>e._pos){var i=n.substr(e._pos);if("x-user-defined"===e._charset){for(var s=o.alloc(i.length),a=0;ae._pos&&(e.push(o.from(new Uint8Array(l.result.slice(e._pos)))),e._pos=l.result.byteLength)},l.onload=function(){t(!0),e.push(null)},l.readAsArrayBuffer(n)}e._xhr.readyState===u.DONE&&"ms-stream"!==e._mode&&(t(!0),e.push(null))}},73157(t){"use strict";var e={};function r(t,r,n){n||(n=Error);var o=function(t){var e,n;function o(e,n,o){return t.call(this,function(t,e,n){return"string"==typeof r?r:r(t,e,n)}(e,n,o))||this}return n=t,(e=o).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n,o}(n);o.prototype.name=n.name,o.prototype.code=t,e[t]=o}function n(t,e){if(Array.isArray(t)){var r=t.length;return t=t.map(function(t){return String(t)}),r>2?"one of ".concat(e," ").concat(t.slice(0,r-1).join(", "),", or ")+t[r-1]:2===r?"one of ".concat(e," ").concat(t[0]," or ").concat(t[1]):"of ".concat(e," ").concat(t[0])}return"of ".concat(e," ").concat(String(t))}r("ERR_INVALID_OPT_VALUE",function(t,e){return'The value "'+e+'" is invalid for option "'+t+'"'},TypeError),r("ERR_INVALID_ARG_TYPE",function(t,e,r){var o,i,s,a,u;if("string"==typeof e&&(i="not ",e.substr(0,4)===i)?(o="must not be",e=e.replace(/^not /,"")):o="must be",function(t,e,r){return(void 0===r||r>t.length)&&(r=t.length),t.substring(r-9,r)===e}(t," argument"))s="The ".concat(t," ").concat(o," ").concat(n(e,"type"));else{var l=("number"!=typeof u&&(u=0),u+1>(a=t).length||-1===a.indexOf(".",u)?"argument":"property");s='The "'.concat(t,'" ').concat(l," ").concat(o," ").concat(n(e,"type"))}return s+". Received type ".concat(typeof r)},TypeError),r("ERR_STREAM_PUSH_AFTER_EOF","stream.push() after EOF"),r("ERR_METHOD_NOT_IMPLEMENTED",function(t){return"The "+t+" method is not implemented"}),r("ERR_STREAM_PREMATURE_CLOSE","Premature close"),r("ERR_STREAM_DESTROYED",function(t){return"Cannot call "+t+" after a stream was destroyed"}),r("ERR_MULTIPLE_CALLBACK","Callback called multiple times"),r("ERR_STREAM_CANNOT_PIPE","Cannot pipe, not readable"),r("ERR_STREAM_WRITE_AFTER_END","write after end"),r("ERR_STREAM_NULL_VALUES","May not write null values to stream",TypeError),r("ERR_UNKNOWN_ENCODING",function(t){return"Unknown encoding: "+t},TypeError),r("ERR_STREAM_UNSHIFT_AFTER_END_EVENT","stream.unshift() after end event"),t.exports.F=e},63527(t,e,r){"use strict";var n=r(65606),o=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};t.exports=c;var i=r(52341),s=r(9573);r(56698)(c,i);for(var a=o(s.prototype),u=0;u0)if("string"==typeof e||a.objectMode||Object.getPrototypeOf(e)===u.prototype||(e=function(t){return u.from(t)}(e)),n)a.endEmitted?E(t,new x):T(t,a,e,!0);else if(a.ended)E(t,new v);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(e=a.decoder.write(e),a.objectMode||0!==e.length?T(t,a,e,!1):k(t,a)):T(t,a,e,!1)}else n||(a.reading=!1,k(t,a));return!a.ended&&(a.lengthe.highWaterMark&&(e.highWaterMark=function(t){return t>=N?t=N:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}function P(t){var e=t._readableState;i("emitReadable",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(i("emitReadable",e.flowing),e.emittedReadable=!0,o.nextTick(R,t))}function R(t){var e=t._readableState;i("emitReadable_",e.destroyed,e.length,e.ended),e.destroyed||!e.length&&!e.ended||(t.emit("readable"),e.emittedReadable=!1),e.needReadable=!e.flowing&&!e.ended&&e.length<=e.highWaterMark,D(t)}function k(t,e){e.readingMore||(e.readingMore=!0,o.nextTick(C,t,e))}function C(t,e){for(;!e.reading&&!e.ended&&(e.length0,e.resumeScheduled&&!e.paused?e.flowing=!0:t.listenerCount("data")>0&&t.resume()}function M(t){i("readable nexttick read 0"),t.read(0)}function L(t,e){i("resume",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit("resume"),D(t),e.flowing&&!e.reading&&t.read(0)}function D(t){var e=t._readableState;for(i("flow",e.flowing);e.flowing&&null!==t.read(););}function $(t,e){return 0===e.length?null:(e.objectMode?r=e.buffer.shift():!t||t>=e.length?(r=e.decoder?e.buffer.join(""):1===e.buffer.length?e.buffer.first():e.buffer.concat(e.length),e.buffer.clear()):r=e.buffer.consume(t,e.decoder),r);var r}function U(t){var e=t._readableState;i("endReadable",e.endEmitted),e.endEmitted||(e.ended=!0,o.nextTick(F,e,t))}function F(t,e){if(i("endReadableNT",t.endEmitted,t.length),!t.endEmitted&&0===t.length&&(t.endEmitted=!0,e.readable=!1,e.emit("end"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}function q(t,e){for(var r=0,n=t.length;r=e.highWaterMark:e.length>0)||e.ended))return i("read: emitReadable",e.length,e.ended),0===e.length&&e.ended?U(this):P(this),null;if(0===(t=j(t,e))&&e.ended)return 0===e.length&&U(this),null;var n,o=e.needReadable;return i("need readable",o),(0===e.length||e.length-t0?$(t,e):null)?(e.needReadable=e.length<=e.highWaterMark,t=0):(e.length-=t,e.awaitDrain=0),0===e.length&&(e.ended||(e.needReadable=!0),r!==t&&e.ended&&U(this)),null!==n&&this.emit("data",n),n},O.prototype._read=function(t){E(this,new w("_read()"))},O.prototype.pipe=function(t,e){var r=this,n=this._readableState;switch(n.pipesCount){case 0:n.pipes=t;break;case 1:n.pipes=[n.pipes,t];break;default:n.pipes.push(t)}n.pipesCount+=1,i("pipe count=%d opts=%j",n.pipesCount,e);var a=e&&!1===e.end||t===o.stdout||t===o.stderr?g:u;function u(){i("onend"),t.end()}n.endEmitted?o.nextTick(a):r.once("end",a),t.on("unpipe",function e(o,s){i("onunpipe"),o===r&&s&&!1===s.hasUnpiped&&(s.hasUnpiped=!0,i("cleanup"),t.removeListener("close",h),t.removeListener("finish",d),t.removeListener("drain",l),t.removeListener("error",f),t.removeListener("unpipe",e),r.removeListener("end",u),r.removeListener("end",g),r.removeListener("data",p),c=!0,!n.awaitDrain||t._writableState&&!t._writableState.needDrain||l())});var l=function(t){return function(){var e=t._readableState;i("pipeOnDrain",e.awaitDrain),e.awaitDrain&&e.awaitDrain--,0===e.awaitDrain&&s(t,"data")&&(e.flowing=!0,D(t))}}(r);t.on("drain",l);var c=!1;function p(e){i("ondata");var o=t.write(e);i("dest.write",o),!1===o&&((1===n.pipesCount&&n.pipes===t||n.pipesCount>1&&-1!==q(n.pipes,t))&&!c&&(i("false write response, pause",n.awaitDrain),n.awaitDrain++),r.pause())}function f(e){i("onerror",e),g(),t.removeListener("error",f),0===s(t,"error")&&E(t,e)}function h(){t.removeListener("finish",d),g()}function d(){i("onfinish"),t.removeListener("close",h),g()}function g(){i("unpipe"),r.unpipe(t)}return r.on("data",p),function(t,e,r){if("function"==typeof t.prependListener)return t.prependListener(e,r);t._events&&t._events[e]?Array.isArray(t._events[e])?t._events[e].unshift(r):t._events[e]=[r,t._events[e]]:t.on(e,r)}(t,"error",f),t.once("close",h),t.once("finish",d),t.emit("pipe",r),n.flowing||(i("pipe resume"),r.resume()),t},O.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(0===e.pipesCount)return this;if(1===e.pipesCount)return t&&t!==e.pipes||(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit("unpipe",this,r)),this;if(!t){var n=e.pipes,o=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var i=0;i0,!1!==n.flowing&&this.resume()):"readable"===t&&(n.endEmitted||n.readableListening||(n.readableListening=n.needReadable=!0,n.flowing=!1,n.emittedReadable=!1,i("on readable",n.length,n.reading),n.length?P(this):n.reading||o.nextTick(M,this))),r},O.prototype.addListener=O.prototype.on,O.prototype.removeListener=function(t,e){var r=a.prototype.removeListener.call(this,t,e);return"readable"===t&&o.nextTick(I,this),r},O.prototype.removeAllListeners=function(t){var e=a.prototype.removeAllListeners.apply(this,arguments);return"readable"!==t&&void 0!==t||o.nextTick(I,this),e},O.prototype.resume=function(){var t=this._readableState;return t.flowing||(i("resume"),t.flowing=!t.readableListening,function(t,e){e.resumeScheduled||(e.resumeScheduled=!0,o.nextTick(L,t,e))}(this,t)),t.paused=!1,this},O.prototype.pause=function(){return i("call pause flowing=%j",this._readableState.flowing),!1!==this._readableState.flowing&&(i("pause"),this._readableState.flowing=!1,this.emit("pause")),this._readableState.paused=!0,this},O.prototype.wrap=function(t){var e=this,r=this._readableState,n=!1;for(var o in t.on("end",function(){if(i("wrapped end"),r.decoder&&!r.ended){var t=r.decoder.end();t&&t.length&&e.push(t)}e.push(null)}),t.on("data",function(o){i("wrapped data"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o||(r.objectMode||o&&o.length)&&(e.push(o)||(n=!0,t.pause()))}),t)void 0===this[o]&&"function"==typeof t[o]&&(this[o]=function(e){return function(){return t[e].apply(t,arguments)}}(o));for(var s=0;s-1))throw new x(t);return this._writableState.defaultEncoding=t,this},Object.defineProperty(O.prototype,"writableBuffer",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(O.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),O.prototype._write=function(t,e,r){r(new g("_write()"))},O.prototype._writev=null,O.prototype.end=function(t,e,r){var n=this._writableState;return"function"==typeof t?(r=t,t=null,e=null):"function"==typeof e&&(r=e,e=null),null!=t&&this.write(t,e),n.corked&&(n.corked=1,this.uncork()),n.ending||function(t,e,r){e.ending=!0,R(t,e),r&&(e.finished?o.nextTick(r):t.once("finish",r)),e.ended=!0,t.writable=!1}(this,n,r),this},Object.defineProperty(O.prototype,"writableLength",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(O.prototype,"destroyed",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(t){this._writableState&&(this._writableState.destroyed=t)}}),O.prototype.destroy=p.destroy,O.prototype._undestroy=p.undestroy,O.prototype._destroy=function(t,e){e(t)}},17356(t,e,r){"use strict";var n,o=r(65606);function i(t,e,r){return(e=function(t){var e=function(t){if("object"!=typeof t||null===t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var r=e.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:String(e)}(e))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var s=r(19959),a=Symbol("lastResolve"),u=Symbol("lastReject"),l=Symbol("error"),c=Symbol("ended"),p=Symbol("lastPromise"),f=Symbol("handlePromise"),h=Symbol("stream");function d(t,e){return{value:t,done:e}}function g(t){var e=t[a];if(null!==e){var r=t[h].read();null!==r&&(t[p]=null,t[a]=null,t[u]=null,e(d(r,!1)))}}function y(t){o.nextTick(g,t)}var m=Object.getPrototypeOf(function(){}),b=Object.setPrototypeOf((i(n={get stream(){return this[h]},next:function(){var t=this,e=this[l];if(null!==e)return Promise.reject(e);if(this[c])return Promise.resolve(d(void 0,!0));if(this[h].destroyed)return new Promise(function(e,r){o.nextTick(function(){t[l]?r(t[l]):e(d(void 0,!0))})});var r,n=this[p];if(n)r=new Promise(function(t,e){return function(r,n){t.then(function(){e[c]?r(d(void 0,!0)):e[f](r,n)},n)}}(n,this));else{var i=this[h].read();if(null!==i)return Promise.resolve(d(i,!1));r=new Promise(this[f])}return this[p]=r,r}},Symbol.asyncIterator,function(){return this}),i(n,"return",function(){var t=this;return new Promise(function(e,r){t[h].destroy(null,function(t){t?r(t):e(d(void 0,!0))})})}),n),m);t.exports=function(t){var e,r=Object.create(b,(i(e={},h,{value:t,writable:!0}),i(e,a,{value:null,writable:!0}),i(e,u,{value:null,writable:!0}),i(e,l,{value:null,writable:!0}),i(e,c,{value:t._readableState.endEmitted,writable:!0}),i(e,f,{value:function(t,e){var n=r[h].read();n?(r[p]=null,r[a]=null,r[u]=null,t(d(n,!1))):(r[a]=t,r[u]=e)},writable:!0}),e));return r[p]=null,s(t,function(t){if(t&&"ERR_STREAM_PREMATURE_CLOSE"!==t.code){var e=r[u];return null!==e&&(r[p]=null,r[a]=null,r[u]=null,e(t)),void(r[l]=t)}var n=r[a];null!==n&&(r[p]=null,r[a]=null,r[u]=null,n(d(void 0,!0))),r[c]=!0}),t.on("readable",y.bind(null,r)),r}},10272(t,e,r){"use strict";function n(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,n)}return r}function o(t){for(var e=1;e0?this.tail.next=e:this.head=e,this.tail=e,++this.length}},{key:"unshift",value:function(t){var e={data:t,next:this.head};0===this.length&&(this.tail=e),this.head=e,++this.length}},{key:"shift",value:function(){if(0!==this.length){var t=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,t}}},{key:"clear",value:function(){this.head=this.tail=null,this.length=0}},{key:"join",value:function(t){if(0===this.length)return"";for(var e=this.head,r=""+e.data;e=e.next;)r+=t+e.data;return r}},{key:"concat",value:function(t){if(0===this.length)return u.alloc(0);for(var e=u.allocUnsafe(t>>>0),r=this.head,n=0;r;)p(r.data,e,n),n+=r.data.length,r=r.next;return e}},{key:"consume",value:function(t,e){var r;return to.length?o.length:t;if(i===o.length?n+=o:n+=o.slice(0,t),0===(t-=i)){i===o.length?(++r,e.next?this.head=e.next:this.head=this.tail=null):(this.head=e,e.data=o.slice(i));break}++r}return this.length-=r,n}},{key:"_getBuffer",value:function(t){var e=u.allocUnsafe(t),r=this.head,n=1;for(r.data.copy(e),t-=r.data.length;r=r.next;){var o=r.data,i=t>o.length?o.length:t;if(o.copy(e,e.length-t,0,i),0===(t-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,e}},{key:c,value:function(t,e){return l(this,o(o({},e),{},{depth:0,customInspect:!1}))}}])&&s(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}()},16057(t,e,r){"use strict";var n=r(65606);function o(t,e){s(t,e),i(t)}function i(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit("close")}function s(t,e){t.emit("error",e)}t.exports={destroy:function(t,e){var r=this,a=this._readableState&&this._readableState.destroyed,u=this._writableState&&this._writableState.destroyed;return a||u?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,n.nextTick(s,this,t)):n.nextTick(s,this,t)),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(t||null,function(t){!e&&t?r._writableState?r._writableState.errorEmitted?n.nextTick(i,r):(r._writableState.errorEmitted=!0,n.nextTick(o,r,t)):n.nextTick(o,r,t):e?(n.nextTick(i,r),e(t)):n.nextTick(i,r)}),this)},undestroy:function(){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)},errorOrDestroy:function(t,e){var r=t._readableState,n=t._writableState;r&&r.autoDestroy||n&&n.autoDestroy?t.destroy(e):t.emit("error",e)}}},19959(t,e,r){"use strict";var n=r(73157).F.ERR_STREAM_PREMATURE_CLOSE;function o(){}t.exports=function t(e,r,i){if("function"==typeof r)return t(e,null,r);r||(r={}),i=function(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,n=new Array(r),o=0;o0,function(t){c||(c=t),t&&f.forEach(u),i||(f.forEach(u),p(c))})});return e.reduce(l)}},11922(t,e,r){"use strict";var n=r(73157).F.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(t,e,r,o){var i=function(t,e,r){return null!=t.highWaterMark?t.highWaterMark:e?t[r]:null}(e,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:"highWaterMark",i);return Math.floor(i)}return t.objectMode?16:16384}}},81914(t,e,r){t.exports=r(37007).EventEmitter},63242(t,e,r){(e=t.exports=r(52341)).Stream=e,e.Readable=e,e.Writable=r(9573),e.Duplex=r(63527),e.Transform=r(95689),e.PassThrough=r(82571),e.finished=r(19959),e.pipeline=r(37413)},61160(t,e,r){"use strict";var n=r(92063),o=r(73992),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,l=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,c=/^[a-zA-Z]:/;function p(t){return(t||"").toString().replace(i,"")}var f=[["#","hash"],["?","query"],function(t,e){return g(e.protocol)?t.replace(/\\/g,"/"):t},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],h={hash:1,query:1};function d(t){var e,r=("undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{}).location||{},n={},o=typeof(t=t||r);if("blob:"===t.protocol)n=new m(unescape(t.pathname),{});else if("string"===o)for(e in n=new m(t,{}),h)delete n[e];else if("object"===o){for(e in t)e in h||(n[e]=t[e]);void 0===n.slashes&&(n.slashes=a.test(t.href))}return n}function g(t){return"file:"===t||"ftp:"===t||"http:"===t||"https:"===t||"ws:"===t||"wss:"===t}function y(t,e){t=(t=p(t)).replace(s,""),e=e||{};var r,n=l.exec(t),o=n[1]?n[1].toLowerCase():"",i=!!n[2],a=!!n[3],u=0;return i?a?(r=n[2]+n[3]+n[4],u=n[2].length+n[3].length):(r=n[2]+n[4],u=n[2].length):a?(r=n[3]+n[4],u=n[3].length):r=n[4],"file:"===o?u>=2&&(r=r.slice(2)):g(o)?r=n[4]:o?i&&(r=r.slice(2)):u>=2&&g(e.protocol)&&(r=n[4]),{protocol:o,slashes:i||g(o),slashesCount:u,rest:r}}function m(t,e,r){if(t=(t=p(t)).replace(s,""),!(this instanceof m))return new m(t,e,r);var i,a,u,l,h,b,v=f.slice(),w=typeof e,x=this,E=0;for("object"!==w&&"string"!==w&&(r=e,e=null),r&&"function"!=typeof r&&(r=o.parse),i=!(a=y(t||"",e=d(e))).protocol&&!a.slashes,x.slashes=a.slashes||i&&e.slashes,x.protocol=a.protocol||e.protocol||"",t=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||c.test(t))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(x.protocol)))&&(v[3]=[/(.*)/,"pathname"]);E",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(u),c=["%","/","?",";","#"].concat(l),p=["/","?","#"],f=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,d={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},y={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},m=r(55373);function b(t,e,r){if(t&&"object"==typeof t&&t instanceof o)return t;var n=new o;return n.parse(t,e,r),n}o.prototype.parse=function(t,e,r){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),s=-1!==o&&o127?k+="x":k+=R[C];if(!k.match(f)){var M=j.slice(0,_),L=j.slice(_+1),D=R.match(h);D&&(M.push(D[1]),L.unshift(D[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=M.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),N||(this.hostname=n.toASCII(this.hostname));var $=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+$,this.href+=this.host,N&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!d[x])for(_=0,P=l.length;_0)&&r.host.split("@"))&&(r.auth=N.shift(),r.hostname=N.shift(),r.host=r.hostname)),r.search=t.search,r.query=t.query,null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r;if(!E.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var A=E.slice(-1)[0],O=(r.host||t.host||E.length>1)&&("."===A||".."===A)||""===A,_=0,T=E.length;T>=0;T--)"."===(A=E[T])?E.splice(T,1):".."===A?(E.splice(T,1),_++):_&&(E.splice(T,1),_--);if(!w&&!x)for(;_--;_)E.unshift("..");!w||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),O&&"/"!==E.join("/").substr(-1)&&E.push("");var N,j=""===E[0]||E[0]&&"/"===E[0].charAt(0);return S&&(r.hostname=j?"":E.length?E.shift():"",r.host=r.hostname,(N=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=N.shift(),r.hostname=N.shift(),r.host=r.hostname)),(w=w||r.host&&E.length)&&!j&&E.unshift(""),E.length>0?r.pathname=E.join("/"):(r.pathname=null,r.path=null),null===r.pathname&&null===r.search||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var t=this.host,e=s.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},81135(t){t.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},49032(t,e,r){"use strict";var n=r(47244),o=r(48184),i=r(25767),s=r(35680);function a(t){return t.call.bind(t)}var u="undefined"!=typeof BigInt,l="undefined"!=typeof Symbol,c=a(Object.prototype.toString),p=a(Number.prototype.valueOf),f=a(String.prototype.valueOf),h=a(Boolean.prototype.valueOf);if(u)var d=a(BigInt.prototype.valueOf);if(l)var g=a(Symbol.prototype.valueOf);function y(t,e){if("object"!=typeof t)return!1;try{return e(t),!0}catch(t){return!1}}function m(t){return"[object Map]"===c(t)}function b(t){return"[object Set]"===c(t)}function v(t){return"[object WeakMap]"===c(t)}function w(t){return"[object WeakSet]"===c(t)}function x(t){return"[object ArrayBuffer]"===c(t)}function E(t){return"undefined"!=typeof ArrayBuffer&&(x.working?x(t):t instanceof ArrayBuffer)}function S(t){return"[object DataView]"===c(t)}function A(t){return"undefined"!=typeof DataView&&(S.working?S(t):t instanceof DataView)}e.isArgumentsObject=n,e.isGeneratorFunction=o,e.isTypedArray=s,e.isPromise=function(t){return"undefined"!=typeof Promise&&t instanceof Promise||null!==t&&"object"==typeof t&&"function"==typeof t.then&&"function"==typeof t.catch},e.isArrayBufferView=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(t):s(t)||A(t)},e.isUint8Array=function(t){return"Uint8Array"===i(t)},e.isUint8ClampedArray=function(t){return"Uint8ClampedArray"===i(t)},e.isUint16Array=function(t){return"Uint16Array"===i(t)},e.isUint32Array=function(t){return"Uint32Array"===i(t)},e.isInt8Array=function(t){return"Int8Array"===i(t)},e.isInt16Array=function(t){return"Int16Array"===i(t)},e.isInt32Array=function(t){return"Int32Array"===i(t)},e.isFloat32Array=function(t){return"Float32Array"===i(t)},e.isFloat64Array=function(t){return"Float64Array"===i(t)},e.isBigInt64Array=function(t){return"BigInt64Array"===i(t)},e.isBigUint64Array=function(t){return"BigUint64Array"===i(t)},m.working="undefined"!=typeof Map&&m(new Map),e.isMap=function(t){return"undefined"!=typeof Map&&(m.working?m(t):t instanceof Map)},b.working="undefined"!=typeof Set&&b(new Set),e.isSet=function(t){return"undefined"!=typeof Set&&(b.working?b(t):t instanceof Set)},v.working="undefined"!=typeof WeakMap&&v(new WeakMap),e.isWeakMap=function(t){return"undefined"!=typeof WeakMap&&(v.working?v(t):t instanceof WeakMap)},w.working="undefined"!=typeof WeakSet&&w(new WeakSet),e.isWeakSet=function(t){return w(t)},x.working="undefined"!=typeof ArrayBuffer&&x(new ArrayBuffer),e.isArrayBuffer=E,S.working="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView&&S(new DataView(new ArrayBuffer(1),0,1)),e.isDataView=A;var O="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:void 0;function _(t){return"[object SharedArrayBuffer]"===c(t)}function T(t){return void 0!==O&&(void 0===_.working&&(_.working=_(new O)),_.working?_(t):t instanceof O)}function N(t){return y(t,p)}function j(t){return y(t,f)}function P(t){return y(t,h)}function R(t){return u&&y(t,d)}function k(t){return l&&y(t,g)}e.isSharedArrayBuffer=T,e.isAsyncFunction=function(t){return"[object AsyncFunction]"===c(t)},e.isMapIterator=function(t){return"[object Map Iterator]"===c(t)},e.isSetIterator=function(t){return"[object Set Iterator]"===c(t)},e.isGeneratorObject=function(t){return"[object Generator]"===c(t)},e.isWebAssemblyCompiledModule=function(t){return"[object WebAssembly.Module]"===c(t)},e.isNumberObject=N,e.isStringObject=j,e.isBooleanObject=P,e.isBigIntObject=R,e.isSymbolObject=k,e.isBoxedPrimitive=function(t){return N(t)||j(t)||P(t)||R(t)||k(t)},e.isAnyArrayBuffer=function(t){return"undefined"!=typeof Uint8Array&&(E(t)||T(t))},["isProxy","isExternal","isModuleNamespaceObject"].forEach(function(t){Object.defineProperty(e,t,{enumerable:!1,value:function(){throw new Error(t+" is not supported in userland")}})})},40537(t,e,r){var n=r(65606),o=Object.getOwnPropertyDescriptors||function(t){for(var e=Object.keys(t),r={},n=0;n=o)return t;switch(t){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(t){return"[Circular]"}default:return t}}),a=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),y(r)?n.showHidden=r:r&&e._extend(n,r),w(n.showHidden)&&(n.showHidden=!1),w(n.depth)&&(n.depth=2),w(n.colors)&&(n.colors=!1),w(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=c),f(n,t,n.depth)}function c(t,e){var r=l.styles[e];return r?"["+l.colors[r][0]+"m"+t+"["+l.colors[r][1]+"m":t}function p(t,e){return t}function f(t,r,n){if(t.customInspect&&r&&O(r.inspect)&&r.inspect!==e.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,t);return v(o)||(o=f(t,o,n)),o}var i=function(t,e){if(w(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):y(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}(t,r);if(i)return i;var s=Object.keys(r),a=function(t){var e={};return t.forEach(function(t,r){e[t]=!0}),e}(s);if(t.showHidden&&(s=Object.getOwnPropertyNames(r)),A(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(r);if(0===s.length){if(O(r)){var u=r.name?": "+r.name:"";return t.stylize("[Function"+u+"]","special")}if(x(r))return t.stylize(RegExp.prototype.toString.call(r),"regexp");if(S(r))return t.stylize(Date.prototype.toString.call(r),"date");if(A(r))return h(r)}var l,c="",p=!1,E=["{","}"];return g(r)&&(p=!0,E=["[","]"]),O(r)&&(c=" [Function"+(r.name?": "+r.name:"")+"]"),x(r)&&(c=" "+RegExp.prototype.toString.call(r)),S(r)&&(c=" "+Date.prototype.toUTCString.call(r)),A(r)&&(c=" "+h(r)),0!==s.length||p&&0!=r.length?n<0?x(r)?t.stylize(RegExp.prototype.toString.call(r),"regexp"):t.stylize("[Object]","special"):(t.seen.push(r),l=p?function(t,e,r,n,o){for(var i=[],s=0,a=e.length;s60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n  ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}(l,c,E)):E[0]+c+E[1]}function h(t){return"["+Error.prototype.toString.call(t)+"]"}function d(t,e,r,n,o,i){var s,a,u;if((u=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]}).get?a=u.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):u.set&&(a=t.stylize("[Setter]","special")),j(n,o)||(s="["+o+"]"),a||(t.seen.indexOf(u.value)<0?(a=m(r)?f(t,u.value,null):f(t,u.value,r-1)).indexOf("\n")>-1&&(a=i?a.split("\n").map(function(t){return"  "+t}).join("\n").slice(2):"\n"+a.split("\n").map(function(t){return"   "+t}).join("\n")):a=t.stylize("[Circular]","special")),w(s)){if(i&&o.match(/^\d+$/))return a;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.slice(1,-1),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+a}function g(t){return Array.isArray(t)}function y(t){return"boolean"==typeof t}function m(t){return null===t}function b(t){return"number"==typeof t}function v(t){return"string"==typeof t}function w(t){return void 0===t}function x(t){return E(t)&&"[object RegExp]"===_(t)}function E(t){return"object"==typeof t&&null!==t}function S(t){return E(t)&&"[object Date]"===_(t)}function A(t){return E(t)&&("[object Error]"===_(t)||t instanceof Error)}function O(t){return"function"==typeof t}function _(t){return Object.prototype.toString.call(t)}function T(t){return t<10?"0"+t.toString(10):t.toString(10)}e.debuglog=function(t){if(t=t.toUpperCase(),!s[t])if(a.test(t)){var r=n.pid;s[t]=function(){var n=e.format.apply(e,arguments);console.error("%s %d: %s",t,r,n)}}else s[t]=function(){};return s[t]},e.inspect=l,l.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},l.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},e.types=r(49032),e.isArray=g,e.isBoolean=y,e.isNull=m,e.isNullOrUndefined=function(t){return null==t},e.isNumber=b,e.isString=v,e.isSymbol=function(t){return"symbol"==typeof t},e.isUndefined=w,e.isRegExp=x,e.types.isRegExp=x,e.isObject=E,e.isDate=S,e.types.isDate=S,e.isError=A,e.types.isNativeError=A,e.isFunction=O,e.isPrimitive=function(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||void 0===t},e.isBuffer=r(81135);var N=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function j(t,e){return Object.prototype.hasOwnProperty.call(t,e)}e.log=function(){var t,r;console.log("%s - %s",(r=[T((t=new Date).getHours()),T(t.getMinutes()),T(t.getSeconds())].join(":"),[t.getDate(),N[t.getMonth()],r].join(" ")),e.format.apply(e,arguments))},e.inherits=r(56698),e._extend=function(t,e){if(!e||!E(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t};var P="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function R(t,e){if(!t){var r=new Error("Promise was rejected with a falsy value");r.reason=t,t=r}return e(t)}e.promisify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');if(P&&t[P]){var e;if("function"!=typeof(e=t[P]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(e,P,{value:e,enumerable:!1,writable:!1,configurable:!0}),e}function e(){for(var e,r,n=new Promise(function(t,n){e=t,r=n}),o=[],i=0;i-1?e:"Object"===e&&function(t){var e=!1;return n(g,function(r,n){if(!e)try{r(t),e=h(n,1)}catch(t){}}),e}(t)}return a?function(t){var e=!1;return n(g,function(r,n){if(!e)try{"$"+r(t)===n&&(e=h(n,1))}catch(t){}}),e}(t):null}},57510(t){t.exports=function(){for(var t={},r=0;ro});const n="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,o=n.fetch.bind(n);n.Headers,n.Request,n.Response},49965(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(44928),o=r(72766),i=r(87818),s=r(89596);const a={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:"  ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1,maxNestedTags:100,jPath:!0};function u(t){if(this.options=Object.assign({},a,t),this.options.stopNodes&&Array.isArray(this.options.stopNodes)&&(this.options.stopNodes=this.options.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),this.stopNodeExpressions=[],this.options.stopNodes&&Array.isArray(this.options.stopNodes))for(let t=0;t\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function l(t,e,r,n){const o=this.extractAttributes(t);if(n.push(e,o),this.checkStopNode(n)){const o=this.buildRawContent(t),i=this.buildAttributesForStopNode(t);return n.pop(),this.buildObjectNode(o,e,i,r)}const i=this.j2x(t,r+1,n);return n.pop(),void 0!==t[this.options.textNodeName]&&1===Object.keys(t).length?this.buildTextValNode(t[this.options.textNodeName],e,i.attrStr,r,n):this.buildObjectNode(i.val,e,i.attrStr,r)}function c(t){return this.options.indentBy.repeat(t)}function p(t){return!(!t.startsWith(this.options.attributeNamePrefix)||t===this.options.textNodeName)&&t.substr(this.attrPrefixLen)}u.prototype.build=function(t){if(this.options.preserveOrder)return(0,n.A)(t,this.options);{Array.isArray(t)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(t={[this.options.arrayNodeName]:t});const e=new s.A;return this.j2x(t,0,e).val}},u.prototype.j2x=function(t,e,r){let n="",o="";if(this.options.maxNestedTags&&r.getDepth()>=this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");const i=this.options.jPath?r.toString():r,s=this.checkStopNode(r);for(let a in t)if(Object.prototype.hasOwnProperty.call(t,a))if(void 0===t[a])this.isAttribute(a)&&(o+="");else if(null===t[a])this.isAttribute(a)||a===this.options.cdataPropName?o+="":"?"===a[0]?o+=this.indentate(e)+"<"+a+"?"+this.tagEndChar:o+=this.indentate(e)+"<"+a+"/"+this.tagEndChar;else if(t[a]instanceof Date)o+=this.buildTextValNode(t[a],a,"",e,r);else if("object"!=typeof t[a]){const u=this.isAttribute(a);if(u&&!this.ignoreAttributesFn(u,i))n+=this.buildAttrPairStr(u,""+t[a],s);else if(!u)if(a===this.options.textNodeName){let e=this.options.tagValueProcessor(a,""+t[a]);o+=this.replaceEntitiesValue(e)}else{r.push(a);const n=this.checkStopNode(r);if(r.pop(),n){const r=""+t[a];o+=""===r?this.indentate(e)+"<"+a+this.closeTag(a)+this.tagEndChar:this.indentate(e)+"<"+a+">"+r+""+t+"${t}`;else if("object"==typeof t&&null!==t){const n=this.buildRawContent(t),o=this.buildAttributesForStopNode(t);e+=""===n?`<${r}${o}/>`:`<${r}${o}>${n}`}}else if("object"==typeof n&&null!==n){const t=this.buildRawContent(n),o=this.buildAttributesForStopNode(n);e+=""===t?`<${r}${o}/>`:`<${r}${o}>${t}`}else e+=`<${r}>${n}`}return e},u.prototype.buildAttributesForStopNode=function(t){if(!t||"object"!=typeof t)return"";let e="";if(this.options.attributesGroupName&&t[this.options.attributesGroupName]){const r=t[this.options.attributesGroupName];for(let t in r){if(!Object.prototype.hasOwnProperty.call(r,t))continue;const n=t.startsWith(this.options.attributeNamePrefix)?t.substring(this.options.attributeNamePrefix.length):t,o=r[t];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}else for(let r in t){if(!Object.prototype.hasOwnProperty.call(t,r))continue;const n=this.isAttribute(r);if(n){const o=t[r];!0===o&&this.options.suppressBooleanAttributes?e+=" "+n:e+=" "+n+'="'+o+'"'}}return e},u.prototype.buildObjectNode=function(t,e,r,n){if(""===t)return"?"===e[0]?this.indentate(n)+"<"+e+r+"?"+this.tagEndChar:this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar;{let o=""+t+o}},u.prototype.closeTag=function(t){let e="";return-1!==this.options.unpairedTags.indexOf(t)?this.options.suppressUnpairedNode||(e="/"):e=this.options.suppressEmptyNode?"/":`>`+this.newLine;if(!1!==this.options.commentPropName&&e===this.options.commentPropName)return this.indentate(n)+`\x3c!--${t}--\x3e`+this.newLine;if("?"===e[0])return this.indentate(n)+"<"+e+r+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(e,t);return o=this.replaceEntitiesValue(o),""===o?this.indentate(n)+"<"+e+r+this.closeTag(e)+this.tagEndChar:this.indentate(n)+"<"+e+r+">"+o+"0&&this.options.processEntities)for(let e=0;e{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},44928(t,e,r){"use strict";r.d(e,{A:()=>i});var n=r(87818),o=r(89596);function i(t,e){let r="";e.format&&e.indentBy.length>0&&(r="\n");const i=[];if(e.stopNodes&&Array.isArray(e.stopNodes))for(let t=0;te.maxNestedTags)throw new Error("Maximum nested tags exceeded");if(!Array.isArray(t)){if(null!=t){let r=t.toString();return r=h(r,e),r}return""}for(let d=0;d`,l=!1,n.pop();continue}if(y===e.commentPropName){i+=r+`\x3c!--${g[y][0][e.textNodeName]}--\x3e`,l=!0,n.pop();continue}if("?"===y[0]){const t=p(g[":@"],e,b),o="?xml"===y?"":r;let s=g[y][0][e.textNodeName];s=0!==s.length?" "+s:"",i+=o+`<${y}${s}${t}?>`,l=!0,n.pop();continue}let v=r;""!==v&&(v+=e.indentBy);const w=r+`<${y}${p(g[":@"],e,b)}`;let x;x=b?u(g[y],e):s(g[y],e,v,n,o),-1!==e.unpairedTags.indexOf(y)?e.suppressUnpairedNode?i+=w+">":i+=w+"/>":x&&0!==x.length||!e.suppressEmptyNode?x&&x.endsWith(">")?i+=w+`>${x}${r}`:(i+=w+">",x&&""!==r&&(x.includes("/>")||x.includes("`):i+=w+"/>",l=!0,n.pop()}return i}function a(t,e){if(!t||e.ignoreAttributes)return null;const r={};let n=!1;for(let o in t)Object.prototype.hasOwnProperty.call(t,o)&&(r[o.startsWith(e.attributeNamePrefix)?o.substr(e.attributeNamePrefix.length):o]=t[o],n=!0);return n?r:null}function u(t,e){if(!Array.isArray(t))return null!=t?t.toString():"";let r="";for(let n=0;n${n}`:r+=`<${i}${t}/>`}}}return r}function l(t,e){let r="";if(t&&!e.ignoreAttributes)for(let n in t){if(!Object.prototype.hasOwnProperty.call(t,n))continue;let o=t[n];!0===o&&e.suppressBooleanAttributes?r+=` ${n.substr(e.attributeNamePrefix.length)}`:r+=` ${n.substr(e.attributeNamePrefix.length)}="${o}"`}return r}function c(t){const e=Object.keys(t);for(let r=0;r0&&e.processEntities)for(let r=0;r{for(const r of t){if("string"==typeof r&&e===r)return!0;if(r instanceof RegExp&&r.test(e))return!0}}:()=>!1}r.d(e,{A:()=>n})},69031(t,e,r){"use strict";r.d(e,{Eo:()=>s,Xe:()=>i,q9:()=>u,vl:()=>l,yQ:()=>a});const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",o=new RegExp("^["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function i(t,e){const r=[];let n=e.exec(t);for(;n;){const o=[];o.startIndex=e.lastIndex-n[0].length;const i=n.length;for(let t=0;ti});var n=r(69031);const o={allowBooleanAttributes:!1,unpairedTags:[]};function i(t,e){e=Object.assign({},o,e);const r=[];let n=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(let o=0;o"!==t[o]&&" "!==t[o]&&"\t"!==t[o]&&"\n"!==t[o]&&"\r"!==t[o];o++)m+=t[o];if(m=m.trim(),"/"===m[m.length-1]&&(m=m.substring(0,m.length-1),o--),!g(m)){let e;return e=0===m.trim().length?"Invalid space after '<'.":"Tag '"+m+"' is an invalid name.",h("InvalidTag",e,y(t,o))}const b=l(t,o);if(!1===b)return h("InvalidAttr","Attributes for '"+m+"' have open quote.",y(t,o));let v=b.value;if(o=b.index,"/"===v[v.length-1]){const r=o-v.length;v=v.substring(0,v.length-1);const i=p(v,e);if(!0!==i)return h(i.err.code,i.err.msg,y(t,r+i.err.line));n=!0}else if(d){if(!b.tagClosed)return h("InvalidTag","Closing tag '"+m+"' doesn't have proper closing.",y(t,o));if(v.trim().length>0)return h("InvalidTag","Closing tag '"+m+"' can't have attributes or invalid starting.",y(t,c));if(0===r.length)return h("InvalidTag","Closing tag '"+m+"' has not been opened.",y(t,c));{const e=r.pop();if(m!==e.tagName){let r=y(t,e.tagStartPos);return h("InvalidTag","Expected closing tag '"+e.tagName+"' (opened in line "+r.line+", col "+r.col+") instead of closing tag '"+m+"'.",y(t,c))}0==r.length&&(i=!0)}}else{const s=p(v,e);if(!0!==s)return h(s.err.code,s.err.msg,y(t,o-v.length+s.err.line));if(!0===i)return h("InvalidXml","Multiple possible root nodes found.",y(t,o));-1!==e.unpairedTags.indexOf(m)||r.push({tagName:m,tagStartPos:c}),n=!0}for(o++;o0)||h("InvalidXml","Invalid '"+JSON.stringify(r.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):h("InvalidXml","Start tag expected.",1)}function s(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function a(t,e){const r=e;for(;e5&&"xml"===n)return h("InvalidXml","XML declaration allowed only at the start of the document.",y(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}continue}return e}function u(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){let r=1;for(e+=8;e"===t[e]&&(r--,0===r))break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e"===t[e+2]){e+=2;break}return e}function l(t,e){let r="",n="",o=!1;for(;e"===t[e]&&""===n){o=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:o}}const c=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function p(t,e){const r=(0,n.Xe)(t,c),o={};for(let t=0;tn});const n=r(49965).A},25003(t,e,r){"use strict";r.d(e,{A:()=>o});var n=r(69031);class o{constructor(t){this.suppressValidationErr=!t,this.options=t}readDocType(t,e){const r=Object.create(null);let n=0;if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");{e+=9;let o=1,i=!1,a=!1,u="";for(;e"===t[e]){if(a?"-"===t[e-1]&&"-"===t[e-2]&&(a=!1,o--):o--,0===o)break}else"["===t[e]?i=!0:u+=t[e];else{if(i&&s(t,"!ENTITY",e)){let o,i;if(e+=7,[o,i,e]=this.readEntityExp(t,e+1,this.suppressValidationErr),-1===i.indexOf("&")){if(!1!==this.options.enabled&&null!=this.options.maxEntityCount&&n>=this.options.maxEntityCount)throw new Error(`Entity count (${n+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);const t=o.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");r[o]={regx:RegExp(`&${t};`,"g"),val:i},n++}}else if(i&&s(t,"!ELEMENT",e)){e+=8;const{index:r}=this.readElementExp(t,e+1);e=r}else if(i&&s(t,"!ATTLIST",e))e+=8;else if(i&&s(t,"!NOTATION",e)){e+=9;const{index:r}=this.readNotationExp(t,e+1,this.suppressValidationErr);e=r}else{if(!s(t,"!--",e))throw new Error("Invalid DOCTYPE");a=!0}o++,u=""}if(0!==o)throw new Error("Unclosed DOCTYPE")}return{entities:r,i:e}}readEntityExp(t,e){const r=e=i(t,e);for(;ethis.options.maxEntitySize)throw new Error(`Entity "${n}" size (${o.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return[n,o,--e]}readNotationExp(t,e){const r=e=i(t,e);for(;e{for(;eu});var n=r(69031);const o=t=>n.q9.includes(t)?"__"+t:t,i={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:o};function s(t,e){if("string"!=typeof t)return;const r=t.toLowerCase();if(n.q9.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);if(n.vl.some(t=>r===t.toLowerCase()))throw new Error(`[SECURITY] Invalid ${e}: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`)}function a(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,maxEntityCount:100,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:Math.max(1,t.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,t.maxExpansionDepth??10),maxTotalExpansions:Math.max(1,t.maxTotalExpansions??1e3),maxExpandedLength:Math.max(1,t.maxExpandedLength??1e5),maxEntityCount:Math.max(1,t.maxEntityCount??100),allowedTags:t.allowedTags??null,tagFilter:t.tagFilter??null}:a(!0)}const u=function(t){const e=Object.assign({},i,t),r=[{value:e.attributeNamePrefix,name:"attributeNamePrefix"},{value:e.attributesGroupName,name:"attributesGroupName"},{value:e.textNodeName,name:"textNodeName"},{value:e.cdataPropName,name:"cdataPropName"},{value:e.commentPropName,name:"commentPropName"}];for(const{value:t,name:e}of r)t&&s(t,e);return null===e.onDangerousProperty&&(e.onDangerousProperty=o),e.processEntities=a(e.processEntities),e.stopNodes&&Array.isArray(e.stopNodes)&&(e.stopNodes=e.stopNodes.map(t=>"string"==typeof t&&t.startsWith("*.")?".."+t.substring(2):t)),e}},79781(t,e,r){"use strict";r.d(e,{A:()=>f});var n=r(69031),o=r(13127),i=r(25003),s=r(60524),a=r(72984),u=r(87818),l=r(89596);function c(t,e){if(!t)return{};const r=e.attributesGroupName?t[e.attributesGroupName]:t;if(!r)return{};const n={};for(const t in r)t.startsWith(e.attributeNamePrefix)?n[t.substring(e.attributeNamePrefix.length)]=r[t]:n[t]=r[t];return n}function p(t){if(!t||"string"!=typeof t)return;const e=t.indexOf(":");if(-1!==e&&e>0){const r=t.substring(0,e);if("xmlns"!==r)return r}}class f{constructor(t){if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(t,e)=>T(e,10,"&#")},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(t,e)=>T(e,16,"&#x")}},this.addExternalEntities=h,this.parseXml=b,this.parseTextData=d,this.resolveNameSpace=g,this.buildAttributesMap=m,this.isItStopNode=E,this.replaceEntitiesValue=w,this.readStopNodeData=O,this.saveTextToParentTag=x,this.addChild=v,this.ignoreAttributesFn=(0,a.A)(this.options.ignoreAttributes),this.entityExpansionCount=0,this.currentExpandedLength=0,this.matcher=new l.A,this.isCurrentNodeStopNode=!1,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodeExpressions=[];for(let t=0;t0)){s||(t=this.replaceEntitiesValue(t,e,r));const n=this.options.jPath?r.toString():r,a=this.options.tagValueProcessor(e,t,n,o,i);return null==a?t:typeof a!=typeof t||a!==t?a:this.options.trimValues||t.trim()===t?_(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function g(t){if(this.options.removeNSPrefix){const e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}const y=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function m(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){const o=(0,n.Xe)(t,y),i=o.length,s={},a={};for(let t=0;t0&&"object"==typeof e&&e.updateCurrent&&e.updateCurrent(a);for(let t=0;t",i,"Closing Tag is not closed.");let o=t.substring(i+2,e).trim();if(this.options.removeNSPrefix){const t=o.indexOf(":");-1!==t&&(o=o.substr(t+1))}o=N(this.options.transformTagName,o,"",this.options).tagName,r&&(n=this.saveTextToParentTag(n,r,this.matcher));const s=this.matcher.getCurrentTag();if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error(`Unpaired tag can not be used as closing tag: `);s&&-1!==this.options.unpairedTags.indexOf(s)&&(this.matcher.pop(),this.tagsNodeStack.pop()),this.matcher.pop(),this.isCurrentNodeStopNode=!1,r=this.tagsNodeStack.pop(),n="",i=e}else if("?"===t[i+1]){let e=A(t,i,!1,"?>");if(!e)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,this.matcher),this.options.ignoreDeclaration&&"?xml"===e.tagName||this.options.ignorePiTags);else{const t=new o.A(e.tagName);t.add(this.options.textNodeName,""),e.tagName!==e.tagExp&&e.attrExpPresent&&(t[":@"]=this.buildAttributesMap(e.tagExp,this.matcher,e.tagName)),this.addChild(r,t,this.matcher,i)}i=e.closeIndex+1}else if("!--"===t.substr(i+1,3)){const e=S(t,"--\x3e",i+4,"Comment is not closed.");if(this.options.commentPropName){const o=t.substring(i+4,e-2);n=this.saveTextToParentTag(n,r,this.matcher),r.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}i=e}else if("!D"===t.substr(i+1,2)){const e=s.readDocType(t,i);this.docTypeEntities=e.entities,i=e.i}else if("!["===t.substr(i+1,2)){const e=S(t,"]]>",i,"CDATA is not closed.")-2,o=t.substring(i+9,e);n=this.saveTextToParentTag(n,r,this.matcher);let s=this.parseTextData(o,r.tagname,this.matcher,!0,!1,!0,!0);null==s&&(s=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):r.add(this.options.textNodeName,s),i=e+2}else{let s=A(t,i,this.options.removeNSPrefix);if(!s){const e=t.substring(Math.max(0,i-50),Math.min(t.length,i+50));throw new Error(`readTagExp returned undefined at position ${i}. Context: "${e}"`)}let a=s.tagName;const u=s.rawTagName;let l=s.tagExp,f=s.attrExpPresent,h=s.closeIndex;if(({tagName:a,tagExp:l}=N(this.options.transformTagName,a,l,this.options)),this.options.strictReservedNames&&(a===this.options.commentPropName||a===this.options.cdataPropName||a===this.options.textNodeName||a===this.options.attributesGroupName))throw new Error(`Invalid tag name: ${a}`);r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,this.matcher,!1));const d=r;d&&-1!==this.options.unpairedTags.indexOf(d.tagname)&&(r=this.tagsNodeStack.pop(),this.matcher.pop());let g=!1;l.length>0&&l.lastIndexOf("/")===l.length-1&&(g=!0,"/"===a[a.length-1]?(a=a.substr(0,a.length-1),l=a):l=l.substr(0,l.length-1),f=a!==l);let y,m=null,b={};y=p(u),a!==e.tagname&&this.matcher.push(a,{},y),a!==l&&f&&(m=this.buildAttributesMap(l,this.matcher,a),m&&(b=c(m,this.options))),a!==e.tagname&&(this.isCurrentNodeStopNode=this.isItStopNode(this.stopNodeExpressions,this.matcher));const v=i;if(this.isCurrentNodeStopNode){let e="";if(g)i=s.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(a))i=s.closeIndex;else{const r=this.readStopNodeData(t,u,h+1);if(!r)throw new Error(`Unexpected end of ${u}`);i=r.i,e=r.tagContent}const n=new o.A(a);m&&(n[":@"]=m),n.add(this.options.textNodeName,e),this.matcher.pop(),this.isCurrentNodeStopNode=!1,this.addChild(r,n,this.matcher,v)}else{if(g){({tagName:a,tagExp:l}=N(this.options.transformTagName,a,l,this.options));const t=new o.A(a);m&&(t[":@"]=m),this.addChild(r,t,this.matcher,v),this.matcher.pop(),this.isCurrentNodeStopNode=!1}else{if(-1!==this.options.unpairedTags.indexOf(a)){const t=new o.A(a);m&&(t[":@"]=m),this.addChild(r,t,this.matcher,v),this.matcher.pop(),this.isCurrentNodeStopNode=!1,i=s.closeIndex;continue}{const t=new o.A(a);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),m&&(t[":@"]=m),this.addChild(r,t,this.matcher,v),r=t}}n="",i=h}}else n+=t[i];return e.child};function v(t,e,r,n){this.options.captureMetaData||(n=void 0);const o=this.options.jPath?r.toString():r,i=this.options.updateTag(e.tagname,o,e[":@"]);!1===i||("string"==typeof i?(e.tagname=i,t.addChild(e,n)):t.addChild(e,n))}function w(t,e,r){const n=this.options.processEntities;if(!n||!n.enabled)return t;if(n.allowedTags){const o=this.options.jPath?r.toString():r;if(!(Array.isArray(n.allowedTags)?n.allowedTags.includes(e):n.allowedTags(e,o)))return t}if(n.tagFilter){const o=this.options.jPath?r.toString():r;if(!n.tagFilter(e,o))return t}for(const e of Object.keys(this.docTypeEntities)){const r=this.docTypeEntities[e],o=t.match(r.regx);if(o){if(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions)throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);const e=t.length;if(t=t.replace(r.regx,r.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-e,this.currentExpandedLength>n.maxExpandedLength))throw new Error(`Total expanded content size exceeded: ${this.currentExpandedLength} > ${n.maxExpandedLength}`)}}for(const e of Object.keys(this.lastEntities)){const r=this.lastEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(const e of Object.keys(this.htmlEntities)){const r=this.htmlEntities[e],o=t.match(r.regex);if(o&&(this.entityExpansionCount+=o.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions))throw new Error(`Entity expansion limit exceeded: ${this.entityExpansionCount} > ${n.maxTotalExpansions}`);t=t.replace(r.regex,r.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)}function x(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function E(t,e){if(!t||0===t.length)return!1;for(let r=0;r"){let n,o="";for(let i=e;i",r,`${e} is not closed`);if(t.substring(r+2,i).trim()===e&&(o--,0===o))return{tagContent:t.substring(n,r),i};r=i}else if("?"===t[r+1])r=S(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=S(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=S(t,"]]>",r,"StopNode is not closed.")-2;else{const n=A(t,r,">");n&&((n&&n.tagName)===e&&"/"!==n.tagExp[n.tagExp.length-1]&&o++,r=n.closeIndex)}}function _(t,e,r){if(e&&"string"==typeof t){const e=t.trim();return"true"===e||"false"!==e&&(0,s.A)(t,r)}return(0,n.yQ)(t)?t:""}function T(t,e,r){const n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}function N(t,e,r,n){if(t){const n=t(e);r===e&&(r=n),e=n}return{tagName:e=j(e,n),tagExp:r}}function j(t,e){if(n.vl.includes(t))throw new Error(`[SECURITY] Invalid name: "${t}" is a reserved JavaScript keyword that could cause prototype pollution`);return n.q9.includes(t)?e.onDangerousProperty(t):t}},1912(t,e,r){"use strict";r.d(e,{A:()=>u});var n=r(60341),o=r(79781),i=r(35382),s=r(86301),a=r(13127);class u{constructor(t){this.externalEntities={},this.options=(0,n.D)(t)}parse(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});const r=(0,s.t)(t,e);if(!0!==r)throw Error(`${r.err.msg}:${r.err.line}:${r.err.col}`)}const r=new o.A(this.options);r.addExternalEntities(this.externalEntities);const n=r.parseXml(t);return this.options.preserveOrder||void 0===n?n:(0,i.A)(n,this.options,r.matcher)}addEntity(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '
'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e}static getMetaDataSymbol(){return a.A.getMetaDataSymbol()}}},35382(t,e,r){"use strict";r.d(e,{A:()=>i});const n=r(13127).A.getMetaDataSymbol();function o(t,e){if(!t||"object"!=typeof t)return{};if(!e)return t;const r={};for(const n in t)n.startsWith(e)?r[n.substring(e.length)]=t[n]:r[n]=t[n];return r}function i(t,e,r){return s(t,e,r)}function s(t,e,r){let i;const c={};for(let p=0;p0&&(c[e.textNodeName]=i):void 0!==i&&(c[e.textNodeName]=i),c}function a(t){const e=Object.keys(t);for(let t=0;to}),n="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");class o{constructor(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}add(t,e){"__proto__"===t&&(t="#__proto__"),this.child.push({[t]:e})}addChild(t,e){"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push({[t.tagname]:t.child,":@":t[":@"]}):this.child.push({[t.tagname]:t.child}),void 0!==e&&(this.child[this.child.length-1][n]={startIndex:e})}static getMetaDataSymbol(){return n}}},21657(t,e,r){"use strict";function n(...t){if(0===t.length)throw new Error("Failed creating sequence: No functions provided");return function(...e){let r=e;const n=this;for(;t.length>0;)r=[t.shift().apply(n,r)];return r[0]}}r.d(e,{K:()=>n})},19621(t,e,r){"use strict";r.d(e,{T:()=>a});var n=r(21657);const o="@@HOTPATCHER",i=()=>{};function s(t){return{original:t,methods:[t],final:!1}}class a{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=o}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(t){this.configuration.getEmptyAction=t}control(t,e=!1){if(!t||t.__type__!==o)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(t.configuration.registry).forEach(r=>{this.configuration.registry.hasOwnProperty(r)?e&&(this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])):this.configuration.registry[r]=Object.assign({},t.configuration.registry[r])}),t._configuration=this.configuration,this}execute(t,...e){return(this.get(t)||i)(...e)}get(t){const e=this.configuration.registry[t];if(!e)switch(this.getEmptyAction){case"null":return null;case"throw":throw new Error(`Failed handling method request: No method provided for override: ${t}`);default:throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`)}return(0,n.K)(...e.methods)}isPatched(t){return!!this.configuration.registry[t]}patch(t,e,r={}){const{chain:n=!1}=r;if(this.configuration.registry[t]&&this.configuration.registry[t].final)throw new Error(`Failed patching '${t}': Method marked as being final`);if("function"!=typeof e)throw new Error(`Failed patching '${t}': Provided method is not a function`);if(n)this.configuration.registry[t]?this.configuration.registry[t].methods.push(e):this.configuration.registry[t]=s(e);else if(this.isPatched(t)){const{original:r}=this.configuration.registry[t];this.configuration.registry[t]=Object.assign(s(e),{original:r})}else this.configuration.registry[t]=s(e);return this}patchInline(t,e,...r){return this.isPatched(t)||this.patch(t,e),this.execute(t,...r)}plugin(t,...e){return e.forEach(e=>{this.patch(t,e,{chain:!0})}),this}restore(t){if(!this.isPatched(t))throw new Error(`Failed restoring method: No method present for key: ${t}`);if("function"!=typeof this.configuration.registry[t].original)throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${t}`);return this.configuration.registry[t].methods=[this.configuration.registry[t].original],this}setFinal(t){if(!this.configuration.registry.hasOwnProperty(t))throw new Error(`Failed marking '${t}' as final: No method found for key`);return this.configuration.registry[t].final=!0,this}}},93028(t,e,r){"use strict";function n(t){if(!o(t))throw new Error("Parameter was not an error")}function o(t){return!!t&&"object"==typeof t&&"[object Error]"===(e=t,Object.prototype.toString.call(e))||t instanceof Error;var e}r.d(e,{b:()=>o,t:()=>n})},11163(t,e,r){"use strict";r.d(e,{z:()=>n});function n(){return"Layerr"}},42294(t,e,r){"use strict";r.d(e,{GU:()=>n.G});var n=r(17601)},17601(t,e,r){"use strict";r.d(e,{G:()=>s});var n=r(93028),o=r(11163),i=r(78049);class s extends Error{constructor(t,e){const r=[...arguments],{options:n,shortMessage:s}=(0,i.W)(r);let a=s;if(n.cause&&(a=`${a}: ${n.cause.message}`),super(a),this.message=a,n.name&&"string"==typeof n.name?this.name=n.name:this.name=(0,o.z)(),n.cause&&Object.defineProperty(this,"_cause",{value:n.cause}),Object.defineProperty(this,"_info",{value:{}}),n.info&&"object"==typeof n.info&&Object.assign(this._info,n.info),Error.captureStackTrace){const t=n.constructorOpt||this.constructor;Error.captureStackTrace(this,t)}}static cause(t){return(0,n.t)(t),t._cause&&(0,n.b)(t._cause)?t._cause:null}static fullStack(t){(0,n.t)(t);const e=s.cause(t);return e?`${t.stack}\ncaused by: ${s.fullStack(e)}`:t.stack??""}static info(t){(0,n.t)(t);const e={},r=s.cause(t);return r&&Object.assign(e,s.info(r)),t._info&&Object.assign(e,t._info),e}toString(){let t=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(t=`${t}: ${this.message}`),t}}},78049(t,e,r){"use strict";r.d(e,{W:()=>o});var n=r(93028);function o(t){let e,r="";if(0===t.length)e={};else if((0,n.b)(t[0]))e={cause:t[0]},r=t.slice(1).join(" ")||"";else if(t[0]&&"object"==typeof t[0])e=Object.assign({},t[0]),r=t.slice(1).join(" ")||"";else{if("string"!=typeof t[0])throw new Error("Invalid arguments passed to Layerr");e={},r=r=t.join(" ")||""}return{options:e,shortMessage:r}}},87818(t,e,r){"use strict";r.d(e,{A:()=>n});class n{constructor(t,e={}){this.pattern=t,this.separator=e.separator||".",this.segments=this._parse(t),this._hasDeepWildcard=this.segments.some(t=>"deep-wildcard"===t.type),this._hasAttributeCondition=this.segments.some(t=>void 0!==t.attrName),this._hasPositionSelector=this.segments.some(t=>void 0!==t.position)}_parse(t){const e=[];let r=0,n="";for(;rn});class n{constructor(t={}){this.separator=t.separator||".",this.path=[],this.siblingStacks=[]}push(t,e=null,r=null){this.path.length>0&&(this.path[this.path.length-1].values=void 0);const n=this.path.length;this.siblingStacks[n]||(this.siblingStacks[n]=new Map);const o=this.siblingStacks[n],i=r?`${r}:${t}`:t,s=o.get(i)||0;let a=0;for(const t of o.values())a+=t;o.set(i,s+1);const u={tag:t,position:a,counter:s};null!=r&&(u.namespace=r),null!=e&&(u.values=e),this.path.push(u)}pop(){if(0===this.path.length)return;const t=this.path.pop();return this.siblingStacks.length>this.path.length+1&&(this.siblingStacks.length=this.path.length+1),t}updateCurrent(t){if(this.path.length>0){const e=this.path[this.path.length-1];null!=t&&(e.values=t)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(t){if(0===this.path.length)return;const e=this.path[this.path.length-1];return e.values?.[t]}hasAttr(t){if(0===this.path.length)return!1;const e=this.path[this.path.length-1];return void 0!==e.values&&t in e.values}getPosition(){return 0===this.path.length?-1:this.path[this.path.length-1].position??0}getCounter(){return 0===this.path.length?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(t,e=!0){const r=t||this.separator;return this.path.map(t=>e&&t.namespace?`${t.namespace}:${t.tag}`:t.tag).join(r)}toArray(){return this.path.map(t=>t.tag)}reset(){this.path=[],this.siblingStacks=[]}matches(t){const e=t.segments;return 0!==e.length&&(t.hasDeepWildcard()?this._matchWithDeepWildcard(e):this._matchSimple(e))}_matchSimple(t){if(this.path.length!==t.length)return!1;for(let e=0;e=0&&e>=0;){const n=t[r];if("deep-wildcard"===n.type){if(r--,r<0)return!0;const n=t[r];let o=!1;for(let t=e;t>=0;t--){const i=t===this.path.length-1;if(this._matchSegment(n,this.path[t],i)){e=t-1,r--,o=!0;break}}if(!o)return!1}else{const t=e===this.path.length-1;if(!this._matchSegment(n,this.path[e],t))return!1;e--,r--}}return r<0}_matchSegment(t,e,r){if("*"!==t.tag&&t.tag!==e.tag)return!1;if(void 0!==t.namespace&&"*"!==t.namespace&&t.namespace!==e.namespace)return!1;if(void 0!==t.attrName){if(!r)return!1;if(!e.values||!(t.attrName in e.values))return!1;if(void 0!==t.attrValue){const r=e.values[t.attrName];if(String(r)!==String(t.attrValue))return!1}}if(void 0!==t.position){if(!r)return!1;const n=e.counter??0;if("first"===t.position&&0!==n)return!1;if("odd"===t.position&&n%2!=1)return!1;if("even"===t.position&&n%2!=0)return!1;if("nth"===t.position&&n!==t.positionValue)return!1}return!0}snapshot(){return{path:this.path.map(t=>({...t})),siblingStacks:this.siblingStacks.map(t=>new Map(t))}}restore(t){this.path=t.path.map(t=>({...t})),this.siblingStacks=t.siblingStacks.map(t=>new Map(t))}}},60524(t,e,r){"use strict";r.d(e,{A:()=>s});const n=/^[-+]?0x[a-fA-F0-9]+$/,o=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,i={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0,infinity:"original"};function s(t,e={}){if(e=Object.assign({},i,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&n.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(isFinite(r)){if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(a);if(n){let o=n[1]||"";const i=-1===n[3].indexOf("e")?"E":"e",s=n[2],a=o?t[s.length+1]===i:t[s.length]===i;return s.length>1&&a?t:(1!==s.length||!n[3].startsWith(`.${i}`)&&n[3][0]!==i)&&s.length>0?r.leadingZeros&&!a?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const n=o.exec(r);if(n){const o=n[1]||"",i=n[2];let a=(s=n[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substring(0,s.length-1)),s):s;const u=o?"."===t[i.length+1]:"."===t[i.length];if(!e.leadingZeros&&(i.length>1||1===i.length&&!u))return t;{const n=Number(r),s=String(n);if(0===n)return n;if(-1!==s.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===s||s===a||s===`${o}${a}`?n:t;let u=i?a:r;return i?u===s||o+u===s?n:t:u===s||u===o+s?n:t}}return t}}var s;return function(t,e,r){const n=e===1/0;switch(r.infinity.toLowerCase()){case"null":return null;case"infinity":return e;case"string":return n?"Infinity":"-Infinity";default:return t}}(t,Number(r),e)}const a=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/},406(t,e,r){"use strict";function n(){return function(t){var e=[];if(0===t.length)return"";if("string"!=typeof t[0])throw new TypeError("Url must be a string. Received "+t[0]);if(t[0].match(/^[^/:]+:\/*$/)&&t.length>1){var r=t.shift();t[0]=r+t[0]}t[0].match(/^file:\/\/\//)?t[0]=t[0].replace(/^([^/:]+):\/*/,"$1:///"):t[0]=t[0].replace(/^([^/:]+):\/*/,"$1://");for(var n=0;n0&&(o=o.replace(/^[\/]+/,"")),o=n0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}r.d(e,{A:()=>n})},19396(t,e,r){"use strict";r.d(e,{V:()=>o});var n=r(57221);function o(t,e){return`Basic ${(0,n.nk)(`${t}:${e}`)}`}},90036(t,e,r){"use strict";r.d(e,{C8:()=>i,Wb:()=>a,XX:()=>s,oD:()=>u});var n=r(83503),o=r(35658);function i(t,e,r){return{username:t,password:e,ha1:r,nc:0,algorithm:"md5",hasDigestAuth:!1}}function s(t,e){const r=t.url.replace("//",""),i=-1==r.indexOf("/")?"/":r.slice(r.indexOf("/")),s=t.method?t.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(e.qop)&&"auth",u=`00000000${e.nc}`.slice(-8),l=(0,o.M)(e.algorithm,e.username,e.realm,e.password,e.nonce,e.cnonce,e.ha1),c=n(`${s}:${i}`),p=n(a?`${l}:${e.nonce}:${u}:${e.cnonce}:${a}:${c}`:`${l}:${e.nonce}:${c}`),f={username:e.username,realm:e.realm,nonce:e.nonce,uri:i,qop:a,response:p,nc:u,cnonce:e.cnonce,algorithm:e.algorithm,opaque:e.opaque},h=[];for(const t in f)f[t]&&("qop"===t||"nc"===t||"algorithm"===t?h.push(`${t}=${f[t]}`):h.push(`${t}="${f[t]}"`));return`Digest ${h.join(", ")}`}function a(t,e){if(!u(t))return!1;const r=/([a-z0-9_-]+)=(?:"([^"]+)"|([a-z0-9_-]+))/gi;for(;;){const n=t.headers&&t.headers.get("www-authenticate")||"",o=r.exec(n);if(!o)break;e[o[1]]=o[2]||o[3]}return e.nc+=1,e.cnonce=function(){let t="";for(let e=0;e<32;++e)t=`${t}${"abcdef0123456789"[Math.floor(16*Math.random())]}`;return t}(),!0}function u(t){return"digest"===(t.headers&&t.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}},36942(t,e,r){"use strict";r.d(e,{e:()=>u});var n=r(42294),o=r(90036),i=r(19396),s=r(89793),a=r(38374);function u(t,e,r,u,l){switch(t.authType){case a.hT.Auto:e&&r&&(t.headers.Authorization=(0,i.V)(e,r));break;case a.hT.Digest:t.digest=(0,o.C8)(e,r,l);break;case a.hT.None:break;case a.hT.Password:t.headers.Authorization=(0,i.V)(e,r);break;case a.hT.Token:t.headers.Authorization=(0,s.O)(u);break;default:throw new n.GU({info:{code:a.O4.InvalidAuthType}},`Invalid auth type: ${t.authType}`)}}},89793(t,e,r){"use strict";function n(t){return`${t.token_type} ${t.access_token}`}r.d(e,{O:()=>n})},47397(t,e,r){"use strict";r.d(e,{m:()=>i});const n="function"==typeof ArrayBuffer,{toString:o}=Object.prototype;function i(t){return n&&(t instanceof ArrayBuffer||"[object ArrayBuffer]"===o.call(t))}},53850(t,e,r){"use strict";function n(t){return null!=t&&null!=t.constructor&&"function"==typeof t.constructor.isBuffer&&t.constructor.isBuffer(t)}r.d(e,{P:()=>n})},22921(t,e,r){"use strict";function n(){return"string"==typeof TARGET&&"react-native"===TARGET}function o(){return"string"==typeof TARGET&&"web"===TARGET}r.d(e,{H:()=>o,l:()=>n})},84819(t,e,r){"use strict";r.d(e,{G:()=>i});var n=r(19621);let o=null;function i(){return o||(o=new n.T),o}},84997(t,e,r){"use strict";r.d(e,{U:()=>A});var n=r(85394),o=r(36942),i=r(50335),s=r(28161),a=r(68476),u=r(76374),l=r(77101),c=r(75892),p=r(74419),f=r(17658),h=r(39615),d=r(86772),g=r(84830),y=r(80156),m=r(77087),b=r(30047),v=r(81838),w=r(10524),x=r(90176),E=r(38374);const S="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function A(t,e={}){const{authType:r=null,remoteBasePath:A,contactHref:O=S,ha1:_,headers:T={},httpAgent:N,httpsAgent:j,password:P,token:R,username:k,withCredentials:C}=e;let I=r;I||(I=k||P?E.hT.Password:E.hT.None);const M={authType:I,remoteBasePath:A,contactHref:O,ha1:_,headers:Object.assign({},T),httpAgent:N,httpsAgent:j,password:P,parsing:{attributeNamePrefix:e.attributeNamePrefix??"@",attributeParsers:[],tagParsers:[x.jp]},remotePath:(0,n.wB)(t),remoteURL:t,token:R,username:k,withCredentials:C};return(0,o.e)(M,k,P,R,_),{copyFile:(t,e,r)=>(0,i.m)(M,t,e,r),createDirectory:(t,e)=>(0,s.c)(M,t,e),createReadStream:(t,e)=>(0,a.V)(M,t,e),createWriteStream:(t,e,r)=>(0,a.o)(M,t,e,r),customRequest:(t,e)=>(0,u.J)(M,t,e),deleteFile:(t,e)=>(0,l.W)(M,t,e),exists:(t,e)=>(0,c.t)(M,t,e),getDirectoryContents:(t,e)=>(0,p.A)(M,t,e),getFileContents:(t,e)=>(0,f.F)(M,t,e),getFileDownloadLink:t=>(0,f.b)(M,t),getFileUploadLink:t=>(0,b.w)(M,t),getHeaders:()=>Object.assign({},M.headers),getQuota:t=>(0,d.T)(M,t),lock:(t,e)=>(0,h.s)(M,t,e),moveFile:(t,e,r)=>(0,m.m)(M,t,e,r),putFileContents:(t,e,r)=>(0,b.g)(M,t,e,r),partialUpdateFileContents:(t,e,r,n,o)=>(0,v.V)(M,t,e,r,n,o),getDAVCompliance:t=>(0,w.p)(M,t),search:(t,e)=>(0,y.T)(M,t,e),setHeaders:t=>{M.headers=Object.assign({},t)},stat:(t,e)=>(0,g.z)(M,t,e),unlock:(t,e,r)=>(0,h.T)(M,t,e,r),registerAttributeParser:t=>{M.parsing.attributeParsers.push(t)},registerTagParser:t=>{M.parsing.tagParsers.push(t)}}}},82415(t,e,r){"use strict";r.d(e,{UU:()=>n.U,h4:()=>o.h4});var n=r(84997),o=(r(38374),r(90176));r(71922),r(5e3)},50335(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"COPY",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T",Depth:a.shallow?"0":"infinity"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},28161(t,e,r){"use strict";r.d(e,{c:()=>u});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3),a=r(84830);async function u(t,e,r={}){if(!0===r.recursive)return async function(t,e,r={}){const n=(0,o.xi)((0,o.qb)(e));n.sort((t,e)=>t.length>e.length?1:e.length>t.length?-1:0);let i=!1;for(const o of n)if(i)await u(t,o,{...r,recursive:!1});else try{if("directory"!==(await(0,a.z)(t,o)).type)throw new Error(`Path includes a file: ${e}`)}catch(e){if(404!==e.status)throw e;i=!0,await u(t,o,{...r,recursive:!1})}}(t,e,r);const l=(0,i.H)({url:(0,n.oq)(t.remoteURL,(p=(0,o.O0)(e),p.endsWith("/")?p:p+"/")),method:"MKCOL"},t,r),c=await(0,i.E)(l,t);var p;(0,s.HT)(t,c)}},68476(t,e,r){"use strict";r.d(e,{V:()=>l,o:()=>c});var n=r(88310),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);const u=()=>{};function l(t,e,r={}){const u=new(0,n.PassThrough);return async function(t,e,r={}){const n={};if("object"==typeof r.range&&"number"==typeof r.range.start){let t=`bytes=${r.range.start}-`;"number"==typeof r.range.end&&(t=`${t}${r.range.end}`),n.Range=t}const u=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:n},t,r),l=await(0,s.E)(u,t);if((0,a.HT)(t,l),n.Range&&206!==l.status){const t=new Error(`Invalid response code for partial request: ${l.status}`);throw t.status=l.status,t}return r.callback&&setTimeout(()=>{r.callback(l)},0),l.body}(t,e,r).then(t=>{t.pipe(u)}).catch(t=>{u.emit("error",t)}),u}function c(t,e,r={},l=u){const c=new(0,n.PassThrough),p={};!1===r.overwrite&&(p["If-None-Match"]="*");const f=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:p,data:c,maxRedirects:0},t,r);return(0,s.E)(f,t).then(e=>(0,a.HT)(t,e)).then(t=>{setTimeout(()=>{l(t)},0)}).catch(t=>{c.emit("error",t)}),c}},76374(t,e,r){"use strict";r.d(e,{J:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r){r.url||(r.url=(0,n.oq)(t.remoteURL,(0,o.O0)(e)));const a=(0,i.H)(r,t,{}),u=await(0,i.E)(a,t);return(0,s.HT)(t,u),u}},77101(t,e,r){"use strict";r.d(e,{W:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"DELETE"},t,r),u=await(0,i.E)(a,t);(0,s.HT)(t,u)}},74419(t,e,r){"use strict";r.d(e,{A:()=>l});var n=r(12692),o=r(85394),i=r(36236),s=r(90176),a=r(89062),u=r(5e3);async function l(t,e,r={}){const l=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:r.deep?"infinity":"1"}},t,r),c=await(0,a.E)(l,t);(0,u.HT)(t,c);const p=await c.text();if(!p)throw new Error("Failed parsing directory contents: Empty response");const f=await(0,s.h4)(p,t.parsing),h=(0,i.dU)(e);let d=function(t,e,r,a=!1,u=!1){const l=n.join(e,"/"),{multistatus:{response:c}}=t,p=c.map(t=>{const e=(0,o.S8)(t.href),{propstat:{prop:r}}=t,u="/"===l?decodeURIComponent((0,i.qb)(e)):(0,i.qb)(n.relative(decodeURIComponent(l),decodeURIComponent(e)));return(0,s.ch)(r,u,a)});return u?p:p.filter(t=>t.basename&&("file"===t.type||t.filename!==r.replace(/\/$/,"")))}(f,(0,i.dU)(t.remoteBasePath||t.remotePath),h,r.details,r.includeSelf);return r.glob&&(d=(0,u.eh)(d,r.glob)),(0,u.hq)(c,d,r.details)}},75892(t,e,r){"use strict";r.d(e,{t:()=>o});var n=r(84830);async function o(t,e,r={}){try{return await(0,n.z)(t,e,r),!0}catch(t){if(404===t.status)return!1;throw t}}},10524(t,e,r){"use strict";r.d(e,{p:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r={}){const a=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"OPTIONS"},t,r),u=await(0,i.E)(a,t);try{(0,s.HT)(t,u)}catch(t){throw t}return{compliance:(u.headers.get("DAV")??"").split(",").map(t=>t.trim()),server:u.headers.get("Server")??""}}},17658(t,e,r){"use strict";r.d(e,{F:()=>h,b:()=>d});var n=r(42294),o=r(85394),i=r(36236),s=r(57221),a=r(22921),u=r(89062),l=r(5e3),c=r(38374),p=r(62045).hp;const f=t=>t;async function h(t,e,r={}){const{format:s="binary"}=r;if("binary"!==s&&"text"!==s)throw new n.GU({info:{code:c.O4.InvalidOutputFormat}},`Invalid output format: ${s}`);return"text"===s?async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[f]},t,r),s=await(0,u.E)(n,t);(0,l.HT)(t,s);const a=await s.text();return(0,l.hq)(s,a,r.details)}(t,e,r):async function(t,e,r={}){const n=(0,u.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"GET"},t,r),s=await(0,u.E)(n,t);let c;return(0,l.HT)(t,s),c=(0,a.H)()||(0,a.l)()?await s.arrayBuffer():p.from(await s.arrayBuffer()),(0,l.hq)(s,c,r.details)}(t,e,r)}function d(t,e){let r=(0,o.oq)(t.remoteURL,(0,i.O0)(e));const a=/^https:/i.test(r)?"https":"http";switch(t.authType){case c.hT.None:break;case c.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,s.Ey)(e);r=r.replace(/^https?:\/\//,`${a}://${n}@`);break}default:throw new n.GU({info:{code:c.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},86772(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(89062),o=r(5e3),i=r(90176),s=r(85394),a=r(7815);async function u(t,e={}){const r=e.path||"/",u=(0,n.H)({url:(0,s.oq)(t.remoteURL,r),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,e),l=await(0,n.E)(u,t);(0,o.HT)(t,l);const c=await l.text(),p=await(0,i.h4)(c,t.parsing),f=(0,a.K)(p);return(0,o.hq)(l,f,e.details)}},39615(t,e,r){"use strict";r.d(e,{T:()=>p,s:()=>c});var n=r(26602),o=r(85394),i=r(36236),s=r(27562),a=r(89062),u=r(5e3);const l="Infinite, Second-4100000000";async function c(t,e,r={}){const{refreshToken:c,timeout:p=l}=r,f={Accept:"text/plain,application/xml",Timeout:p};c&&(f.If=c);const h=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"LOCK",headers:f,data:(0,s.A)(t.contactHref)},t,r),d=await(0,a.E)(h,t);(0,u.HT)(t,d);const g=await d.text(),y=(0,s.o)(g),m=n.get(y,"prop.lockdiscovery.activelock.locktoken.href"),b=n.get(y,"prop.lockdiscovery.activelock.timeout");if(!m)throw(0,u.YQ)(d,"No lock token received: ");return{token:m,serverTimeout:b}}async function p(t,e,r,n={}){const s=(0,a.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"UNLOCK",headers:{"Lock-Token":r}},t,n),l=await(0,a.E)(s,t);if((0,u.HT)(t,l),204!==l.status&&200!==l.status)throw(0,u.YQ)(l)}},77087(t,e,r){"use strict";r.d(e,{m:()=>a});var n=r(85394),o=r(36236),i=r(89062),s=r(5e3);async function a(t,e,r,a={}){const u=(0,i.H)({url:(0,n.oq)(t.remoteURL,(0,o.O0)(e)),method:"MOVE",headers:{Destination:(0,n.oq)(t.remoteURL,(0,o.O0)(r)),Overwrite:!1===a.overwrite?"F":"T"}},t,a),l=await(0,i.E)(u,t);(0,s.HT)(t,l)}},81838(t,e,r){"use strict";r.d(e,{V:()=>c});var n=r(42294),o=r(85394),i=r(36236),s=r(89062),a=r(5e3),u=r(10524),l=r(38374);async function c(t,e,r,c,p,f={}){const h=await(0,u.p)(t,e,f);if(h.compliance.includes("sabredav-partialupdate"))return await async function(t,e,r,u,c,p={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const f={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(u-r+1),"X-Update-Range":`bytes=${r}-${u}`},h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PATCH",headers:f,data:c},t,p),d=await(0,s.E)(h,t);(0,a.HT)(t,d)}(t,e,r,c,p,f);if(h.server.includes("Apache")&&h.compliance.includes(""))return await async function(t,e,r,u,c,p={}){if(r>u||r<0)throw new n.GU({info:{code:l.O4.InvalidUpdateRange}},`Invalid update range ${r} for partial update`);const f={"Content-Type":"application/octet-stream","Content-Length":""+(u-r+1),"Content-Range":`bytes ${r}-${u}/*`},h=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PUT",headers:f,data:c},t,p),d=await(0,s.E)(h,t);(0,a.HT)(t,d)}(t,e,r,c,p,f);throw new n.GU({info:{code:l.O4.NotSupported}},"Not supported")}},30047(t,e,r){"use strict";r.d(e,{g:()=>h,w:()=>d});var n=r(42294),o=r(88310),i=r(57221),s=r(85394),a=r(36236),u=r(71922),l=r(22921),c=r(89062),p=r(5e3),f=r(38374);async function h(t,e,r,n={}){const{contentLength:i=!0,overwrite:f=!0}=n,h={"Content-Type":"application/octet-stream"};!(0,l.H)()&&!(0,l.l)()&&void 0!==o&&void 0!==o?.Readable&&r instanceof o.Readable||!1===i||(h["Content-Length"]="number"==typeof i?`${i}`:`${(0,u.J)(r)}`),f||(h["If-None-Match"]="*");const d=(0,c.H)({url:(0,s.oq)(t.remoteURL,(0,a.O0)(e)),method:"PUT",headers:h,data:r},t,n),g=await(0,c.E)(d,t);try{(0,p.HT)(t,g)}catch(t){const e=t;if(412!==e.status||f)throw e;return!1}return!0}function d(t,e){let r=`${(0,s.oq)(t.remoteURL,(0,a.O0)(e))}?Content-Type=application/octet-stream`;const o=/^https:/i.test(r)?"https":"http";switch(t.authType){case f.hT.None:break;case f.hT.Password:{const e=t.headers.Authorization.replace(/^Basic /i,"").trim(),n=(0,i.Ey)(e);r=r.replace(/^https?:\/\//,`${o}://${n}@`);break}default:throw new n.GU({info:{code:f.O4.LinkUnsupportedAuthType}},`Unsupported auth type for file link: ${t.authType}`)}return r}},80156(t,e,r){"use strict";r.d(e,{T:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":t.headers["Content-Type"]||"application/xml; charset=utf-8"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const p=await c.text(),f=await(0,n.h4)(p,t.parsing),h=(0,n.KA)(f,e,u);return(0,a.hq)(c,h,u)}},84830(t,e,r){"use strict";r.d(e,{z:()=>u});var n=r(90176),o=r(85394),i=r(36236),s=r(89062),a=r(5e3);async function u(t,e,r={}){const{details:u=!1}=r,l=(0,s.H)({url:(0,o.oq)(t.remoteURL,(0,i.O0)(e)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},t,r),c=await(0,s.E)(l,t);(0,a.HT)(t,c);const p=await c.text(),f=await(0,n.h4)(p,t.parsing),h=(0,n.ky)(f,e,u);return(0,a.hq)(c,h,u)}},89062(t,e,r){"use strict";r.d(e,{E:()=>g,H:()=>d});var n=r(11568),o=r(11083),i=r(97192),s=r(84819),a=r(22921),u=r(90036),l=r(79275),c=r(79605),p=r(39299),f=r(38374),h=r(36942);function d(t,e,r){const n=(0,l.q)(t);return n.headers=(0,c.l)(e.headers,n.headers||{},r.headers||{}),void 0!==r.data&&(n.data=r.data),r.signal&&(n.signal=r.signal),e.httpAgent&&(n.httpAgent=e.httpAgent),e.httpsAgent&&(n.httpsAgent=e.httpsAgent),e.digest&&(n._digest=e.digest),"boolean"==typeof e.withCredentials&&(n.withCredentials=e.withCredentials),n}async function g(t,e){return e.authType===f.hT.Auto?async function(t,e){const r=await m(t);return r.ok?(e.authType=f.hT.Password,r):401==r.status&&(0,u.oD)(r)?(e.authType=f.hT.Digest,(0,h.e)(e,e.username,e.password,void 0,void 0),t._digest=e.digest,y(t)):r}(t,e):t._digest?y(t):m(t)}async function y(t){const e=t._digest;delete t._digest,e.hasDigestAuth&&(t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}}));const r=await m(t);if(401==r.status){if(e.hasDigestAuth=(0,u.Wb)(r,e),e.hasDigestAuth){t=(0,l.h)(t,{headers:{Authorization:(0,u.XX)(t,e)}});const r=await m(t);return 401==r.status?e.hasDigestAuth=!1:e.nc++,r}}else e.nc++;return r}function m(t){const e=(0,s.G)();return e.patchInline("request",t=>e.patchInline("fetch",i.hd,t.url,function(t){let e={};const r={method:t.method};if(t.headers&&(e=(0,c.l)(e,t.headers)),void 0!==t.data){const[n,o]=(0,p.P)(t.data);r.body=n,e=(0,c.l)(e,o)}return t.signal&&(r.signal=t.signal),t.withCredentials&&(r.credentials="include"),(0,a.H)()||(0,a.l)()||(t.httpAgent||t.httpsAgent)&&(r.agent=e=>"http:"===e.protocol?t.httpAgent||new n.Agent:t.httpsAgent||new o.Agent),r.headers=e,r}(t)),t)}},5e3(t,e,r){"use strict";r.d(e,{HT:()=>s,YQ:()=>i,eh:()=>a,hq:()=>u});var n=r(44916),o=r(79605);function i(t,e=""){const r=new Error(`${e}Invalid response: ${t.status} ${t.statusText}`);return r.status=t.status,r.response=t,r}function s(t,e){const{status:r}=e;if(401===r&&t.digest)return e;if(r>=400)throw i(e);return e}function a(t,e){return t.filter(t=>(0,n.xF)(t.filename,e,{matchBase:!0}))}function u(t,e,r=!1){return r?{data:e,headers:t.headers?(0,o.N)(t.headers):{},status:t.status,statusText:t.statusText}:e}},39299(t,e,r){"use strict";r.d(e,{P:()=>a});var n=r(88310),o=r(47397),i=r(53850),s=r(22921);function a(t){if(!(0,s.H)()&&!(0,s.l)()&&t instanceof n.Readable)return[t,{}];if("string"==typeof t)return[t,{}];if((0,i.P)(t))return[t,{}];if((0,o.m)(t))return[t,{}];if(t&&"object"==typeof t)return[JSON.stringify(t),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof t)}},35658(t,e,r){"use strict";r.d(e,{M:()=>o});var n=r(83503);function o(t,e,r,o,i,s,a){const u=a||n(`${e}:${r}:${o}`);return t&&"md5-sess"===t.toLowerCase()?n(`${u}:${i}:${s}`):u}},90176(t,e,r){"use strict";r.d(e,{KA:()=>h,ch:()=>p,h4:()=>c,i5:()=>d,jp:()=>u,ky:()=>f});var n,o=r(12692),i=r(1912),s=r(26602),a=r(36236);function u(t,e){if(!t.endsWith("propstat.prop.displayname"))return e}function l(t,e,r=n.Original){const o=s.get(t,e);return"array"===r&&!1===Array.isArray(o)?[o]:"object"===r&&Array.isArray(o)?o[0]:o}function c(t,e){return e=e??{attributeNamePrefix:"@",attributeParsers:[],tagParsers:[u]},new Promise(r=>{r(function(t){const{multistatus:e}=t;if(""===e)return{multistatus:{response:[]}};if(!e)throw new Error("Invalid response: No root multistatus found");const r={multistatus:Array.isArray(e)?e[0]:e};return s.set(r,"multistatus.response",l(r,"multistatus.response",n.Array)),s.set(r,"multistatus.response",s.get(r,"multistatus.response").map(t=>function(t){const e=Object.assign({},t);return e.status?s.set(e,"status",l(e,"status",n.Object)):(s.set(e,"propstat",l(e,"propstat",n.Object)),s.set(e,"propstat.prop",l(e,"propstat.prop",n.Object))),e}(t))),r}(function({attributeNamePrefix:t,attributeParsers:e,tagParsers:r}){return new i.A({allowBooleanAttributes:!0,attributeNamePrefix:t,textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor(t,r,n){for(const t of e)try{const e=t(n,r);if(e!==r)return e}catch(t){}return r},tagValueProcessor(t,e,n){for(const t of r)try{const r=t(n,e);if(r!==e)return r}catch(t){}return e}})}(e).parse(t)))})}function p(t,e,r=!1){const{getlastmodified:n=null,getcontentlength:i="0",resourcetype:s=null,getcontenttype:a=null,getetag:u=null}=t,l=s&&"object"==typeof s&&void 0!==s.collection?"directory":"file",c={filename:e,basename:o.basename(e),lastmod:n,size:parseInt(i,10),type:l,etag:"string"==typeof u?u.replace(/"/g,""):null};return"file"===l&&(c.mime=a&&"string"==typeof a?a.split(";")[0]:""),r&&(void 0!==t.displayname&&(t.displayname=String(t.displayname)),c.props=t),c}function f(t,e,r=!1){let n=null;try{t.multistatus.response[0].propstat&&(n=t.multistatus.response[0])}catch(t){}if(!n)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=n,[s,u,l]=i.split(" ",3),c=parseInt(u,10);if(c>=400){const t=new Error(`Invalid response: ${c} ${l}`);throw t.status=c,t}return p(o,(0,a.qb)(e),r)}function h(t,e,r){const n={truncated:!1,results:[]};return n.truncated=t.multistatus.response.some(t=>"507"===(t.status||t.propstat?.status).split(" ",3)?.[1]&&t.href.replace(/\/$/,"").endsWith((0,a.O0)(e).replace(/\/$/,""))),t.multistatus.response.forEach(t=>{if(void 0===t.propstat)return;const e=t.href.split("/").map(decodeURIComponent).join("/");n.results.push(p(t.propstat.prop,e,r))}),n}function d(t){switch(String(t)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(t),10)}}!function(t){t.Array="array",t.Object="object",t.Original="original"}(n||(n={}))},57221(t,e,r){"use strict";r.d(e,{Ey:()=>o,nk:()=>i});var n=r(85914);function o(t){return n.decode(t)}function i(t){return n.encode(t)}r(15723)},79605(t,e,r){"use strict";function n(t){const e={};for(const r of t.keys())e[r]=t.get(r);return e}function o(...t){if(0===t.length)return{};const e={};return t.reduce((t,r)=>(Object.keys(r).forEach(n=>{const o=n.toLowerCase();e.hasOwnProperty(o)?t[e[o]]=r[n]:(e[o]=n,t[n]=r[n])}),t),{})}r.d(e,{N:()=>n,l:()=>o})},79275(t,e,r){"use strict";function n(t){return function(t){if("object"!=typeof t||null===t||"[object Object]"!=Object.prototype.toString.call(t))return!1;if(null===Object.getPrototypeOf(t))return!0;let e=t;for(;null!==Object.getPrototypeOf(e);)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}(t)?Object.assign({},t):Object.setPrototypeOf(Object.assign({},t),Object.getPrototypeOf(t))}function o(...t){let e=null,r=[...t];for(;r.length>0;){const t=r.shift();e=e?i(e,t):n(t)}return e}function i(t,e){const r=n(t);return Object.keys(e).forEach(t=>{r.hasOwnProperty(t)?Array.isArray(e[t])?r[t]=Array.isArray(r[t])?[...r[t],...e[t]]:[...e[t]]:"object"==typeof e[t]&&e[t]?r[t]="object"==typeof r[t]&&r[t]?i(r[t],e[t]):n(e[t]):r[t]=e[t]:r[t]=e[t]}),r}r.d(e,{h:()=>o,q:()=>n})},36236(t,e,r){"use strict";r.d(e,{O0:()=>a,dU:()=>l,qb:()=>c,xi:()=>u});var n=r(42294),o=r(12692);const i="__PATH_SEPARATOR_POSIX__",s="__PATH_SEPARATOR_WINDOWS__";function a(t){try{const e=t.replace(/\//g,i).replace(/\\\\/g,s);return encodeURIComponent(e).split(s).join("\\\\").split(i).join("/")}catch(t){throw new n.GU(t,"Failed encoding path")}}function u(t){if(!t||"/"===t)return[];let e=t;const r=[];do{r.push(e),e=o.dirname(e)}while(e&&"/"!==e);return r}function l(t){return t.startsWith("/")?t:"/"+t}function c(t){let e=t;return"/"!==e[0]&&(e="/"+e),/^.+\/$/.test(e)&&(e=e.substr(0,e.length-1)),e}},7815(t,e,r){"use strict";r.d(e,{K:()=>o});var n=r(90176);function o(t){try{const[e]=t.multistatus.response,{propstat:{prop:{"quota-used-bytes":r,"quota-available-bytes":o}}}=e;return void 0!==r&&void 0!==o?{used:parseInt(String(r),10),available:(0,n.i5)(o)}:null}catch(t){}return null}},71922(t,e,r){"use strict";r.d(e,{J:()=>u});var n=r(42294),o=r(67691),i=r(47397),s=r(53850),a=r(38374);function u(t){if((0,i.m)(t))return t.byteLength;if((0,s.P)(t))return t.length;if("string"==typeof t)return(0,o.d)(t);throw new n.GU({info:{code:a.O4.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}},85394(t,e,r){"use strict";r.d(e,{S8:()=>l,oq:()=>u,wB:()=>a});var n=r(61160),o=r(42294),i=r(406),s=r(36236);function a(t){let e=new n(t).pathname;return e.length<=0&&(e="/"),(0,s.qb)(e)}function u(...t){return(0,i.A)(t.reduce((t,e,r)=>((0===r||"/"!==e||"/"===e&&"/"!==t[t.length-1])&&t.push(e),t),[]))}function l(t){try{return t.replace(/^https?:\/\/[^\/]+/,"")}catch(t){throw new o.GU(t,"Failed normalising HREF")}}},27562(t,e,r){"use strict";r.d(e,{A:()=>i,o:()=>a});var n=r(1912),o=r(99111);function i(t){return new o.A({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(s({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:t}}},"d"))}function s(t,e){const r={...t};for(const t in r)r.hasOwnProperty(t)&&(r[t]&&"object"==typeof r[t]&&-1===t.indexOf(":")?(r[`${e}:${t}`]=s(r[t],e),delete r[t]):!1===/^@_/.test(t)&&(r[`${e}:${t}`]=r[t],delete r[t]));return r}function a(t){return new n.A({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(t)}},38374(t,e,r){"use strict";var n,o;r.d(e,{O4:()=>o,hT:()=>n}),r(97192),function(t){t.Auto="auto",t.Digest="digest",t.None="none",t.Password="password",t.Token="token"}(n||(n={})),function(t){t.DataTypeNoLength="data-type-no-length",t.InvalidAuthType="invalid-auth-type",t.InvalidOutputFormat="invalid-output-format",t.LinkUnsupportedAuthType="link-unsupported-auth",t.InvalidUpdateRange="invalid-update-range",t.NotSupported="not-supported"}(o||(o={}))},27341(t,e,r){"use strict";new Map([[0,65533],[128,8364],[130,8218],[131,402],[132,8222],[133,8230],[134,8224],[135,8225],[136,710],[137,8240],[138,352],[139,8249],[140,338],[142,381],[145,8216],[146,8217],[147,8220],[148,8221],[149,8226],[150,8211],[151,8212],[152,732],[153,8482],[154,353],[155,8250],[156,339],[158,382],[159,376]]),String.fromCodePoint},26549(t,e,r){"use strict";var n,o,i,s;r(75780),r(92148),r(27341),function(t){t[t.NUM=35]="NUM",t[t.SEMI=59]="SEMI",t[t.EQUALS=61]="EQUALS",t[t.ZERO=48]="ZERO",t[t.NINE=57]="NINE",t[t.LOWER_A=97]="LOWER_A",t[t.LOWER_F=102]="LOWER_F",t[t.LOWER_X=120]="LOWER_X",t[t.LOWER_Z=122]="LOWER_Z",t[t.UPPER_A=65]="UPPER_A",t[t.UPPER_F=70]="UPPER_F",t[t.UPPER_Z=90]="UPPER_Z"}(n||(n={})),function(t){t[t.VALUE_LENGTH=49152]="VALUE_LENGTH",t[t.BRANCH_LENGTH=16256]="BRANCH_LENGTH",t[t.JUMP_TABLE=127]="JUMP_TABLE"}(o||(o={})),function(t){t[t.EntityStart=0]="EntityStart",t[t.NumericStart=1]="NumericStart",t[t.NumericDecimal=2]="NumericDecimal",t[t.NumericHex=3]="NumericHex",t[t.NamedEntity=4]="NamedEntity"}(i||(i={})),function(t){t[t.Legacy=0]="Legacy",t[t.Strict=1]="Strict",t[t.Attribute=2]="Attribute"}(s||(s={}))},13197(t,e,r){"use strict";r(91573),r(40144)},40144(t,e,r){"use strict";new Map([[34,"""],[38,"&"],[39,"'"],[60,"<"],[62,">"]]),String.prototype.codePointAt,new Map([[34,"""],[38,"&"],[160," "]]),new Map([[38,"&"],[60,"<"],[62,">"],[160," "]])},75780(t,e,r){},92148(t,e,r){},91573(t,e,r){},15723(t,e,r){"use strict";var n,o;r(26549),r(13197),r(40144),function(t){t[t.XML=0]="XML",t[t.HTML=1]="HTML"}(n||(n={})),function(t){t[t.UTF8=0]="UTF8",t[t.ASCII=1]="ASCII",t[t.Extensive=2]="Extensive",t[t.Attribute=3]="Attribute",t[t.Text=4]="Text"}(o||(o={}))},84300(t,e,r){"use strict";r.d(e,{f:()=>n});const n=t=>{if("string"!=typeof t)throw new TypeError("invalid pattern");if(t.length>65536)throw new TypeError("pattern is too long")}},17908(t,e,r){"use strict";r.d(e,{d:()=>x});var n,o=r(73733),i=r(24754);const s=new Set(["!","?","+","*","@"]),a=t=>s.has(t),u=t=>a(t.type),l=new Map([["!",["@"]],["?",["?","@"]],["@",["@"]],["*",["*","+","?","@"]],["+",["+","@"]]]),c=new Map([["!",["?"]],["@",["?"]],["+",["?","*"]]]),p=new Map([["!",["?","@"]],["?",["?","@"]],["@",["?","@"]],["*",["*","+","?","@"]],["+",["+","@","?","*"]]]),f=new Map([["!",new Map([["!","@"]])],["?",new Map([["*","*"],["+","*"]])],["@",new Map([["!","!"],["?","?"],["@","@"],["*","*"],["+","+"]])],["+",new Map([["?","*"],["*","*"]])]]),h="(?!\\.)",d=new Set(["[","."]),g=new Set(["..","."]),y=new Set("().*{}+?[]^$\\!"),m=t=>t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),b="[^/]",v=b+"*?",w=b+"+?";class x{type;#t;#e;#r=!1;#n=[];#o;#i;#s;#a=!1;#u;#l;#c=!1;constructor(t,e,r={}){this.type=t,t&&(this.#e=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#u=this.#t===this?r:this.#t.#u,this.#s=this.#t===this?[]:this.#t.#s,"!"!==t||this.#t.#a||this.#s.push(this),this.#i=this.#o?this.#o.#n.length:0}get hasMagic(){if(void 0!==this.#e)return this.#e;for(const t of this.#n)if("string"!=typeof t&&(t.type||t.hasMagic))return this.#e=!0;return this.#e}toString(){return void 0!==this.#l?this.#l:this.type?this.#l=this.type+"("+this.#n.map(t=>String(t)).join("|")+")":this.#l=this.#n.map(t=>String(t)).join("")}#p(){if(this!==this.#t)throw new Error("should only call on root");if(this.#a)return this;let t;for(this.toString(),this.#a=!0;t=this.#s.pop();){if("!"!==t.type)continue;let e=t,r=e.#o;for(;r;){for(let n=e.#i+1;!r.type&&n"string"==typeof t?t:t.toJSON()):[this.type,...this.#n.map(t=>t.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&"!"===this.#o?.type)&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(0===this.#i)return!0;const t=this.#o;for(let e=0;e{const[o,i,s,a]="string"==typeof e?n.#E(e,this.#e,r):e.toRegExpSource(t);return this.#e=this.#e||s,this.#r=this.#r||a,o}).join("");let s="";if(this.isStart()&&"string"==typeof this.#n[0]&&(1!==this.#n.length||!g.has(this.#n[0]))){const r=d,n=e&&r.has(o.charAt(0))||o.startsWith("\\.")&&r.has(o.charAt(2))||o.startsWith("\\.\\.")&&r.has(o.charAt(4)),i=!e&&!t&&r.has(o.charAt(0));s=n?"(?!(?:^|/)\\.\\.?(?:$|/))":i?h:""}let a="";return this.isEnd()&&this.#t.#a&&"!"===this.#o?.type&&(a="(?:$|\\/)"),[s+o+a,(0,i.x)(o),this.#e=!!this.#e,this.#r]}const r="*"===this.type||"+"===this.type,o="!"===this.type?"(?:(?!(?:":"(?:";let s=this.#S(e);if(this.isStart()&&this.isEnd()&&!s&&"!"!==this.type){const t=this.toString(),e=this;return e.#n=[t],e.type=null,e.#e=void 0,[t,(0,i.x)(this.toString()),!1,!1]}let a=!r||t||e?"":this.#S(!0);a===s&&(a=""),a&&(s=`(?:${s})(?:${a})*?`);let l="";return l="!"===this.type&&this.#c?(this.isStart()&&!e?h:"")+w:o+s+("!"===this.type?"))"+(!this.isStart()||e||t?"":h)+v+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&a?")":"*"===this.type&&a?")?":`)${this.type}`),[l,(0,i.x)(s),this.#e=!!this.#e,this.#r]}#S(t){return this.#n.map(e=>{if("string"==typeof e)throw new Error("string type in extglob ast??");const[r,n,o,i]=e.toRegExpSource(t);return this.#r=this.#r||i,r}).filter(t=>!(this.isStart()&&this.isEnd()&&!t)).join("|")}static#E(t,e,r=!1){let n=!1,s="",a=!1,u=!1;for(let i=0;is});const n={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},o=t=>t.replace(/[[\]\\-]/g,"\\$&"),i=t=>t.join(""),s=(t,e)=>{const r=e;if("["!==t.charAt(r))throw new Error("not in a brace expression");const s=[],a=[];let u=r+1,l=!1,c=!1,p=!1,f=!1,h=r,d="";t:for(;ud?s.push(o(d)+"-"+o(e)):e===d&&s.push(o(e)),d="",u++):t.startsWith("-]",u+1)?(s.push(o(e+"-")),u+=2):t.startsWith("-",u+1)?(d=e,u+=2):(s.push(o(e)),u++)}else p=!0,u++}else f=!0,u++}if(hn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\]]/g,"[$&]"):t.replace(/[?*()[\]\\]/g,"\\$&")},44916(t,e,r){"use strict";r.d(e,{xF:()=>l});var n=r(68928),o=r(84300),i=r(17908),s=r(25093),a=r(24754),u=r(65606);const l=(t,e,r={})=>((0,o.f)(e),!(!r.nocomment&&"#"===e.charAt(0))&&new L(e,r).match(t)),c=/^\*+([^+@!?\*\[\(]*)$/,p=t=>e=>!e.startsWith(".")&&e.endsWith(t),f=t=>e=>e.endsWith(t),h=t=>(t=t.toLowerCase(),e=>!e.startsWith(".")&&e.toLowerCase().endsWith(t)),d=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),g=/^\*+\.\*+$/,y=t=>!t.startsWith(".")&&t.includes("."),m=t=>"."!==t&&".."!==t&&t.includes("."),b=/^\.\*+$/,v=t=>"."!==t&&".."!==t&&t.startsWith("."),w=/^\*+$/,x=t=>0!==t.length&&!t.startsWith("."),E=t=>0!==t.length&&"."!==t&&".."!==t,S=/^\?+([^+@!?\*\[\(]*)?$/,A=([t,e=""])=>{const r=N([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},O=([t,e=""])=>{const r=j([t]);return e?(e=e.toLowerCase(),t=>r(t)&&t.toLowerCase().endsWith(e)):r},_=([t,e=""])=>{const r=j([t]);return e?t=>r(t)&&t.endsWith(e):r},T=([t,e=""])=>{const r=N([t]);return e?t=>r(t)&&t.endsWith(e):r},N=([t])=>{const e=t.length;return t=>t.length===e&&!t.startsWith(".")},j=([t])=>{const e=t.length;return t=>t.length===e&&"."!==t&&".."!==t},P="object"==typeof u&&u?"object"==typeof u.env&&u.env&&u.env.__MINIMATCH_TESTING_PLATFORM__||u.platform:"posix",R="win32"===P?"\\":"/";l.sep=R;const k=Symbol("globstar **");l.GLOBSTAR=k,l.filter=(t,e={})=>r=>l(r,t,e);const C=(t,e={})=>Object.assign({},t,e);l.defaults=t=>{if(!t||"object"!=typeof t||!Object.keys(t).length)return l;const e=l;return Object.assign((r,n,o={})=>e(r,n,C(t,o)),{Minimatch:class extends e.Minimatch{constructor(e,r={}){super(e,C(t,r))}static defaults(r){return e.defaults(C(t,r)).Minimatch}},AST:class extends e.AST{constructor(e,r,n={}){super(e,r,C(t,n))}static fromGlob(r,n={}){return e.AST.fromGlob(r,C(t,n))}},unescape:(r,n={})=>e.unescape(r,C(t,n)),escape:(r,n={})=>e.escape(r,C(t,n)),filter:(r,n={})=>e.filter(r,C(t,n)),defaults:r=>e.defaults(C(t,r)),makeRe:(r,n={})=>e.makeRe(r,C(t,n)),braceExpand:(r,n={})=>e.braceExpand(r,C(t,n)),match:(r,n,o={})=>e.match(r,n,C(t,o)),sep:e.sep,GLOBSTAR:k})};const I=(t,e={})=>((0,o.f)(t),e.nobrace||!/\{(?:(?!\{).)*\}/.test(t)?[t]:n(t));l.braceExpand=I,l.makeRe=(t,e={})=>new L(t,e).makeRe(),l.match=(t,e,r={})=>{const n=new L(e,r);return t=t.filter(t=>n.match(t)),n.options.nonull&&!t.length&&t.push(e),t};const M=/[?*]|[+@!]\(.*?\)|\[|\]/;class L{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(t,e={}){(0,o.f)(t),e=e||{},this.options=e,this.maxGlobstarRecursion=e.maxGlobstarRecursion??200,this.pattern=t,this.platform=e.platform||P,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||!1===e.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==e.windowsNoMagicRoot?e.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const t of this.set)for(const e of t)if("string"!=typeof e)return!0;return!1}debug(...t){}make(){const t=this.pattern,e=this.options;if(!e.nocomment&&"#"===t.charAt(0))return void(this.comment=!0);if(!t)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...t)=>console.error(...t)),this.debug(this.pattern,this.globSet);const r=this.globSet.map(t=>this.slashSplit(t));this.globParts=this.preprocess(r),this.debug(this.pattern,this.globParts);let n=this.globParts.map((t,e,r)=>{if(this.isWindows&&this.windowsNoMagicRoot){const e=!(""!==t[0]||""!==t[1]||"?"!==t[2]&&M.test(t[2])||M.test(t[3])),r=/^[a-z]:/i.test(t[0]);if(e)return[...t.slice(0,4),...t.slice(4).map(t=>this.parse(t))];if(r)return[t[0],...t.slice(1).map(t=>this.parse(t))]}return t.map(t=>this.parse(t))});if(this.debug(this.pattern,n),this.set=n.filter(t=>-1===t.indexOf(!1)),this.isWindows)for(let t=0;t=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):t=e>=1?this.levelOneOptimize(t):this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(t=>{let e=-1;for(;-1!==(e=t.indexOf("**",e+1));){let r=e;for(;"**"===t[r+1];)r++;r!==e&&t.splice(e,r-e)}return t})}levelOneOptimize(t){return t.map(t=>0===(t=t.reduce((t,e)=>{const r=t[t.length-1];return"**"===e&&"**"===r?t:".."===e&&r&&".."!==r&&"."!==r&&"**"!==r?(t.pop(),t):(t.push(e),t)},[])).length?[""]:t)}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let r=1;rn&&r.splice(n+1,o-n);let i=r[n+1];const s=r[n+2],a=r[n+3];if(".."!==i)continue;if(!s||"."===s||".."===s||!a||"."===a||".."===a)continue;e=!0,r.splice(n,1);const u=r.slice(0);u[n]="**",t.push(u),n--}if(!this.preserveMultipleSlashes){for(let t=1;tt.length)}partsMatch(t,e,r=!1){let n=0,o=0,i=[],s="";for(;n=2&&(t=this.levelTwoFileOptimize(t)),e.includes(k)?this.#A(t,e,r,n,o):this.#O(t,e,r,n,o)}#A(t,e,r,n,o){const i=e.indexOf(k,o),s=e.lastIndexOf(k),[a,u,l]=r?[e.slice(o,i),e.slice(i+1),[]]:[e.slice(o,i),e.slice(i+1,s),e.slice(s+1)];if(a.length){const e=t.slice(n,n+a.length);if(!this.#O(e,a,r,0,0))return!1;n+=a.length}let c=0;if(l.length){if(l.length+n>t.length)return!1;let e=t.length-l.length;if(this.#O(t,l,r,e,0))c=l.length;else{if(""!==t[t.length-1]||n+l.length===t.length)return!1;if(e--,!this.#O(t,l,r,e,0))return!1;c=l.length+1}}if(!u.length){let e=!!c;for(let r=n;r{const e=t.map(t=>{if(t instanceof RegExp)for(const e of t.flags.split(""))n.add(e);return"string"==typeof t?t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):t===k?k:t._src});return e.forEach((t,n)=>{const o=e[n+1],i=e[n-1];t===k&&i!==k&&(void 0===i?void 0!==o&&o!==k?e[n+1]="(?:\\/|"+r+"\\/)?"+o:e[n]=r:void 0===o?e[n-1]=i+"(?:\\/|"+r+")?":o!==k&&(e[n-1]=i+"(?:\\/|\\/"+r+"\\/)"+o,e[n+1]=k))}),e.filter(t=>t!==k).join("/")}).join("|");const[i,s]=t.length>1?["(?:",")"]:["",""];o="^"+i+o+s+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...n].join(""))}catch(t){this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(t)?["",...t.split(/\/+/)]:t.split(/\/+/)}match(t,e=this.partial){if(this.debug("match",t,this.pattern),this.comment)return!1;if(this.empty)return""===t;if("/"===t&&e)return!0;const r=this.options;this.isWindows&&(t=t.split("\\").join("/"));const n=this.slashSplit(t);this.debug(this.pattern,"split",n);const o=this.set;this.debug(this.pattern,"set",o);let i=n[n.length-1];if(!i)for(let t=n.length-2;!i&&t>=0;t--)i=n[t];for(let t=0;tn});const n=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\[([^\/\\])\]/g,"$1"):t.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")}},o={};function i(t){var e=o[t];if(void 0!==e)return e.exports;var r=o[t]={id:t,loaded:!1,exports:{}};return n[t].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=n,t=[],i.O=(e,r,n,o)=>{if(!r){var s=1/0;for(c=0;c=o)&&Object.keys(i.O).every(t=>i.O[t](r[u]))?r.splice(u--,1):(a=!1,o0&&t[c-1][2]>o;c--)t[c]=t[c-1];t[c]=[r,n,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce((e,r)=>(i.f[r](t,e),e),[])),i.u=t=>t+"-"+t+".js?v="+{1140:"490e17ed9c8948d5a9e8",2221:"428c2ff62c4b8b3c97fc",3556:"57d00a12b4953e229068",4508:"bd9a6bf4d650882814a8",4906:"75718b28aced26adc4af",5448:"71cfe268d6f1213c4735",5528:"fa22a350943490669cfb",5862:"580b9c2e231a9169a12f",6015:"ebcb6885c1fc8c461988",7039:"be7eefcb933f99fc5b1f",7859:"740587c0c8c350dad157",7910:"de857920f8beb5205bbc",8124:"75a422293ae2add34a10",8815:"9a5c507c75429c9c04e4"}[t],i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),e={},r="nextcloud-ui-legacy:",i.l=(t,n,o,s)=>{if(e[t])e[t].push(n);else{var a,u;if(void 0!==o)for(var l=document.getElementsByTagName("script"),c=0;c{a.onerror=a.onload=null,clearTimeout(h);var o=e[t];if(delete e[t],a.parentNode&&a.parentNode.removeChild(a),o&&o.forEach(t=>t(n)),r)return r(n)},h=setTimeout(f.bind(null,void 0,{type:"timeout",target:a}),12e4);a.onerror=f.bind(null,a.onerror),a.onload=f.bind(null,a.onload),u&&document.head.appendChild(a)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=2122,(()=>{var t;globalThis.importScripts&&(t=globalThis.location+"");var e=globalThis.document;if(!t&&e&&(e.currentScript&&"SCRIPT"===e.currentScript.tagName.toUpperCase()&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&(!t||!/^http(s?):/.test(t));)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var t={2122:0};i.f.j=(e,r)=>{var n=i.o(t,e)?t[e]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise((r,o)=>n=t[e]=[r,o]);r.push(n[2]=o);var s=i.p+i.u(e),a=new Error;i.l(s,r=>{if(i.o(t,e)&&(0!==(n=t[e])&&(t[e]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),s=r&&r.target&&r.target.src;a.message="Loading chunk "+e+" failed.\n("+o+": "+s+")",a.name="ChunkLoadError",a.type=o,a.request=s,n[1](a)}},"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,r)=>{var n,o,[s,a,u]=r,l=0;if(s.some(e=>0!==t[e])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(u)var c=u(i)}for(e&&e(r);li(80609));s=i.O(s)})();
+//# sourceMappingURL=comments-comments-tab.js.map?v=f87d75ec351c5c108973
\ No newline at end of file
diff --git a/dist/comments-comments-tab.js.license b/dist/comments-comments-tab.js.license
index a2a0b2663433c..abc3e00911f0a 100644
--- a/dist/comments-comments-tab.js.license
+++ b/dist/comments-comments-tab.js.license
@@ -163,7 +163,7 @@ This file is generated from multiple sources. Included packages:
 	- version: 1.1.4
 	- license: MIT
 - fast-xml-parser
-	- version: 5.5.6
+	- version: 5.5.7
 	- license: MIT
 - for-each
 	- version: 0.3.5
@@ -316,7 +316,7 @@ This file is generated from multiple sources. Included packages:
 	- version: 1.3.0
 	- license: MIT
 - strnum
-	- version: 2.1.2
+	- version: 2.2.1
 	- license: MIT
 - typescript-event-target
 	- version: 1.1.2
diff --git a/dist/comments-comments-tab.js.map b/dist/comments-comments-tab.js.map
index 0a02c7f6c003c..7c63f1ff3e82a 100644
--- a/dist/comments-comments-tab.js.map
+++ b/dist/comments-comments-tab.js.map
@@ -1 +1 @@
-{"version":3,"file":"comments-comments-tab.js?v=fa2e2ba8442b6c151e25","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/utils/activity.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/actualApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/applyBind.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionCall.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/reflectApply.js","webpack:///nextcloud/node_modules/call-bind/index.js","webpack:///nextcloud/node_modules/call-bound/index.js","webpack:///nextcloud/node_modules/define-data-property/index.js","webpack:///nextcloud/node_modules/dunder-proto/get.js","webpack:///nextcloud/node_modules/es-define-property/index.js","webpack:///nextcloud/node_modules/es-errors/eval.js","webpack:///nextcloud/node_modules/es-errors/index.js","webpack:///nextcloud/node_modules/es-errors/range.js","webpack:///nextcloud/node_modules/es-errors/ref.js","webpack:///nextcloud/node_modules/es-errors/syntax.js","webpack:///nextcloud/node_modules/es-errors/type.js","webpack:///nextcloud/node_modules/es-errors/uri.js","webpack:///nextcloud/node_modules/es-object-atoms/index.js","webpack:///nextcloud/node_modules/for-each/index.js","webpack:///nextcloud/node_modules/function-bind/implementation.js","webpack:///nextcloud/node_modules/function-bind/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/get-intrinsic/index.js","webpack:///nextcloud/node_modules/get-proto/Object.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/Reflect.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/index.js","webpack:///nextcloud/node_modules/gopd/gOPD.js","webpack:///nextcloud/node_modules/gopd/index.js","webpack:///nextcloud/node_modules/has-property-descriptors/index.js","webpack:///nextcloud/node_modules/has-symbols/index.js","webpack:///nextcloud/node_modules/has-symbols/shams.js","webpack:///nextcloud/node_modules/has-tostringtag/shams.js","webpack:///nextcloud/node_modules/hasown/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-callable/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/is-typed-array/index.js","webpack:///nextcloud/node_modules/math-intrinsics/abs.js","webpack:///nextcloud/node_modules/math-intrinsics/floor.js","webpack:///nextcloud/node_modules/math-intrinsics/isNaN.js","webpack:///nextcloud/node_modules/math-intrinsics/max.js","webpack:///nextcloud/node_modules/math-intrinsics/min.js","webpack:///nextcloud/node_modules/math-intrinsics/pow.js","webpack:///nextcloud/node_modules/math-intrinsics/round.js","webpack:///nextcloud/node_modules/math-intrinsics/sign.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/possible-typed-array-names/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/set-function-length/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/which-typed-array/index.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/available-typed-arrays/index.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/fxb.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Expression.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Matcher.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n    window.OCA.Activity.registerSidebarAction({\n        mount: async (el, { node, reload }) => {\n            const pinia = createPinia();\n            if (!ActivityTabPluginView) {\n                const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n                // @ts-expect-error Types are broken for Vue2\n                ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n            }\n            ActivityTabPluginInstance = new ActivityTabPluginView({\n                el,\n                pinia,\n                propsData: {\n                    reloadCallback: reload,\n                    resourceId: node.fileid,\n                },\n            });\n            logger.info('Comments plugin mounted in Activity sidebar action', { node });\n        },\n        unmount: () => {\n            // destroy previous instance if available\n            if (ActivityTabPluginInstance) {\n                ActivityTabPluginInstance.$destroy();\n            }\n        },\n    });\n    window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }) => {\n        const { data: comments } = await getComments({ resourceType: 'files', resourceId: node.fileid }, {\n            limit,\n            offset: offset ?? 0,\n        });\n        logger.debug('Loaded comments', { node, comments });\n        const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n        // @ts-expect-error Types are broken for Vue2\n        const CommentsViewObject = Vue.extend(CommentView);\n        return comments.map((comment) => ({\n            _CommentsViewInstance: undefined,\n            timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n            mount(element, { reload }) {\n                this._CommentsViewInstance = new CommentsViewObject({\n                    el: element,\n                    propsData: {\n                        comment,\n                        resourceId: node.fileid,\n                        reloadCallback: reload,\n                    },\n                });\n            },\n            unmount() {\n                this._CommentsViewInstance?.$destroy();\n            },\n        }));\n    });\n    window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n    logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\nimport { isUsingActivityIntegration } from './utils/activity.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (isUsingActivityIntegration()) {\n    // Do not mount own tab but mount into activity\n    window.addEventListener('DOMContentLoaded', function () {\n        registerCommentsPlugins();\n    });\n}\nelse {\n    registerSidebarTab({\n        id: 'comments',\n        displayName: t('comments', 'Comments'),\n        iconSvgInline: MessageReplyText,\n        order: 50,\n        tagName,\n        async onInit() {\n            const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue');\n            Vue.use(PiniaVuePlugin);\n            Vue.mixin({ pinia: createPinia() });\n            const webComponent = wrap(Vue, FilesSidebarTab);\n            // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n            Object.defineProperty(webComponent.prototype, 'attachShadow', {\n                value() { return this; },\n            });\n            Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n                get() { return this; },\n            });\n            window.customElements.define(tagName, webComponent);\n        },\n    });\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the comments app is using the Activity app integration for the sidebar.\n */\nexport function isUsingActivityIntegration() {\n    return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined;\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n    return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (isArray(list)) {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction 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; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? 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; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n    self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n    ? self\n    : typeof window !== \"undefined\"\n        ? window\n        : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function (key, a) {\n    return a;\n  },\n  attributeValueProcessor: function (attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false,\n  maxNestedTags: 100,\n  jPath: true  // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n\n  // Convert old-style stopNodes for backward compatibility\n  // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n  // New syntax: \"..tag\" means \"tag anywhere in tree\"\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    this.options.stopNodes = this.options.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Convert old wildcard syntax to deep wildcard\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n\n  // Pre-compile stopNode expressions for pattern matching\n  this.stopNodeExpressions = [];\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    for (let i = 0; i < this.options.stopNodes.length; i++) {\n      const node = this.options.stopNodes[i];\n      if (typeof node === 'string') {\n        this.stopNodeExpressions.push(new Expression(node));\n      } else if (node instanceof Expression) {\n        this.stopNodeExpressions.push(node);\n      }\n    }\n  }\n\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function (/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function () {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function (jObj) {\n  if (this.options.preserveOrder) {\n    return buildFromOrderedJs(jObj, this.options);\n  } else {\n    if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n      jObj = {\n        [this.options.arrayNodeName]: jObj\n      }\n    }\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n    return this.j2x(jObj, 0, matcher).val;\n  }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n  let attrStr = '';\n  let val = '';\n  if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n    throw new Error(\"Maximum nested tags exceeded\");\n  }\n  // Get jPath based on option: string for backward compatibility, or Matcher for new features\n  const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n  // Check if current node is a stopNode (will be used for attribute encoding)\n  const isCurrentStopNode = this.checkStopNode(matcher);\n\n  for (let key in jObj) {\n    if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          // Check if this is a stopNode before building\n          matcher.push(key);\n          const isStopNode = this.checkStopNode(matcher);\n          matcher.pop();\n\n          if (isStopNode) {\n            // Build as raw content without encoding\n            const textValue = '' + jObj[key];\n            if (textValue === '') {\n              val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n            } else {\n              val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n        } else if (typeof item === 'object' && item !== null) {\n          const nestedContent = this.buildRawContent(item);\n          const nestedAttrs = this.buildAttributesForStopNode(item);\n          if (nestedContent === '') {\n            content += `<${key}${nestedAttrs}/>`;\n          } else {\n            content += `<${key}${nestedAttrs}>${nestedContent}`;\n          }\n        }\n      }\n    } else if (typeof value === 'object' && value !== null) {\n      // Nested object\n      const nestedContent = this.buildRawContent(value);\n      const nestedAttrs = this.buildAttributesForStopNode(value);\n      if (nestedContent === '') {\n        content += `<${key}${nestedAttrs}/>`;\n      } else {\n        content += `<${key}${nestedAttrs}>${nestedContent}`;\n      }\n    } else {\n      // Primitive value\n      content += `<${key}>${value}`;\n    }\n  }\n\n  return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n  if (!obj || typeof obj !== 'object') return '';\n\n  let attrStr = '';\n\n  // Check for attributesGroupName (when attributes are grouped)\n  if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n    const attrGroup = obj[this.options.attributesGroupName];\n    for (let attrKey in attrGroup) {\n      if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n      const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n        ? attrKey.substring(this.options.attributeNamePrefix.length)\n        : attrKey;\n      const val = attrGroup[attrKey];\n      if (val === true && this.options.suppressBooleanAttributes) {\n        attrStr += ' ' + cleanKey;\n      } else {\n        attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n      }\n    }\n  } else {\n    // Look for individual attributes\n    for (let key in obj) {\n      if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n      const attr = this.isAttribute(key);\n      if (attr) {\n        const val = obj[key];\n        if (val === true && this.options.suppressBooleanAttributes) {\n          attrStr += ' ' + attr;\n        } else {\n          attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n        }\n      }\n    }\n  }\n\n  return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n  if (val === \"\") {\n    if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  } else {\n\n    let tagEndExp = '' + val + tagEndExp);\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    } else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp);\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function (key) {\n  let closeTag = \"\";\n  if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n    if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n  } else if (this.options.suppressEmptyNode) { //empty\n    closeTag = \"/\";\n  } else {\n    closeTag = `>` + this.newLine;\n  } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` + this.newLine;\n  } else if (key[0] === \"?\") {//PI tag\n    return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n  } else {\n    // Normal processing: apply tagValueProcessor and entity replacement\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n\n    if (textValue === '') {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    } else {\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n        textValue +\n        ' 0 && this.options.processEntities) {\n    for (let i = 0; i < this.options.entities.length; i++) {\n      const entity = this.options.entities[i];\n      textValue = textValue.replace(entity.regex, entity.val);\n    }\n  }\n  return textValue;\n}\n\nfunction indentate(level) {\n  return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n  if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n    return name.substr(this.attrPrefixLen);\n  } else {\n    return false;\n  }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n\n    // Pre-compile stopNode expressions for pattern matching\n    const stopNodeExpressions = [];\n    if (options.stopNodes && Array.isArray(options.stopNodes)) {\n        for (let i = 0; i < options.stopNodes.length; i++) {\n            const node = options.stopNodes[i];\n            if (typeof node === 'string') {\n                stopNodeExpressions.push(new Expression(node));\n            } else if (node instanceof Expression) {\n                stopNodeExpressions.push(node);\n            }\n        }\n    }\n\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n\n    return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n        throw new Error(\"Maximum nested tags exceeded\");\n    }\n\n    if (!Array.isArray(arr)) {\n        // Non-array values (e.g. string tag values) should be treated as text content\n        if (arr !== undefined && arr !== null) {\n            let text = arr.toString();\n            text = replaceEntitiesValue(text, options);\n            return text;\n        }\n        return \"\";\n    }\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if (tagName === undefined) continue;\n\n        // Extract attributes from \":@\" property\n        const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n        // Push tag to matcher WITH attributes\n        matcher.push(tagName, attrValues);\n\n        // Check if this is a stop node using Expression matching\n        const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        }\n\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n\n        // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n        const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n\n        // If this is a stopNode, get raw content without processing\n        let tagValue;\n        if (isStopNode) {\n            tagValue = getRawContent(tagObj[tagName], options);\n        } else {\n\n            tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n        }\n\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n\n        // Pop tag from matcher\n        matcher.pop();\n    }\n\n    return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n    if (!attrMap || options.ignoreAttributes) return null;\n\n    const attrValues = {};\n    let hasAttrs = false;\n\n    for (let attr in attrMap) {\n        if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n        // Remove the attribute prefix to get clean attribute name\n        const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n            ? attr.substr(options.attributeNamePrefix.length)\n            : attr;\n        attrValues[cleanAttrName] = attrMap[attr];\n        hasAttrs = true;\n    }\n\n    return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n    if (!Array.isArray(arr)) {\n        // Non-array values return as-is\n        if (arr !== undefined && arr !== null) {\n            return arr.toString();\n        }\n        return \"\";\n    }\n\n    let content = \"\";\n    for (let i = 0; i < arr.length; i++) {\n        const item = arr[i];\n        const tagName = propName(item);\n\n        if (tagName === options.textNodeName) {\n            // Raw text content - NO processing, NO entity replacement\n            content += item[tagName];\n        } else if (tagName === options.cdataPropName) {\n            // CDATA content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName === options.commentPropName) {\n            // Comment content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName && tagName[0] === \"?\") {\n            // Processing instruction - skip for stopNodes\n            continue;\n        } else if (tagName) {\n            // Nested tags within stopNode\n            // Recursively get raw content and reconstruct the tag\n            // For stopNodes, we don't process attributes either\n            const attStr = attr_to_str_raw(item[\":@\"], options);\n            const nestedContent = getRawContent(item[tagName], options);\n\n            if (!nestedContent || nestedContent.length === 0) {\n                content += `<${tagName}${attStr}/>`;\n            } else {\n                content += `<${tagName}${attStr}>${nestedContent}`;\n            }\n        }\n    }\n    return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            // For stopNodes, use raw value without processing\n            let attrVal = attrMap[attr];\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            let attrVal;\n\n            if (isStopNode) {\n                // For stopNodes, use raw value without any processing\n                attrVal = attrMap[attr];\n            } else {\n                // Normal processing: apply attributeValueProcessor and entity replacement\n                attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n                attrVal = replaceEntitiesValue(attrVal, options);\n            }\n\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n    if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n    for (let i = 0; i < stopNodeExpressions.length; i++) {\n        if (matcher.matches(stopNodeExpressions[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function (string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n/**\n * Dangerous property names that could lead to prototype pollution or security issues\n */\nexport const DANGEROUS_PROPERTY_NAMES = [\n  // '__proto__',\n  // 'constructor',\n  // 'prototype',\n  'hasOwnProperty',\n  'toString',\n  'valueOf',\n  '__defineGetter__',\n  '__defineSetter__',\n  '__lookupGetter__',\n  '__lookupSetter__'\n];\n\nexport const criticalProperties = [\"__proto__\", \"constructor\", \"prototype\"];","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n\n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n      i += 2;\n      i = readPI(xmlData, i);\n      if (i.err) return i;\n    } else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n\n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n            //don't push into stack\n          } else {\n            tags.push({ tagName, tagStartPos });\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i + 1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else {\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          } else {\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if (isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  } else if (tags.length == 1) {\n    return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  } else if (tags.length > 0) {\n    return getErrorObject('InvalidXml', \"Invalid '\" +\n      JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n      \"' found.\", { line: 1, col: 1 });\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char) {\n  return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n    constructor(options) {\n        this.suppressValidationErr = !options;\n        this.options = options;\n    }\n\n    readDocType(xmlData, i) {\n        const entities = Object.create(null);\n        let entityCount = 0;\n\n        if (xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E') {\n            i = i + 9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for (; i < xmlData.length; i++) {\n                if (xmlData[i] === '<' && !comment) { //Determine the tag type\n                    if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n                        i += 7;\n                        let entityName, val;\n                        [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n                        if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n                            if (this.options.enabled !== false &&\n                                this.options.maxEntityCount &&\n                                entityCount >= this.options.maxEntityCount) {\n                                throw new Error(\n                                    `Entity count (${entityCount + 1}) exceeds maximum allowed (${this.options.maxEntityCount})`\n                                );\n                            }\n                            //const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n                            const escaped = entityName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n                            entities[entityName] = {\n                                regx: RegExp(`&${escaped};`, \"g\"),\n                                val: val\n                            };\n                            entityCount++;\n                        }\n                    }\n                    else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n                        i += 8;//Not supported\n                        const { index } = this.readElementExp(xmlData, i + 1);\n                        i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n                        i += 8;//Not supported\n                        // const {index} = this.readAttlistExp(xmlData,i+1);\n                        // i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n                        i += 9;//Not supported\n                        const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n                        i = index;\n                    } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n                    else throw new Error(`Invalid DOCTYPE`);\n\n                    angleBracketsCount++;\n                    exp = \"\";\n                } else if (xmlData[i] === '>') { //Read tag content\n                    if (comment) {\n                        if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    } else {\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                        break;\n                    }\n                } else if (xmlData[i] === '[') {\n                    hasBody = true;\n                } else {\n                    exp += xmlData[i];\n                }\n            }\n            if (angleBracketsCount !== 0) {\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        } else {\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return { entities, i };\n    }\n    readEntityExp(xmlData, i) {\n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after  this.options.maxEntitySize) {\n            throw new Error(\n                `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n            );\n        }\n\n        i--;\n        return [entityName, entityValue, i];\n    }\n\n    readNotationExp(xmlData, i) {\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n\n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n    for (let j = 0; j < seq.length; j++) {\n        if (seq[j] !== data[i + j + 1]) return false;\n    }\n    return true;\n}\n\nfunction validateEntityName(name) {\n    if (isName(name))\n        return name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}","import { DANGEROUS_PROPERTY_NAMES, criticalProperties } from \"../util.js\";\n\nconst defaultOnDangerousProperty = (name) => {\n  if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return \"__\" + name;\n  }\n  return name;\n};\n\n\nexport const defaultOptions = {\n  preserveOrder: false,\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  removeNSPrefix: false, // remove NS from tag name or attribute name if true\n  allowBooleanAttributes: false, //a tag can have attributes without any value\n  //ignoreRootElement : false,\n  parseTagValue: true,\n  parseAttributeValue: false,\n  trimValues: true, //Trim string values of tag and attributes\n  cdataPropName: false,\n  numberParseOptions: {\n    hex: true,\n    leadingZeros: true,\n    eNotation: true\n  },\n  tagValueProcessor: function (tagName, val) {\n    return val;\n  },\n  attributeValueProcessor: function (attrName, val) {\n    return val;\n  },\n  stopNodes: [], //nested tags will not be parsed even for errors\n  alwaysCreateTextNode: false,\n  isArray: () => false,\n  commentPropName: false,\n  unpairedTags: [],\n  processEntities: true,\n  htmlEntities: false,\n  ignoreDeclaration: false,\n  ignorePiTags: false,\n  transformTagName: false,\n  transformAttributeName: false,\n  updateTag: function (tagName, jPath, attrs) {\n    return tagName\n  },\n  // skipEmptyListItem: false\n  captureMetaData: false,\n  maxNestedTags: 100,\n  strictReservedNames: true,\n  jPath: true, // if true, pass jPath string to callbacks; if false, pass matcher instance\n  onDangerousProperty: defaultOnDangerousProperty\n};\n\n\n/**\n * Validates that a property name is safe to use\n * @param {string} propertyName - The property name to validate\n * @param {string} optionName - The option field name (for error message)\n * @throws {Error} If property name is dangerous\n */\nfunction validatePropertyName(propertyName, optionName) {\n  if (typeof propertyName !== 'string') {\n    return; // Only validate string property names\n  }\n\n  const normalized = propertyName.toLowerCase();\n  if (DANGEROUS_PROPERTY_NAMES.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n\n  if (criticalProperties.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n}\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n  // Boolean backward compatibility\n  if (typeof value === 'boolean') {\n    return {\n      enabled: value, // true or false\n      maxEntitySize: 10000,\n      maxExpansionDepth: 10,\n      maxTotalExpansions: 1000,\n      maxExpandedLength: 100000,\n      maxEntityCount: 100,\n      allowedTags: null,\n      tagFilter: null\n    };\n  }\n\n  // Object config - merge with defaults\n  if (typeof value === 'object' && value !== null) {\n    return {\n      enabled: value.enabled !== false, // default true if not specified\n      maxEntitySize: value.maxEntitySize ?? 10000,\n      maxExpansionDepth: value.maxExpansionDepth ?? 10,\n      maxTotalExpansions: value.maxTotalExpansions ?? 1000,\n      maxExpandedLength: value.maxExpandedLength ?? 100000,\n      maxEntityCount: value.maxEntityCount ?? 100,\n      allowedTags: value.allowedTags ?? null,\n      tagFilter: value.tagFilter ?? null\n    };\n  }\n\n  // Default to enabled with limits\n  return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n  const built = Object.assign({}, defaultOptions, options);\n\n  // Validate property names to prevent prototype pollution\n  const propertyNameOptions = [\n    { value: built.attributeNamePrefix, name: 'attributeNamePrefix' },\n    { value: built.attributesGroupName, name: 'attributesGroupName' },\n    { value: built.textNodeName, name: 'textNodeName' },\n    { value: built.cdataPropName, name: 'cdataPropName' },\n    { value: built.commentPropName, name: 'commentPropName' }\n  ];\n\n  for (const { value, name } of propertyNameOptions) {\n    if (value) {\n      validatePropertyName(value, name);\n    }\n  }\n\n  if (built.onDangerousProperty === null) {\n    built.onDangerousProperty = defaultOnDangerousProperty;\n  }\n\n  // Always normalize processEntities for backward compatibility and validation\n  built.processEntities = normalizeProcessEntities(built.processEntities);\n\n  // Convert old-style stopNodes for backward compatibility\n  if (built.stopNodes && Array.isArray(built.stopNodes)) {\n    built.stopNodes = built.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Old syntax: *.tagname meant \"tagname anywhere\"\n        // Convert to new syntax: ..tagname\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n  //console.debug(built.processEntities)\n  return built;\n};","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist, DANGEROUS_PROPERTY_NAMES, criticalProperties } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n// Helper functions for attribute and namespace handling\n\n/**\n * Extract raw attributes (without prefix) from prefixed attribute map\n * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap\n * @param {object} options - Parser options containing attributeNamePrefix\n * @returns {object} Raw attributes for matcher\n */\nfunction extractRawAttributes(prefixedAttrs, options) {\n  if (!prefixedAttrs) return {};\n\n  // Handle attributesGroupName option\n  const attrs = options.attributesGroupName\n    ? prefixedAttrs[options.attributesGroupName]\n    : prefixedAttrs;\n\n  if (!attrs) return {};\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    // Remove the attribute prefix to get raw name\n    if (key.startsWith(options.attributeNamePrefix)) {\n      const rawName = key.substring(options.attributeNamePrefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * Extract namespace from raw tag name\n * @param {string} rawTagName - Tag name possibly with namespace (e.g., \"soap:Envelope\")\n * @returns {string|undefined} Namespace or undefined\n */\nfunction extractNamespace(rawTagName) {\n  if (!rawTagName || typeof rawTagName !== 'string') return undefined;\n\n  const colonIndex = rawTagName.indexOf(':');\n  if (colonIndex !== -1 && colonIndex > 0) {\n    const ns = rawTagName.substring(0, colonIndex);\n    // Don't treat xmlns as a namespace\n    if (ns !== 'xmlns') {\n      return ns;\n    }\n  }\n  return undefined;\n}\n\nexport default class OrderedObjParser {\n  constructor(options) {\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n      \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n      \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n      \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.entityExpansionCount = 0;\n    this.currentExpandedLength = 0;\n\n    // Initialize path matcher for path-expression-matcher\n    this.matcher = new Matcher();\n\n    // Flag to track if current node is a stop node (optimization)\n    this.isCurrentNodeStopNode = false;\n\n    // Pre-compile stopNodes expressions\n    if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n      this.stopNodeExpressions = [];\n      for (let i = 0; i < this.options.stopNodes.length; i++) {\n        const stopNodeExp = this.options.stopNodes[i];\n        if (typeof stopNodeExp === 'string') {\n          // Convert string to Expression object\n          this.stopNodeExpressions.push(new Expression(stopNodeExp));\n        } else if (stopNodeExp instanceof Expression) {\n          // Already an Expression object\n          this.stopNodeExpressions.push(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n    this.lastEntities[ent] = {\n      regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n      val: externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if (val.length > 0) {\n      if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n      const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);\n      if (newval === null || newval === undefined) {\n        //don't parse\n        return val;\n      } else if (typeof newval !== typeof val || newval !== val) {\n        //overwrite\n        return newval;\n      } else if (this.options.trimValues) {\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      } else {\n        const trimmedVal = val.trim();\n        if (trimmedVal === val) {\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        } else {\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n\n    // First pass: parse all attributes and update matcher with raw values\n    // This ensures the matcher has all attribute values when processors run\n    const rawAttrsForMatcher = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      const oldVal = matches[i][4];\n\n      if (attrName.length && oldVal !== undefined) {\n        let parsedVal = oldVal;\n        if (this.options.trimValues) {\n          parsedVal = parsedVal.trim();\n        }\n        parsedVal = this.replaceEntitiesValue(parsedVal, tagName, jPath);\n        rawAttrsForMatcher[attrName] = parsedVal;\n      }\n    }\n\n    // Update matcher with raw attribute values BEFORE running processors\n    if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) {\n      jPath.updateCurrent(rawAttrsForMatcher);\n    }\n\n    // Second pass: now process attributes with matcher having full attribute context\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n\n      // Convert jPath to string if needed for ignoreAttributesFn\n      const jPathStr = this.options.jPath ? jPath.toString() : jPath;\n      if (this.ignoreAttributesFn(attrName, jPathStr)) {\n        continue\n      }\n\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        //if (aName === \"__proto__\") aName = \"#__proto__\";\n        aName = sanitizeName(aName, this.options);\n\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal, tagName, jPath);\n\n          // Pass jPath string or matcher based on options.jPath setting\n          const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher);\n          if (newVal === null || newVal === undefined) {\n            //don't parse\n            attrs[aName] = oldVal;\n          } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n            //overwrite\n            attrs[aName] = newVal;\n          } else {\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function (xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n\n  // Reset matcher for new document\n  this.matcher.reset();\n\n  // Reset entity expansion counters for this document\n  this.entityExpansionCount = 0;\n  this.currentExpandedLength = 0;\n\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n    const ch = xmlData[i];\n    if (ch === '<') {\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if (xmlData[i + 1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n        if (this.options.removeNSPrefix) {\n          const colonIndex = tagName.indexOf(\":\");\n          if (colonIndex !== -1) {\n            tagName = tagName.substr(colonIndex + 1);\n          }\n        }\n\n        tagName = transformTagName(this.options.transformTagName, tagName, \"\", this.options).tagName;\n\n        if (currentNode) {\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = this.matcher.getCurrentTag();\n        if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n          // Pop the unpaired tag\n          this.matcher.pop();\n          this.tagsNodeStack.pop();\n        }\n        // Pop the closing tag\n        this.matcher.pop();\n        this.isCurrentNodeStopNode = false; // Reset flag when closing tag\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n\n        let tagData = readTagExp(xmlData, i, false, \"?>\");\n        if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n          //do nothing\n        } else {\n\n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n\n          if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, this.matcher, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n        if (this.options.commentPropName) {\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n          currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n        }\n        i = endIndex;\n      } else if (xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9, closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, this.matcher, true, false, true, true);\n        if (val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if (this.options.cdataPropName) {\n          currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n        } else {\n          currentNode.add(this.options.textNodeName, val);\n        }\n\n        i = closeIndex + 2;\n      } else {//Opening tag\n        let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n\n        // Safety check: readTagExp can return undefined\n        if (!result) {\n          // Log context for debugging\n          const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50));\n          throw new Error(`readTagExp returned undefined at position ${i}. Context: \"${context}\"`);\n        }\n\n        let tagName = result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n        if (this.options.strictReservedNames &&\n          (tagName === this.options.commentPropName\n            || tagName === this.options.cdataPropName\n          )) {\n          throw new Error(`Invalid tag name: ${tagName}`);\n        }\n\n        //save text as child node\n        if (currentNode && textData) {\n          if (currentNode.tagname !== '!xml') {\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, this.matcher, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n          currentNode = this.tagsNodeStack.pop();\n          this.matcher.pop();\n        }\n\n        // Clean up self-closing syntax BEFORE processing attributes\n        // This is where tagExp gets the trailing / removed\n        let isSelfClosing = false;\n        if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n          isSelfClosing = true;\n          if (tagName[tagName.length - 1] === \"/\") {\n            tagName = tagName.substr(0, tagName.length - 1);\n            tagExp = tagName;\n          } else {\n            tagExp = tagExp.substr(0, tagExp.length - 1);\n          }\n\n          // Re-check attrExpPresent after cleaning\n          attrExpPresent = (tagName !== tagExp);\n        }\n\n        // Now process attributes with CLEAN tagExp (no trailing /)\n        let prefixedAttrs = null;\n        let rawAttrs = {};\n        let namespace = undefined;\n\n        // Extract namespace from rawTagName\n        namespace = extractNamespace(rawTagName);\n\n        // Push tag to matcher FIRST (with empty attrs for now) so callbacks see correct path\n        if (tagName !== xmlObj.tagname) {\n          this.matcher.push(tagName, {}, namespace);\n        }\n\n        // Now build attributes - callbacks will see correct matcher state\n        if (tagName !== tagExp && attrExpPresent) {\n          // Build attributes (returns prefixed attributes for the tree)\n          // Note: buildAttributesMap now internally updates the matcher with raw attributes\n          prefixedAttrs = this.buildAttributesMap(tagExp, this.matcher, tagName);\n\n          if (prefixedAttrs) {\n            // Extract raw attributes (without prefix) for our use\n            rawAttrs = extractRawAttributes(prefixedAttrs, this.options);\n          }\n        }\n\n        // Now check if this is a stop node (after attributes are set)\n        if (tagName !== xmlObj.tagname) {\n          this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher);\n        }\n\n        const startIndex = i;\n        if (this.isCurrentNodeStopNode) {\n          let tagContent = \"\";\n\n          // For self-closing tags, content is empty\n          if (isSelfClosing) {\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n            i = result.closeIndex;\n          }\n          //normal tag\n          else {\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if (prefixedAttrs) {\n            childNode[\":@\"] = prefixedAttrs;\n          }\n\n          // For stop nodes, store raw content as-is without any processing\n          childNode.add(this.options.textNodeName, tagContent);\n\n          this.matcher.pop(); // Pop the stop node tag\n          this.isCurrentNodeStopNode = false; // Reset flag\n\n          this.addChild(currentNode, childNode, this.matcher, startIndex);\n        } else {\n          //selfClosing tag\n          if (isSelfClosing) {\n            ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop self-closing tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n          }\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop unpaired tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n            i = result.closeIndex;\n            // Continue to next iteration without changing currentNode\n            continue;\n          }\n          //opening tag\n          else {\n            const childNode = new xmlNode(tagName);\n            if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n              throw new Error(\"Maximum nested tags exceeded\");\n            }\n            this.tagsNodeStack.push(currentNode);\n\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    } else {\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, matcher, startIndex) {\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n\n  // Pass jPath string or matcher based on options.jPath setting\n  const jPathOrMatcher = this.options.jPath ? matcher.toString() : matcher;\n  const result = this.options.updateTag(childNode.tagname, jPathOrMatcher, childNode[\":@\"])\n  if (result === false) {\n    //do nothing\n  } else if (typeof result === \"string\") {\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  } else {\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\n/**\n * @param {object} val - Entity object with regex and val properties\n * @param {string} tagName - Tag name\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n */\nfunction replaceEntitiesValue(val, tagName, jPath) {\n  const entityConfig = this.options.processEntities;\n\n  if (!entityConfig || !entityConfig.enabled) {\n    return val;\n  }\n\n  // Check if tag is allowed to contain entities\n  if (entityConfig.allowedTags) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    const allowed = Array.isArray(entityConfig.allowedTags)\n      ? entityConfig.allowedTags.includes(tagName)\n      : entityConfig.allowedTags(tagName, jPathOrMatcher);\n\n    if (!allowed) {\n      return val;\n    }\n  }\n\n  // Apply custom tag filter if provided\n  if (entityConfig.tagFilter) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    if (!entityConfig.tagFilter(tagName, jPathOrMatcher)) {\n      return val; // Skip based on custom filter\n    }\n  }\n\n  // Replace DOCTYPE entities\n  for (const entityName of Object.keys(this.docTypeEntities)) {\n    const entity = this.docTypeEntities[entityName];\n    const matches = val.match(entity.regx);\n\n    if (matches) {\n      // Track expansions\n      this.entityExpansionCount += matches.length;\n\n      // Check expansion limit\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n\n      // Store length before replacement\n      const lengthBefore = val.length;\n      val = val.replace(entity.regx, entity.val);\n\n      // Check expanded length immediately after replacement\n      if (entityConfig.maxExpandedLength) {\n        this.currentExpandedLength += (val.length - lengthBefore);\n\n        if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n          throw new Error(\n            `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n          );\n        }\n      }\n    }\n  }\n  // Replace standard entities\n  for (const entityName of Object.keys(this.lastEntities)) {\n    const entity = this.lastEntities[entityName];\n    const matches = val.match(entity.regex);\n    if (matches) {\n      this.entityExpansionCount += matches.length;\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n    }\n    val = val.replace(entity.regex, entity.val);\n  }\n  if (val.indexOf('&') === -1) return val;\n\n  // Replace HTML entities if enabled\n  if (this.options.htmlEntities) {\n    for (const entityName of Object.keys(this.htmlEntities)) {\n      const entity = this.htmlEntities[entityName];\n      const matches = val.match(entity.regex);\n      if (matches) {\n        //console.log(matches);\n        this.entityExpansionCount += matches.length;\n        if (entityConfig.maxTotalExpansions &&\n          this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n          throw new Error(\n            `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n          );\n        }\n      }\n      val = val.replace(entity.regex, entity.val);\n    }\n  }\n\n  // Replace ampersand entity last\n  val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n  return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, matcher, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n    textData = this.parseTextData(textData,\n      parentNode.tagname,\n      matcher,\n      false,\n      parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      parentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Array} stopNodeExpressions - Array of compiled Expression objects\n * @param {Matcher} matcher - Current path matcher\n */\nfunction isItStopNode(stopNodeExpressions, matcher) {\n  if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n  for (let i = 0; i < stopNodeExpressions.length; i++) {\n    if (matcher.matches(stopNodeExpressions[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n      if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n      attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if (closingChar[1]) {\n        if (xmlData[index + 1] === closingChar[1]) {\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      } else {\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n  const closingIndex = xmlData.indexOf(str, i);\n  if (closingIndex === -1) {\n    throw new Error(errMsg)\n  } else {\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n  const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n  if (!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if (separatorIndex !== -1) {//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if (removeNSPrefix) {\n    const colonIndex = tagName.indexOf(\":\");\n    if (colonIndex !== -1) {\n      tagName = tagName.substr(colonIndex + 1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === \"<\") {\n      if (xmlData[i + 1] === \"/\") {//close tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n        let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n        if (closeTagName === tagName) {\n          openTagCount--;\n          if (openTagCount === 0) {\n            return {\n              tagContent: xmlData.substring(startIndex, i),\n              i: closeIndex\n            }\n          }\n        }\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n        const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n        i = closeIndex;\n      } else {\n        const tagData = readTagExp(xmlData, i, '>')\n\n        if (tagData) {\n          const openTagName = tagData && tagData.tagName;\n          if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n            openTagCount++;\n          }\n          i = tagData.closeIndex;\n        }\n      }\n    }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if (newval === 'true') return true;\n    else if (newval === 'false') return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n    return String.fromCodePoint(codePoint);\n  } else {\n    return prefix + str + \";\";\n  }\n}\n\nfunction transformTagName(fn, tagName, tagExp, options) {\n  if (fn) {\n    const newTagName = fn(tagName);\n    if (tagExp === tagName) {\n      tagExp = newTagName\n    }\n    tagName = newTagName;\n  }\n  tagName = sanitizeName(tagName, options);\n  return { tagName, tagExp };\n}\n\n\n\nfunction sanitizeName(name, options) {\n  if (criticalProperties.includes(name)) {\n    throw new Error(`[SECURITY] Invalid name: \"${name}\" is a reserved JavaScript keyword that could cause prototype pollution`);\n  } else if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return options.onDangerousProperty(name);\n  }\n  return name;\n}","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n    constructor(options) {\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n\n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData, validationOption) {\n        if (typeof xmlData !== \"string\" && xmlData.toString) {\n            xmlData = xmlData.toString();\n        } else if (typeof xmlData !== \"string\") {\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n\n        if (validationOption) {\n            if (validationOption === true) validationOption = {}; //validate with default options\n\n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n                throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n            }\n        }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options, orderedObjParser.matcher);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value) {\n        if (value.indexOf(\"&\") !== -1) {\n            throw new Error(\"Entity value can't have '&'\")\n        } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        } else if (value === \"&\") {\n            throw new Error(\"An entity with value '&' is not permitted\");\n        } else {\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\nimport { Matcher } from 'path-expression-matcher';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * Helper function to strip attribute prefix from attribute map\n * @param {object} attrs - Attributes with prefix (e.g., {\"@_class\": \"code\"})\n * @param {string} prefix - Attribute prefix to remove (e.g., \"@_\")\n * @returns {object} Attributes without prefix (e.g., {\"class\": \"code\"})\n */\nfunction stripAttributePrefix(attrs, prefix) {\n  if (!attrs || typeof attrs !== 'object') return {};\n  if (!prefix) return attrs;\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    if (key.startsWith(prefix)) {\n      const rawName = key.substring(prefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns \n */\nexport default function prettify(node, options, matcher) {\n  return compress(node, options, matcher);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns object\n */\nfunction compress(arr, options, matcher) {\n  let text;\n  const compressedObj = {}; //This is intended to be a plain object\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n\n    // Push current property to matcher WITH RAW ATTRIBUTES (no prefix)\n    if (property !== undefined && property !== options.textNodeName) {\n      const rawAttrs = stripAttributePrefix(\n        tagObj[\":@\"] || {},\n        options.attributeNamePrefix\n      );\n      matcher.push(property, rawAttrs);\n    }\n\n    if (property === options.textNodeName) {\n      if (text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    } else if (property === undefined) {\n      continue;\n    } else if (tagObj[property]) {\n\n      let val = compress(tagObj[property], options, matcher);\n      const isLeaf = isLeafTag(val, options);\n\n      if (tagObj[\":@\"]) {\n        assignAttributes(val, tagObj[\":@\"], matcher, options);\n      } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n        val = val[options.textNodeName];\n      } else if (Object.keys(val).length === 0) {\n        if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n\n      if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n        if (!Array.isArray(compressedObj[property])) {\n          compressedObj[property] = [compressedObj[property]];\n        }\n        compressedObj[property].push(val);\n      } else {\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n\n        // Pass jPath string or matcher based on options.jPath setting\n        const jPathOrMatcher = options.jPath ? matcher.toString() : matcher;\n        if (options.isArray(property, jPathOrMatcher, isLeaf)) {\n          compressedObj[property] = [val];\n        } else {\n          compressedObj[property] = val;\n        }\n      }\n\n      // Pop property from matcher after processing\n      if (property !== undefined && property !== options.textNodeName) {\n        matcher.pop();\n      }\n    }\n\n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if (typeof text === \"string\") {\n    if (text.length > 0) compressedObj[options.textNodeName] = text;\n  } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n  return compressedObj;\n}\n\nfunction propName(obj) {\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if (key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, matcher, options) {\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];  // This is the PREFIXED name (e.g., \"@_class\")\n\n      // Strip prefix for matcher path (for isArray callback)\n      const rawAttrName = atrrName.startsWith(options.attributeNamePrefix)\n        ? atrrName.substring(options.attributeNamePrefix.length)\n        : atrrName;\n\n      // For attributes, we need to create a temporary path\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = options.jPath\n        ? matcher.toString() + \".\" + rawAttrName\n        : matcher;\n\n      if (options.isArray(atrrName, jPathOrMatcher, true, true)) {\n        obj[atrrName] = [attrMap[atrrName]];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options) {\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n\n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = Object.create(null); //attributes map\n  }\n  add(key, val) {\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if (key === \"__proto__\") key = \"#__proto__\";\n    this.child.push({ [key]: val });\n  }\n  addChild(node, startIndex) {\n    if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n      this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    } else {\n      this.child.push({ [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","export function sequence(...methods) {\n    if (methods.length === 0) {\n        throw new Error(\"Failed creating sequence: No functions provided\");\n    }\n    return function __executeSequence(...args) {\n        let result = args;\n        const _this = this;\n        while (methods.length > 0) {\n            const method = methods.shift();\n            result = [method.apply(_this, result)];\n        }\n        return result[0];\n    };\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n    return {\n        original: method,\n        methods: [method],\n        final: false\n    };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n    constructor() {\n        this._configuration = {\n            registry: {},\n            getEmptyAction: \"null\"\n        };\n        this.__type__ = HOT_PATCHER_TYPE;\n    }\n    /**\n     * Configuration object reference\n     * @readonly\n     */\n    get configuration() {\n        return this._configuration;\n    }\n    /**\n     * The action to take when a non-set method is requested\n     * Possible values: null/throw\n     */\n    get getEmptyAction() {\n        return this.configuration.getEmptyAction;\n    }\n    set getEmptyAction(newAction) {\n        this.configuration.getEmptyAction = newAction;\n    }\n    /**\n     * Control another hot-patcher instance\n     * Force the remote instance to use patched methods from calling instance\n     * @param target The target instance to control\n     * @param allowTargetOverrides Allow the target to override patched methods on\n     * the controller (default is false)\n     * @returns Returns self\n     * @throws {Error} Throws if the target is invalid\n     */\n    control(target, allowTargetOverrides = false) {\n        if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n            throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n        }\n        Object.keys(target.configuration.registry).forEach(foreignKey => {\n            if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n                if (allowTargetOverrides) {\n                    this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n                }\n            }\n            else {\n                this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n            }\n        });\n        target._configuration = this.configuration;\n        return this;\n    }\n    /**\n     * Execute a patched method\n     * @param key The method key\n     * @param args Arguments to pass to the method (optional)\n     * @see HotPatcher#get\n     * @returns The output of the called method\n     */\n    execute(key, ...args) {\n        const method = this.get(key) || NOOP;\n        return method(...args);\n    }\n    /**\n     * Get a method for a key\n     * @param key The method key\n     * @returns Returns the requested function or null if the function\n     * does not exist and the host is configured to return null (and not throw)\n     * @throws {Error} Throws if the configuration specifies to throw and the method\n     * does not exist\n     * @throws {Error} Throws if the `getEmptyAction` value is invalid\n     */\n    get(key) {\n        const item = this.configuration.registry[key];\n        if (!item) {\n            switch (this.getEmptyAction) {\n                case \"null\":\n                    return null;\n                case \"throw\":\n                    throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n                default:\n                    throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n            }\n        }\n        return sequence(...item.methods);\n    }\n    /**\n     * Check if a method has been patched\n     * @param key The function key\n     * @returns True if already patched\n     */\n    isPatched(key) {\n        return !!this.configuration.registry[key];\n    }\n    /**\n     * Patch a method name\n     * @param key The method key to patch\n     * @param method The function to set\n     * @param opts Patch options\n     * @returns Returns self\n     */\n    patch(key, method, opts = {}) {\n        const { chain = false } = opts;\n        if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n            throw new Error(`Failed patching '${key}': Method marked as being final`);\n        }\n        if (typeof method !== \"function\") {\n            throw new Error(`Failed patching '${key}': Provided method is not a function`);\n        }\n        if (chain) {\n            // Add new method to the chain\n            if (!this.configuration.registry[key]) {\n                // New key, create item\n                this.configuration.registry[key] = createNewItem(method);\n            }\n            else {\n                // Existing, push the method\n                this.configuration.registry[key].methods.push(method);\n            }\n        }\n        else {\n            // Replace the original\n            if (this.isPatched(key)) {\n                const { original } = this.configuration.registry[key];\n                this.configuration.registry[key] = Object.assign(createNewItem(method), {\n                    original\n                });\n            }\n            else {\n                this.configuration.registry[key] = createNewItem(method);\n            }\n        }\n        return this;\n    }\n    /**\n     * Patch a method inline, execute it and return the value\n     * Used for patching contents of functions. This method will not apply a patched\n     * function if it has already been patched, allowing for external overrides to\n     * function. It also means that the function is cached so that it is not\n     * instantiated every time the outer function is invoked.\n     * @param key The function key to use\n     * @param method The function to patch (once, only if not patched)\n     * @param args Arguments to pass to the function\n     * @returns The output of the patched function\n     * @example\n     *  function mySpecialFunction(a, b) {\n     *      return hotPatcher.patchInline(\"func\", (a, b) => {\n     *          return a + b;\n     *      }, a, b);\n     *  }\n     */\n    patchInline(key, method, ...args) {\n        if (!this.isPatched(key)) {\n            this.patch(key, method);\n        }\n        return this.execute(key, ...args);\n    }\n    /**\n     * Patch a method (or methods) in sequential-mode\n     * See `patch()` with the option `chain: true`\n     * @see patch\n     * @param key The key to patch\n     * @param methods The methods to patch\n     * @returns Returns self\n     */\n    plugin(key, ...methods) {\n        methods.forEach(method => {\n            this.patch(key, method, { chain: true });\n        });\n        return this;\n    }\n    /**\n     * Restore a patched method if it has been overridden\n     * @param key The method key\n     * @returns Returns self\n     */\n    restore(key) {\n        if (!this.isPatched(key)) {\n            throw new Error(`Failed restoring method: No method present for key: ${key}`);\n        }\n        else if (typeof this.configuration.registry[key].original !== \"function\") {\n            throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n        }\n        this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n        return this;\n    }\n    /**\n     * Set a method as being final\n     * This sets a method as having been finally overridden. Attempts at overriding\n     * again will fail with an error.\n     * @param key The key to make final\n     * @returns Returns self\n     */\n    setFinal(key) {\n        if (!this.configuration.registry.hasOwnProperty(key)) {\n            throw new Error(`Failed marking '${key}' as final: No method found for key`);\n        }\n        this.configuration.registry[key].final = true;\n        return this;\n    }\n}\n","export function assertError(err) {\n    if (!isError(err)) {\n        throw new Error(\"Parameter was not an error\");\n    }\n}\nexport function isError(err) {\n    return ((!!err &&\n        typeof err === \"object\" &&\n        objectToString(err) === \"[object Error]\") ||\n        err instanceof Error);\n}\nfunction objectToString(obj) {\n    return Object.prototype.toString.call(obj);\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n    return __name;\n}\nexport function setGlobalName(name = null) {\n    __name = name ?? NAME;\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n    constructor(errorOptionsOrMessage, messageText) {\n        const args = [...arguments];\n        const { options, shortMessage } = parseArguments(args);\n        let message = shortMessage;\n        if (options.cause) {\n            message = `${message}: ${options.cause.message}`;\n        }\n        super(message);\n        this.message = message;\n        if (options.name && typeof options.name === \"string\") {\n            this.name = options.name;\n        }\n        else {\n            this.name = getGlobalName();\n        }\n        if (options.cause) {\n            Object.defineProperty(this, \"_cause\", { value: options.cause });\n        }\n        Object.defineProperty(this, \"_info\", { value: {} });\n        if (options.info && typeof options.info === \"object\") {\n            Object.assign(this._info, options.info);\n        }\n        if (Error.captureStackTrace) {\n            const ctor = options.constructorOpt || this.constructor;\n            Error.captureStackTrace(this, ctor);\n        }\n    }\n    static cause(err) {\n        assertError(err);\n        if (!err._cause)\n            return null;\n        return isError(err._cause)\n            ? err._cause\n            : null;\n    }\n    static fullStack(err) {\n        assertError(err);\n        const cause = Layerr.cause(err);\n        if (cause) {\n            return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n        }\n        return err.stack ?? \"\";\n    }\n    static info(err) {\n        assertError(err);\n        const output = {};\n        const cause = Layerr.cause(err);\n        if (cause) {\n            Object.assign(output, Layerr.info(cause));\n        }\n        if (err._info) {\n            Object.assign(output, err._info);\n        }\n        return output;\n    }\n    toString() {\n        let output = this.name ||\n            this.constructor.name ||\n            this.constructor.prototype.name;\n        if (this.message) {\n            output = `${output}: ${this.message}`;\n        }\n        return output;\n    }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n    let options, shortMessage = \"\";\n    if (args.length === 0) {\n        options = {};\n    }\n    else if (isError(args[0])) {\n        options = {\n            cause: args[0],\n        };\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (args[0] && typeof args[0] === \"object\") {\n        options = Object.assign({}, args[0]);\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (typeof args[0] === \"string\") {\n        options = {};\n        shortMessage = shortMessage = args.join(\" \") || \"\";\n    }\n    else {\n        throw new Error(\"Invalid arguments passed to Layerr\");\n    }\n    return {\n        options,\n        shortMessage,\n    };\n}\n","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n  /**\n   * Create a new Expression\n   * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Path separator (default: '.')\n   */\n  constructor(pattern, options = {}) {\n    this.pattern = pattern;\n    this.separator = options.separator || '.';\n    this.segments = this._parse(pattern);\n\n    // Cache expensive checks for performance (O(1) instead of O(n))\n    this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n    this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n    this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n  }\n\n  /**\n   * Parse pattern string into segments\n   * @private\n   * @param {string} pattern - Pattern to parse\n   * @returns {Array} Array of segment objects\n   */\n  _parse(pattern) {\n    const segments = [];\n\n    // Split by separator but handle \"..\" specially\n    let i = 0;\n    let currentPart = '';\n\n    while (i < pattern.length) {\n      if (pattern[i] === this.separator) {\n        // Check if next char is also separator (deep wildcard)\n        if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n          // Flush current part if any\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n            currentPart = '';\n          }\n          // Add deep wildcard\n          segments.push({ type: 'deep-wildcard' });\n          i += 2; // Skip both separators\n        } else {\n          // Regular separator\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n          }\n          currentPart = '';\n          i++;\n        }\n      } else {\n        currentPart += pattern[i];\n        i++;\n      }\n    }\n\n    // Flush remaining part\n    if (currentPart.trim()) {\n      segments.push(this._parseSegment(currentPart.trim()));\n    }\n\n    return segments;\n  }\n\n  /**\n   * Parse a single segment\n   * @private\n   * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n   * @returns {Object} Segment object\n   */\n  _parseSegment(part) {\n    const segment = { type: 'tag' };\n\n    // NEW NAMESPACE SYNTAX (v2.0):\n    // ============================\n    // Namespace uses DOUBLE colon (::)\n    // Position uses SINGLE colon (:)\n    // \n    // Examples:\n    //   \"user\"              → tag\n    //   \"user:first\"        → tag + position\n    //   \"user[id]\"          → tag + attribute\n    //   \"user[id]:first\"    → tag + attribute + position\n    //   \"ns::user\"          → namespace + tag\n    //   \"ns::user:first\"    → namespace + tag + position\n    //   \"ns::user[id]\"      → namespace + tag + attribute\n    //   \"ns::user[id]:first\" → namespace + tag + attribute + position\n    //   \"ns::first\"         → namespace + tag named \"first\" (NO ambiguity!)\n    //\n    // This eliminates all ambiguity:\n    //   :: = namespace separator\n    //   :  = position selector\n    //   [] = attributes\n\n    // Step 1: Extract brackets [attr] or [attr=value]\n    let bracketContent = null;\n    let withoutBrackets = part;\n\n    const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n    if (bracketMatch) {\n      withoutBrackets = bracketMatch[1] + bracketMatch[3];\n      if (bracketMatch[2]) {\n        const content = bracketMatch[2].slice(1, -1);\n        if (content) {\n          bracketContent = content;\n        }\n      }\n    }\n\n    // Step 2: Check for namespace (double colon ::)\n    let namespace = undefined;\n    let tagAndPosition = withoutBrackets;\n\n    if (withoutBrackets.includes('::')) {\n      const nsIndex = withoutBrackets.indexOf('::');\n      namespace = withoutBrackets.substring(0, nsIndex).trim();\n      tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n      if (!namespace) {\n        throw new Error(`Invalid namespace in pattern: ${part}`);\n      }\n    }\n\n    // Step 3: Parse tag and position (single colon :)\n    let tag = undefined;\n    let positionMatch = null;\n\n    if (tagAndPosition.includes(':')) {\n      const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n      const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n      const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n      // Verify position is a valid keyword\n      const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n        /^nth\\(\\d+\\)$/.test(posPart);\n\n      if (isPositionKeyword) {\n        tag = tagPart;\n        positionMatch = posPart;\n      } else {\n        // Not a valid position keyword, treat whole thing as tag\n        tag = tagAndPosition;\n      }\n    } else {\n      tag = tagAndPosition;\n    }\n\n    if (!tag) {\n      throw new Error(`Invalid segment pattern: ${part}`);\n    }\n\n    segment.tag = tag;\n    if (namespace) {\n      segment.namespace = namespace;\n    }\n\n    // Step 4: Parse attributes\n    if (bracketContent) {\n      if (bracketContent.includes('=')) {\n        const eqIndex = bracketContent.indexOf('=');\n        segment.attrName = bracketContent.substring(0, eqIndex).trim();\n        segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n      } else {\n        segment.attrName = bracketContent.trim();\n      }\n    }\n\n    // Step 5: Parse position selector\n    if (positionMatch) {\n      const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n      if (nthMatch) {\n        segment.position = 'nth';\n        segment.positionValue = parseInt(nthMatch[1], 10);\n      } else {\n        segment.position = positionMatch;\n      }\n    }\n\n    return segment;\n  }\n\n  /**\n   * Get the number of segments\n   * @returns {number}\n   */\n  get length() {\n    return this.segments.length;\n  }\n\n  /**\n   * Check if expression contains deep wildcard\n   * @returns {boolean}\n   */\n  hasDeepWildcard() {\n    return this._hasDeepWildcard;\n  }\n\n  /**\n   * Check if expression has attribute conditions\n   * @returns {boolean}\n   */\n  hasAttributeCondition() {\n    return this._hasAttributeCondition;\n  }\n\n  /**\n   * Check if expression has position selectors\n   * @returns {boolean}\n   */\n  hasPositionSelector() {\n    return this._hasPositionSelector;\n  }\n\n  /**\n   * Get string representation\n   * @returns {string}\n   */\n  toString() {\n    return this.pattern;\n  }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n  /**\n   * Create a new Matcher\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Default path separator (default: '.')\n   */\n  constructor(options = {}) {\n    this.separator = options.separator || '.';\n    this.path = [];\n    this.siblingStacks = [];\n    // Each path node: { tag: string, values: object, position: number, counter: number }\n    // values only present for current (last) node\n    // Each siblingStacks entry: Map tracking occurrences at each level\n  }\n\n  /**\n   * Push a new tag onto the path\n   * @param {string} tagName - Name of the tag\n   * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n   * @param {string} namespace - Namespace for the tag (optional)\n   */\n  push(tagName, attrValues = null, namespace = null) {\n    // Remove values from previous current node (now becoming ancestor)\n    if (this.path.length > 0) {\n      const prev = this.path[this.path.length - 1];\n      prev.values = undefined;\n    }\n\n    // Get or create sibling tracking for current level\n    const currentLevel = this.path.length;\n    if (!this.siblingStacks[currentLevel]) {\n      this.siblingStacks[currentLevel] = new Map();\n    }\n\n    const siblings = this.siblingStacks[currentLevel];\n\n    // Create a unique key for sibling tracking that includes namespace\n    const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n    // Calculate counter (how many times this tag appeared at this level)\n    const counter = siblings.get(siblingKey) || 0;\n\n    // Calculate position (total children at this level so far)\n    let position = 0;\n    for (const count of siblings.values()) {\n      position += count;\n    }\n\n    // Update sibling count for this tag\n    siblings.set(siblingKey, counter + 1);\n\n    // Create new node\n    const node = {\n      tag: tagName,\n      position: position,\n      counter: counter\n    };\n\n    // Store namespace if provided\n    if (namespace !== null && namespace !== undefined) {\n      node.namespace = namespace;\n    }\n\n    // Store values only for current node\n    if (attrValues !== null && attrValues !== undefined) {\n      node.values = attrValues;\n    }\n\n    this.path.push(node);\n  }\n\n  /**\n   * Pop the last tag from the path\n   * @returns {Object|undefined} The popped node\n   */\n  pop() {\n    if (this.path.length === 0) {\n      return undefined;\n    }\n\n    const node = this.path.pop();\n\n    // Clean up sibling tracking for levels deeper than current\n    // After pop, path.length is the new depth\n    // We need to clean up siblingStacks[path.length + 1] and beyond\n    if (this.siblingStacks.length > this.path.length + 1) {\n      this.siblingStacks.length = this.path.length + 1;\n    }\n\n    return node;\n  }\n\n  /**\n   * Update current node's attribute values\n   * Useful when attributes are parsed after push\n   * @param {Object} attrValues - Attribute values\n   */\n  updateCurrent(attrValues) {\n    if (this.path.length > 0) {\n      const current = this.path[this.path.length - 1];\n      if (attrValues !== null && attrValues !== undefined) {\n        current.values = attrValues;\n      }\n    }\n  }\n\n  /**\n   * Get current tag name\n   * @returns {string|undefined}\n   */\n  getCurrentTag() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n  }\n\n  /**\n   * Get current namespace\n   * @returns {string|undefined}\n   */\n  getCurrentNamespace() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n  }\n\n  /**\n   * Get current node's attribute value\n   * @param {string} attrName - Attribute name\n   * @returns {*} Attribute value or undefined\n   */\n  getAttrValue(attrName) {\n    if (this.path.length === 0) return undefined;\n    const current = this.path[this.path.length - 1];\n    return current.values?.[attrName];\n  }\n\n  /**\n   * Check if current node has an attribute\n   * @param {string} attrName - Attribute name\n   * @returns {boolean}\n   */\n  hasAttr(attrName) {\n    if (this.path.length === 0) return false;\n    const current = this.path[this.path.length - 1];\n    return current.values !== undefined && attrName in current.values;\n  }\n\n  /**\n   * Get current node's sibling position (child index in parent)\n   * @returns {number}\n   */\n  getPosition() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].position ?? 0;\n  }\n\n  /**\n   * Get current node's repeat counter (occurrence count of this tag name)\n   * @returns {number}\n   */\n  getCounter() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].counter ?? 0;\n  }\n\n  /**\n   * Get current node's sibling index (alias for getPosition for backward compatibility)\n   * @returns {number}\n   * @deprecated Use getPosition() or getCounter() instead\n   */\n  getIndex() {\n    return this.getPosition();\n  }\n\n  /**\n   * Get current path depth\n   * @returns {number}\n   */\n  getDepth() {\n    return this.path.length;\n  }\n\n  /**\n   * Get path as string\n   * @param {string} separator - Optional separator (uses default if not provided)\n   * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n   * @returns {string}\n   */\n  toString(separator, includeNamespace = true) {\n    const sep = separator || this.separator;\n    return this.path.map(n => {\n      if (includeNamespace && n.namespace) {\n        return `${n.namespace}:${n.tag}`;\n      }\n      return n.tag;\n    }).join(sep);\n  }\n\n  /**\n   * Get path as array of tag names\n   * @returns {string[]}\n   */\n  toArray() {\n    return this.path.map(n => n.tag);\n  }\n\n  /**\n   * Reset the path to empty\n   */\n  reset() {\n    this.path = [];\n    this.siblingStacks = [];\n  }\n\n  /**\n   * Match current path against an Expression\n   * @param {Expression} expression - The expression to match against\n   * @returns {boolean} True if current path matches the expression\n   */\n  matches(expression) {\n    const segments = expression.segments;\n\n    if (segments.length === 0) {\n      return false;\n    }\n\n    // Handle deep wildcard patterns\n    if (expression.hasDeepWildcard()) {\n      return this._matchWithDeepWildcard(segments);\n    }\n\n    // Simple path matching (no deep wildcards)\n    return this._matchSimple(segments);\n  }\n\n  /**\n   * Match simple path (no deep wildcards)\n   * @private\n   */\n  _matchSimple(segments) {\n    // Path must be same length as segments\n    if (this.path.length !== segments.length) {\n      return false;\n    }\n\n    // Match each segment bottom-to-top\n    for (let i = 0; i < segments.length; i++) {\n      const segment = segments[i];\n      const node = this.path[i];\n      const isCurrentNode = (i === this.path.length - 1);\n\n      if (!this._matchSegment(segment, node, isCurrentNode)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Match path with deep wildcards\n   * @private\n   */\n  _matchWithDeepWildcard(segments) {\n    let pathIdx = this.path.length - 1;  // Start from current node (bottom)\n    let segIdx = segments.length - 1;     // Start from last segment\n\n    while (segIdx >= 0 && pathIdx >= 0) {\n      const segment = segments[segIdx];\n\n      if (segment.type === 'deep-wildcard') {\n        // \"..\" matches zero or more levels\n        segIdx--;\n\n        if (segIdx < 0) {\n          // Pattern ends with \"..\", always matches\n          return true;\n        }\n\n        // Find where next segment matches in the path\n        const nextSeg = segments[segIdx];\n        let found = false;\n\n        for (let i = pathIdx; i >= 0; i--) {\n          const isCurrentNode = (i === this.path.length - 1);\n          if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n            pathIdx = i - 1;\n            segIdx--;\n            found = true;\n            break;\n          }\n        }\n\n        if (!found) {\n          return false;\n        }\n      } else {\n        // Regular segment\n        const isCurrentNode = (pathIdx === this.path.length - 1);\n        if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n          return false;\n        }\n        pathIdx--;\n        segIdx--;\n      }\n    }\n\n    // All segments must be consumed\n    return segIdx < 0;\n  }\n\n  /**\n   * Match a single segment against a node\n   * @private\n   * @param {Object} segment - Segment from Expression\n   * @param {Object} node - Node from path\n   * @param {boolean} isCurrentNode - Whether this is the current (last) node\n   * @returns {boolean}\n   */\n  _matchSegment(segment, node, isCurrentNode) {\n    // Match tag name (* is wildcard)\n    if (segment.tag !== '*' && segment.tag !== node.tag) {\n      return false;\n    }\n\n    // Match namespace if specified in segment\n    if (segment.namespace !== undefined) {\n      // Segment has namespace - node must match it\n      if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n        return false;\n      }\n    }\n    // If segment has no namespace, it matches nodes with or without namespace\n\n    // Match attribute name (check if node has this attribute)\n    // Can only check for current node since ancestors don't have values\n    if (segment.attrName !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check attributes for ancestor nodes (values not stored)\n        return false;\n      }\n\n      if (!node.values || !(segment.attrName in node.values)) {\n        return false;\n      }\n\n      // Match attribute value (only possible for current node)\n      if (segment.attrValue !== undefined) {\n        const actualValue = node.values[segment.attrName];\n        // Both should be strings\n        if (String(actualValue) !== String(segment.attrValue)) {\n          return false;\n        }\n      }\n    }\n\n    // Match position (only for current node)\n    if (segment.position !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check position for ancestor nodes\n        return false;\n      }\n\n      const counter = node.counter ?? 0;\n\n      if (segment.position === 'first' && counter !== 0) {\n        return false;\n      } else if (segment.position === 'odd' && counter % 2 !== 1) {\n        return false;\n      } else if (segment.position === 'even' && counter % 2 !== 0) {\n        return false;\n      } else if (segment.position === 'nth') {\n        if (counter !== segment.positionValue) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Create a snapshot of current state\n   * @returns {Object} State snapshot\n   */\n  snapshot() {\n    return {\n      path: this.path.map(node => ({ ...node })),\n      siblingStacks: this.siblingStacks.map(map => new Map(map))\n    };\n  }\n\n  /**\n   * Restore state from snapshot\n   * @param {Object} snapshot - State snapshot\n   */\n  restore(snapshot) {\n    this.path = snapshot.path.map(node => ({ ...node }));\n    this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n  }\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n \nconst consider = {\n    hex :  true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/\n};\n\nexport default function toNumber(str, options = {}){\n    options = Object.assign({}, consider, options );\n    if(!str || typeof str !== \"string\" ) return str;\n    \n    let trimmedStr  = str.trim();\n    \n    if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if(str===\"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n    // }else if (options.oct && octRegex.test(str)) {\n    //     return Number.parseInt(val, 8);\n    }else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n        return resolveEnotation(str,trimmedStr,options);\n    // }else if (options.parseBin && binRegex.test(str)) {\n    //     return Number.parseInt(val, 2);\n    }else{\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        // +00.123 => [ , '+', '00', '.123', ..\n        if(match){\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length+1] === \".\" \n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if(!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1 \n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))){\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else{//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if( num === 0) return num;\n                if(parsedStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n                    if(options.eNotation) return num;\n                    else return str;\n                }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n                    if(parsedStr === \"0\") return num; //0.0\n                    else if(parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if( parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n                \n                let n = leadingZeros? numTrimmedByZeros : trimmedStr;\n                if(leadingZeros){\n                    // -009 => -9\n                    return (n === parsedStr) || (sign+n === parsedStr) ? num : str\n                }else  {\n                    // +9\n                    return (n === parsedStr) || (n === sign+parsedStr) ? num : str\n                }\n            }\n        }else{ //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str,trimmedStr,options){\n    if(!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx); \n    if(notation){\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length+1] === eChar \n            : str[leadingZeros.length] === eChar;\n\n        if(leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if(leadingZeros.length === 1 \n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)){\n                return Number(trimmedStr);\n        }else if(options.leadingZeros && !eAdjacentToLeadingZeros){ //accept with leading zeros\n            //remove leading 0s\n            trimmedStr = (notation[1] || \"\") + notation[3];\n            return Number(trimmedStr);\n        }else return str;\n    }else{\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n    if(numStr && numStr.indexOf(\".\") !== -1){//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if(numStr === \".\")  numStr = \"0\";\n        else if(numStr[0] === \".\")  numStr = \"0\"+numStr;\n        else if(numStr[numStr.length-1] === \".\")  numStr = numStr.substring(0,numStr.length-1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base){\n    //polyfill\n    if(parseInt) return parseInt(numStr, base);\n    else if(Number.parseInt) return Number.parseInt(numStr, base);\n    else if(window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}","function normalize (strArray) {\n  var resultArray = [];\n  if (strArray.length === 0) { return ''; }\n\n  if (typeof strArray[0] !== 'string') {\n    throw new TypeError('Url must be a string. Received ' + strArray[0]);\n  }\n\n  // If the first part is a plain protocol, we combine it with the next part.\n  if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n    var first = strArray.shift();\n    strArray[0] = first + strArray[0];\n  }\n\n  // There must be two or three slashes in the file protocol, two slashes in anything else.\n  if (strArray[0].match(/^file:\\/\\/\\//)) {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n  } else {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n  }\n\n  for (var i = 0; i < strArray.length; i++) {\n    var component = strArray[i];\n\n    if (typeof component !== 'string') {\n      throw new TypeError('Url must be a string. Received ' + component);\n    }\n\n    if (component === '') { continue; }\n\n    if (i > 0) {\n      // Removing the starting slashes for each component but the first.\n      component = component.replace(/^[\\/]+/, '');\n    }\n    if (i < strArray.length - 1) {\n      // Removing the ending slashes for each component but the last.\n      component = component.replace(/[\\/]+$/, '');\n    } else {\n      // For the last component we will combine multiple slashes to a single one.\n      component = component.replace(/[\\/]+$/, '/');\n    }\n\n    resultArray.push(component);\n\n  }\n\n  var str = resultArray.join('/');\n  // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n  // remove trailing slash before parameters or hash\n  str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n  // replace ? in parameters with &\n  var parts = str.split('?');\n  str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n  return str;\n}\n\nexport default function urlJoin() {\n  var input;\n\n  if (typeof arguments[0] === 'object') {\n    input = arguments[0];\n  } else {\n    input = [].slice.call(arguments);\n  }\n\n  return normalize(input);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n    const encoded = toBase64(`${username}:${password}`);\n    return `Basic ${encoded}`;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n    return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n    const url = options.url.replace(\"//\", \"\");\n    const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n    const method = options.method ? options.method.toUpperCase() : \"GET\";\n    const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n    const ncString = `00000000${digest.nc}`.slice(-8);\n    const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n    const ha2 = md5(`${method}:${uri}`);\n    const digestResponse = qop\n        ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n        : md5(`${ha1}:${digest.nonce}:${ha2}`);\n    const authValues = {\n        username: digest.username,\n        realm: digest.realm,\n        nonce: digest.nonce,\n        uri,\n        qop,\n        response: digestResponse,\n        nc: ncString,\n        cnonce: digest.cnonce,\n        algorithm: digest.algorithm,\n        opaque: digest.opaque\n    };\n    const authHeader = [];\n    for (const k in authValues) {\n        if (authValues[k]) {\n            if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n                authHeader.push(`${k}=${authValues[k]}`);\n            }\n            else {\n                authHeader.push(`${k}=\"${authValues[k]}\"`);\n            }\n        }\n    }\n    return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n    let uid = \"\";\n    for (let i = 0; i < NONCE_SIZE; ++i) {\n        uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n    }\n    return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n    const isDigest = responseIndicatesDigestAuth(response);\n    if (!isDigest) {\n        return false;\n    }\n    const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n    for (;;) {\n        const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n        const match = re.exec(authHeader);\n        if (!match) {\n            break;\n        }\n        _digest[match[1]] = match[2] || match[3];\n    }\n    _digest.nc += 1;\n    _digest.cnonce = makeNonce();\n    return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n    const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n    return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n    switch (context.authType) {\n        case AuthType.Auto:\n            if (username && password) {\n                context.headers.Authorization = generateBasicAuthHeader(username, password);\n            }\n            break;\n        case AuthType.Digest:\n            context.digest = createDigestContext(username, password, ha1);\n            break;\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password:\n            context.headers.Authorization = generateBasicAuthHeader(username, password);\n            break;\n        case AuthType.Token:\n            context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n            break;\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.InvalidAuthType\n                }\n            }, `Invalid auth type: ${context.authType}`);\n    }\n}\n","export function generateTokenAuthHeader(token) {\n    return `${token.token_type} ${token.access_token}`;\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n    return (hasArrayBuffer &&\n        (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n    return (value != null &&\n        value.constructor != null &&\n        typeof value.constructor.isBuffer === \"function\" &&\n        value.constructor.isBuffer(value));\n}\n","export function isReactNative() {\n    return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n    return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n    if (!__patcher) {\n        __patcher = new HotPatcher();\n    }\n    return __patcher;\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"OPTIONS\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        throw error;\n    }\n    const davHeader = response.headers.get(\"DAV\") ?? \"\";\n    const compliance = davHeader.split(\",\").map(item => item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n    const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n    const headers = {\n        Accept: \"text/plain,application/xml\",\n        Timeout: timeout\n    };\n    if (refreshToken) {\n        headers.If = refreshToken;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"LOCK\",\n        headers,\n        data: generateLockXML(context.contactHref)\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const lockPayload = parseGenericResponse(responseData);\n    const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n    const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n    if (!token) {\n        const err = createErrorFromResponse(response, \"No lock token received: \");\n        throw err;\n    }\n    return {\n        token,\n        serverTimeout\n    };\n}\nexport async function unlock(context, path, token, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"UNLOCK\",\n        headers: {\n            \"Lock-Token\": token\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (response.status !== 204 && response.status !== 200) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n    let headers = {};\n    // Handle standard options\n    const opts = {\n        method: requestOptions.method\n    };\n    if (requestOptions.headers) {\n        headers = mergeHeaders(headers, requestOptions.headers);\n    }\n    if (typeof requestOptions.data !== \"undefined\") {\n        const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n        opts.body = body;\n        headers = mergeHeaders(headers, newHeaders);\n    }\n    if (requestOptions.signal) {\n        opts.signal = requestOptions.signal;\n    }\n    if (requestOptions.withCredentials) {\n        opts.credentials = \"include\";\n    }\n    // Check for node-specific options\n    if (!isWeb() && !isReactNative()) {\n        if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n            opts.agent = (parsedURL) => {\n                if (parsedURL.protocol === \"http:\") {\n                    return requestOptions.httpAgent || new HTTPAgent();\n                }\n                return requestOptions.httpsAgent || new HTTPSAgent();\n            };\n        }\n    }\n    // Attach headers\n    opts.headers = headers;\n    return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n    const finalOptions = cloneShallow(requestOptions);\n    finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n    if (typeof userOptions.data !== \"undefined\") {\n        finalOptions.data = userOptions.data;\n    }\n    if (userOptions.signal) {\n        finalOptions.signal = userOptions.signal;\n    }\n    if (context.httpAgent) {\n        finalOptions.httpAgent = context.httpAgent;\n    }\n    if (context.httpsAgent) {\n        finalOptions.httpsAgent = context.httpsAgent;\n    }\n    if (context.digest) {\n        finalOptions._digest = context.digest;\n    }\n    if (typeof context.withCredentials === \"boolean\") {\n        finalOptions.withCredentials = context.withCredentials;\n    }\n    return finalOptions;\n}\nexport async function request(requestOptions, context) {\n    if (context.authType === AuthType.Auto) {\n        return requestAuto(requestOptions, context);\n    }\n    if (requestOptions._digest) {\n        return requestDigest(requestOptions);\n    }\n    return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n    const response = await requestStandard(requestOptions);\n    if (response.ok) {\n        context.authType = AuthType.Password;\n        return response;\n    }\n    if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n        context.authType = AuthType.Digest;\n        setupAuth(context, context.username, context.password, undefined, undefined);\n        requestOptions._digest = context.digest;\n        return requestDigest(requestOptions);\n    }\n    return response;\n}\nasync function requestDigest(requestOptions) {\n    // Remove client's digest authentication object from request options\n    const _digest = requestOptions._digest;\n    delete requestOptions._digest;\n    // If client is already using digest authentication, include the digest authorization header\n    if (_digest.hasDigestAuth) {\n        requestOptions = merge(requestOptions, {\n            headers: {\n                Authorization: generateDigestAuthHeader(requestOptions, _digest)\n            }\n        });\n    }\n    // Perform digest request + check\n    const response = await requestStandard(requestOptions);\n    if (response.status == 401) {\n        _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n        if (_digest.hasDigestAuth) {\n            requestOptions = merge(requestOptions, {\n                headers: {\n                    Authorization: generateDigestAuthHeader(requestOptions, _digest)\n                }\n            });\n            const response2 = await requestStandard(requestOptions);\n            if (response2.status == 401) {\n                _digest.hasDigestAuth = false;\n            }\n            else {\n                _digest.nc++;\n            }\n            return response2;\n        }\n    }\n    else {\n        _digest.nc++;\n    }\n    return response;\n}\nfunction requestStandard(requestOptions) {\n    const patcher = getPatcher();\n    return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n    if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n        // @ts-ignore\n        return [data, {}];\n    }\n    if (typeof data === \"string\") {\n        return [data, {}];\n    }\n    else if (isBuffer(data)) {\n        return [data, {}];\n    }\n    else if (isArrayBuffer(data)) {\n        return [data, {}];\n    }\n    else if (data && typeof data === \"object\") {\n        return [\n            JSON.stringify(data),\n            {\n                \"content-type\": \"application/json\"\n            }\n        ];\n    }\n    throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n    const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n    if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n        return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n    }\n    return ha1Hash;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n    if (isWeb()) {\n        const txt = document.createElement(\"textarea\");\n        txt.innerHTML = text;\n        return txt.value;\n    }\n    return decodeHTML(text);\n}\nexport function fromBase64(text) {\n    return base64.decode(text);\n}\nexport function toBase64(text) {\n    return base64.encode(text);\n}\n","export function convertResponseHeaders(headers) {\n    const output = {};\n    for (const key of headers.keys()) {\n        output[key] = headers.get(key);\n    }\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","export function cloneShallow(obj) {\n    return isPlainObject(obj)\n        ? Object.assign({}, obj)\n        : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n    if (typeof obj !== \"object\" ||\n        obj === null ||\n        Object.prototype.toString.call(obj) != \"[object Object]\") {\n        // Not an object\n        return false;\n    }\n    if (Object.getPrototypeOf(obj) === null) {\n        return true;\n    }\n    let proto = obj;\n    // Find the prototype\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n    let output = null, items = [...args];\n    while (items.length > 0) {\n        const nextItem = items.shift();\n        if (!output) {\n            output = cloneShallow(nextItem);\n        }\n        else {\n            output = mergeObjects(output, nextItem);\n        }\n    }\n    return output;\n}\nfunction mergeObjects(obj1, obj2) {\n    const output = cloneShallow(obj1);\n    Object.keys(obj2).forEach(key => {\n        if (!output.hasOwnProperty(key)) {\n            output[key] = obj2[key];\n            return;\n        }\n        if (Array.isArray(obj2[key])) {\n            output[key] = Array.isArray(output[key])\n                ? [...output[key], ...obj2[key]]\n                : [...obj2[key]];\n        }\n        else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n            output[key] =\n                typeof output[key] === \"object\" && !!output[key]\n                    ? mergeObjects(output[key], obj2[key])\n                    : cloneShallow(obj2[key]);\n        }\n        else {\n            output[key] = obj2[key];\n        }\n    });\n    return output;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n    try {\n        const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n        const formatted = encodeURIComponent(replaced);\n        return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed encoding path\");\n    }\n}\nexport function getAllDirectories(directory) {\n    if (!directory || directory === \"/\")\n        return [];\n    let currentPath = directory;\n    const output = [];\n    do {\n        output.push(currentPath);\n        currentPath = path.dirname(currentPath);\n    } while (currentPath && currentPath !== \"/\");\n    return output;\n}\nexport function makePathAbsolute(pathStr) {\n    return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n    let normalisedPath = pathStr;\n    if (normalisedPath[0] !== \"/\") {\n        normalisedPath = \"/\" + normalisedPath;\n    }\n    if (/^.+\\/$/.test(normalisedPath)) {\n        normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n    }\n    return normalisedPath;\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n    const url = new URL(fullURL);\n    let urlPath = url.pathname;\n    if (urlPath.length <= 0) {\n        urlPath = \"/\";\n    }\n    return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n    return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n        if (partIndex === 0 ||\n            nextPart !== \"/\" ||\n            (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n            output.push(nextPart);\n        }\n        return output;\n    }, []));\n}\nexport function normaliseHREF(href) {\n    try {\n        const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n        return normalisedHref;\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed normalising HREF\");\n    }\n}\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n    return getBuilder().build(namespace({\n        lockinfo: {\n            \"@_xmlns:d\": \"DAV:\",\n            lockscope: {\n                exclusive: {}\n            },\n            locktype: {\n                write: {}\n            },\n            owner: {\n                href: ownerHREF\n            }\n        }\n    }, \"d\"));\n}\nfunction getBuilder() {\n    return new XMLBuilder({\n        attributeNamePrefix: \"@_\",\n        format: true,\n        ignoreAttributes: false,\n        suppressEmptyNode: true\n    });\n}\nfunction getParser() {\n    return new XMLParser({\n        removeNSPrefix: true,\n        parseAttributeValue: true,\n        parseTagValue: true\n    });\n}\nfunction namespace(obj, ns) {\n    const copy = { ...obj };\n    for (const key in copy) {\n        if (!copy.hasOwnProperty(key)) {\n            continue;\n        }\n        if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n            copy[`${ns}:${key}`] = namespace(copy[key], ns);\n            delete copy[key];\n        }\n        else if (/^@_/.test(key) === false) {\n            copy[`${ns}:${key}`] = copy[key];\n            delete copy[key];\n        }\n    }\n    return copy;\n}\nexport function parseGenericResponse(xml) {\n    return getParser().parse(xml);\n}\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n    AuthType[\"Auto\"] = \"auto\";\n    AuthType[\"Digest\"] = \"digest\";\n    AuthType[\"None\"] = \"none\";\n    AuthType[\"Password\"] = \"password\";\n    AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n    ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n    ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n    ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n    ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n    ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [39, \"'\"],\n    [60, \"<\"],\n    [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&\"],\n    [60, \"<\"],\n    [62, \">\"],\n    [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n    /** Support only XML entities. */\n    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n    /** Support HTML entities, which are a superset of XML entities. */\n    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n    /**\n     * The output is UTF-8 encoded. Only characters that need escaping within\n     * XML will be escaped.\n     */\n    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n    /**\n     * The output consists only of ASCII characters. Characters that need\n     * escaping within HTML, and characters that aren't ASCII characters will\n     * be escaped.\n     */\n    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n    /**\n     * Encode all characters that have an equivalent entity, as well as all\n     * characters that are not ASCII characters.\n     */\n    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n    /**\n     * Encode all characters that have to be escaped in HTML attributes,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n    /**\n     * Encode all characters that have to be escaped in HTML text,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n    const level = typeof options === \"number\" ? options : options.level;\n    if (level === EntityLevel.HTML) {\n        const mode = typeof options === \"object\" ? options.mode : undefined;\n        return decodeHTML(input, mode);\n    }\n    return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n    var _a;\n    const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n    (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n    return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n    const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n    switch (mode) {\n        case EncodingMode.UTF8: {\n            return escapeUTF8(input);\n        }\n        case EncodingMode.Attribute: {\n            return escapeAttribute(input);\n        }\n        case EncodingMode.Text: {\n            return escapeText(input);\n        }\n        case EncodingMode.ASCII: {\n            return level === EntityLevel.HTML\n                ? encodeNonAsciiHTML(input)\n                : encodeXML(input);\n        }\n        // eslint-disable-next-line unicorn/no-useless-switch-case\n        case EncodingMode.Extensive:\n        default: {\n            return level === EntityLevel.HTML\n                ? encodeHTML(input)\n                : encodeXML(input);\n        }\n    }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\nconst adoptionMap = new Map([\n    ['!', ['@']],\n    ['?', ['?', '@']],\n    ['@', ['@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@']],\n]);\nconst adoptionWithSpaceMap = new Map([\n    ['!', ['?']],\n    ['@', ['?']],\n    ['+', ['?', '*']],\n]);\nconst adoptionAnyMap = new Map([\n    ['!', ['?', '@']],\n    ['?', ['?', '@']],\n    ['@', ['?', '@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@', '?', '*']],\n]);\nconst usurpMap = new Map([\n    ['!', new Map([['!', '@']])],\n    ['?', new Map([['*', '*'], ['+', '*']])],\n    ['@', new Map([['!', '!'], ['?', '?'], ['@', '@'], ['*', '*'], ['+', '+']])],\n    ['+', new Map([['?', '*'], ['*', '*']])],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof _a && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof _a && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new _a(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt, extDepth) {\n        const maxDepth = opt.maxExtglobRecursion ?? 2;\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                const doRecurse = !opt.noext &&\n                    isExtglobType(c) &&\n                    str.charAt(i) === '(' &&\n                    extDepth <= maxDepth;\n                if (doRecurse) {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new _a(c, ast);\n                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new _a(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            const doRecurse = isExtglobType(c) &&\n                str.charAt(i) === '(' &&\n                /* c8 ignore start - the maxDepth is sufficient here */\n                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n            /* c8 ignore stop */\n            if (doRecurse) {\n                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n                part.push(acc);\n                acc = '';\n                const ext = new _a(c, part);\n                part.push(ext);\n                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new _a(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    #canAdoptWithSpace(child) {\n        return this.#canAdopt(child, adoptionWithSpaceMap);\n    }\n    #canAdopt(child, map = adoptionMap) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canAdoptType(gc.type, map);\n    }\n    #canAdoptType(c, map = adoptionAnyMap) {\n        return !!map.get(this.type)?.includes(c);\n    }\n    #adoptWithSpace(child, index) {\n        const gc = child.#parts[0];\n        const blank = new _a(null, gc, this.options);\n        blank.#parts.push('');\n        gc.push(blank);\n        this.#adopt(child, index);\n    }\n    #adopt(child, index) {\n        const gc = child.#parts[0];\n        this.#parts.splice(index, 1, ...gc.#parts);\n        for (const p of gc.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.#toString = undefined;\n    }\n    #canUsurpType(c) {\n        const m = usurpMap.get(this.type);\n        return !!(m?.has(c));\n    }\n    #canUsurp(child) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null ||\n            this.#parts.length !== 1) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canUsurpType(gc.type);\n    }\n    #usurp(child) {\n        const m = usurpMap.get(this.type);\n        const gc = child.#parts[0];\n        const nt = m?.get(gc.type);\n        /* c8 ignore start - impossible */\n        if (!nt)\n            return false;\n        /* c8 ignore stop */\n        this.#parts = gc.#parts;\n        for (const p of this.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.type = nt;\n        this.#toString = undefined;\n        this.#emptyExt = false;\n    }\n    #flatten() {\n        if (!isExtglobAST(this)) {\n            for (const p of this.#parts) {\n                if (typeof p === 'object')\n                    p.#flatten();\n            }\n        }\n        else {\n            let iterations = 0;\n            let done = false;\n            do {\n                done = true;\n                for (let i = 0; i < this.#parts.length; i++) {\n                    const c = this.#parts[i];\n                    if (typeof c === 'object') {\n                        c.#flatten();\n                        if (this.#canAdopt(c)) {\n                            done = false;\n                            this.#adopt(c, i);\n                        }\n                        else if (this.#canAdoptWithSpace(c)) {\n                            done = false;\n                            this.#adoptWithSpace(c, i);\n                        }\n                        else if (this.#canUsurp(c)) {\n                            done = false;\n                            this.#usurp(c);\n                        }\n                    }\n                }\n            } while (!done && ++iterations < 10);\n        }\n        this.#toString = undefined;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new _a(null, undefined, options);\n        _a.#parseAST(pattern, ast, 0, options, 0);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this) {\n            this.#flatten();\n            this.#fillNegs();\n        }\n        if (!isExtglobAST(this)) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? _a.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            const me = this;\n            me.#parts = [s];\n            me.type = null;\n            me.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        // multiple stars that aren't globstars coalesce into one *\n        let inStar = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                inStar = false;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    inStar = false;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (inStar)\n                    continue;\n                inStar = true;\n                re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n                hasMagic = true;\n                continue;\n            }\n            else {\n                inStar = false;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    maxGlobstarRecursion;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(GLOBSTAR);\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0))\n                return false;\n            fileIndex += head.length;\n        }\n        let fileTailMatch = 0;\n        if (tail.length) {\n            if (tail.length + fileIndex > file.length)\n                return false;\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0))\n                    return false;\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return partial || sawSome;\n        }\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false)\n                    return sub;\n            }\n            const f = file[fileIndex];\n            if (f === '.' || f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex, pi = patternIndex,\n            fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            /* c8 ignore start */\n            if (p === false || p === GLOBSTAR)\n                return false;\n            /* c8 ignore stop */\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        if (fi === fl && pi === pl) {\n            return true;\n        }\n        else if (fi === fl) {\n            return partial;\n        }\n        else if (pi === pl) {\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"428c2ff62c4b8b3c97fc\",\"3556\":\"57d00a12b4953e229068\",\"4508\":\"bd9a6bf4d650882814a8\",\"4906\":\"75718b28aced26adc4af\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"fa22a350943490669cfb\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7039\":\"be7eefcb933f99fc5b1f\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8124\":\"75a422293ae2add34a10\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(80609)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","client","createClient","getRootPath","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","generateRemoteUrl","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","loadState","undefined","window","OCA","Activity","registerSidebarAction","addEventListener","mount","async","el","node","reload","pinia","createPinia","default","ActivityCommentAction","extend","propsData","reloadCallback","resourceId","fileid","logger","info","unmount","$destroy","registerSidebarEntries","limit","offset","data","comments","getComments","resourceType","debug","CommentView","CommentsViewObject","map","comment","_CommentsViewInstance","timestamp","moment","props","creationDateTime","toDate","getTime","element","this","registerSidebarFilter","activity","type","registerSidebarTab","id","displayName","t","iconSvgInline","order","onInit","FilesSidebarTab","mixin","webComponent","wrap","Object","defineProperty","prototype","value","get","customElements","define","DEFAULT_LIMIT","options","resourcePath","join","datetime","toISOString","response","customRequest","method","responseData","text","stat","result","isDetailed","multistatus","responseItems","item","propstat","prop","prepareFileFromProps","toString","getDirectoryFiles","parseXML","processResponsePayload","balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","length","post","reg","m","match","begs","beg","left","right","ai","indexOf","bi","i","push","pop","module","exports","freeGlobal","global","InvalidCharacterError","message","Error","name","error","TABLE","REGEX_SPACE_CHARACTERS","base64","input","String","test","c","buffer","padding","output","position","charCodeAt","charAt","replace","bitStorage","bitCounter","fromCharCode","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","Math","random","numeric","parseInt","parseCommaParts","parts","p","postParts","shift","apply","embrace","isPadded","lte","y","gte","isTop","expansions","k","expansion","n","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","some","need","z","Array","j","len","code","bind","$apply","$call","$reflectApply","call","actualApply","arguments","Function","$TypeError","$actualApply","args","Reflect","setFunctionLength","$defineProperty","callBindBasic","applyBind","originalFunction","func","adjustedLength","GetIntrinsic","$indexOf","allowMissing","intrinsic","$SyntaxError","gopd","obj","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","hasProtoAccessor","callBind","gOPD","__proto__","e","$Object","$getPrototypeOf","getPrototypeOf","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","isCallable","toStr","hasOwnProperty","list","iterator","thisArg","receiver","array","forEachArray","string","forEachString","object","forEachObject","concatty","arr","that","target","bound","arrLike","slicy","boundLength","boundArgs","joiny","Empty","implementation","cached","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","floor","min","pow","round","sign","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Symbol","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","Map","Number","parseFloat","Promise","Proxy","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","fn","gen","LEGACY_ALIASES","hasOwn","$concat","concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","first","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","reflectGetProto","originalGetProto","getDunderProto","O","getOwnPropertyDescriptor","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","_","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","toStringTag","$hasOwn","http","url","https","key","validateParams","params","parse","protocol","request","cb","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","document","all","strClass","isFnRegex","safeRegexTest","getGeneratorFunction","GeneratorFunction","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","whichTypedArray","$isNaN","_typeof","constructor","_wrapNativeSuper","Class","_cache","has","set","Wrapper","_construct","_getPrototypeOf","create","_setPrototypeOf","Parent","construct","sham","_isNativeReflectConstruct","instance","o","setPrototypeOf","ObjectPrototypeMutationError","_Error","_this","Constructor","_classCallCheck","self","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","path","callback","segments","_loop","idx","currentSegment","v","isArray","index","remainingSegments","pathToHere","_ret","isLastSegment","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","err","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","s","defaultStyle","opts","style","quoteStyle","quoteChar","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","from","noIndent","newOpts","f","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","globalThis","isDate","ys","isPlainObject","protoTag","stringTag","tag","l","remaining","trailer","quoteRE","lastIndex","lowbyte","size","entries","lineJoiner","isArr","symMap","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","filename","resolve","resolvedPath","resolvedAbsolute","process","cwd","normalize","isAbsolute","trailingSlash","segment","relative","to","trim","fromParts","toParts","samePartsLength","outputParts","_makeLong","dirname","root","dir","basename","ext","extname","format","pathObject","isObject","sep","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","out","basic","oldi","w","baseMinusT","inputLength","bias","lastIndexOf","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","stringify","formats","utils","defaults","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","$0","numberStr","parseArrayValue","val","currentArrayLength","parseKeys","givenKey","valuesParsed","child","parent","segmentContent","splitKeyIntoSegments","chain","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isValidArrayIndex","markOverflow","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","pos","maybeMap","encodedVal","existing","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","filter","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","sort","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","values","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","source","assign","reduce","acc","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","unescape","defaultEncoder","kind","escape","mapped","nextIndex","sourceKeys","combined","mergeTarget","targetItem","keyNum","pairs","query","parser","port","isRegex","regex","hasDescriptors","functionLengthIsConfigurable","functionLengthIsWritable","listGetNode","isDelete","curr","next","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","search","host","hostname","headers","req","on","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","open","XDomainRequest","checkTypeSupport","responseType","isFunction","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","stream","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","Buffer","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","timeout","setTimeout","headersObj","Blob","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","emit","abort","credentials","withCredentials","then","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","status","statusValid","_write","chunk","encoding","done","clearTimeout","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","Readable","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","write","reject","_resumeFetch","close","pipeTo","catch","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","responseText","newData","alloc","MSStreamReader","byteLength","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","msg","this_len","substring","endsWith","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","state","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","unshift","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","rState","current","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","copy","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","required","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","pathname","href","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","username","password","origin","char","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","env","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","line","ar","re","d","pid","types","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","add","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","availableTypedArrays","g","typedArrays","cache","typedArray","superProto","found","getter","trySlices","tryTypedArrays","possibleNames","WorkerGlobalScope","Headers","Request","Response","defaultOptions","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","attrName","preserveOrder","commentPropName","unpairedTags","entities","processEntities","stopNodes","oneListGroup","maxNestedTags","jPath","Builder","startsWith","stopNodeExpressions","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","level","matcher","attrValues","extractAttributes","checkStopNode","rawContent","buildRawContent","attrStr","buildAttributesForStopNode","buildObjectNode","j2x","buildTextValNode","jObj","arrayNodeName","getDepth","isCurrentStopNode","attr","buildAttrPairStr","newval","replaceEntitiesValue","isStopNode","textValue","closeTag","arrLen","listTagVal","listTagAttr","Ks","L","hasAttrs","attrGroup","attrKey","nestedContent","nestedAttrs","cleanKey","tagEndExp","piClosingChar","entity","getIgnoreAttributesFn","pattern","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","tagObj","propName","extractAttributeValues","tagText","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","getRawContent","includes","attrMap","attr_to_str_raw","attrVal","nameStartChar","regexName","getAllMatches","allmatches","startIndex","isName","isExist","DANGEROUS_PROPERTY_NAMES","criticalProperties","allowBooleanAttributes","validate","xmlData","tags","tagFound","reachedRoot","readPI","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","validateTagName","readAttributeStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","tagname","angleBracketsCount","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","lineNumber","lines","DocTypeReader","suppressValidationErr","readDocType","entityCount","hasBody","exp","hasSeq","entityName","readEntityExp","enabled","maxEntityCount","escaped","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","maxEntitySize","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","defaultOnDangerousProperty","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","captureMetaData","strictReservedNames","onDangerousProperty","validatePropertyName","propertyName","optionName","normalized","dangerous","normalizeProcessEntities","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","allowedTags","tagFilter","buildOptions","built","propertyNameOptions","extractRawAttributes","prefixedAttrs","rawAttrs","extractNamespace","rawTagName","colonIndex","ns","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","entityExpansionCount","currentExpandedLength","isCurrentNodeStopNode","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","jPathOrMatcher","parseValue","attrsRegx","rawAttrsForMatcher","oldVal","parsedVal","updateCurrent","jPathStr","aName","sanitizeName","newVal","attrCollection","xmlObj","textData","reset","docTypeReader","closeIndex","findClosingIndex","lastTagName","getCurrentTag","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","context","lastTag","isSelfClosing","namespace","tagContent","entityConfig","lengthBefore","parentNode","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","newTagName","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","getMetaDataSymbol","METADATA_SYMBOL","stripAttributePrefix","prettify","compress","compressedObj","isLeaf","isLeafTag","assignAttributes","atrrName","rawAttrName","propCount","XmlNode","sequence","methods","HOT_PATCHER_TYPE","NOOP","createNewItem","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","patchInline","plugin","restore","setFinal","assertError","getGlobalName","Layerr","errorOptionsOrMessage","messageText","shortMessage","super","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","parseArguments","Expression","separator","_parse","_hasDeepWildcard","seg","_hasAttributeCondition","_hasPositionSelector","currentPart","_parseSegment","bracketContent","withoutBrackets","bracketMatch","tagAndPosition","nsIndex","positionMatch","tagPart","posPart","eqIndex","attrValue","nthMatch","positionValue","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","Matcher","siblingStacks","currentLevel","siblings","siblingKey","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","includeNamespace","toArray","expression","_matchWithDeepWildcard","_matchSimple","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","actualValue","snapshot","hexRegex","numRegex","consider","decimalPoint","toNumber","trimmedStr","skipLike","numStr","parse_int","eNotationRegx","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","parsedStr","urlJoin","strArray","resultArray","component","generateBasicAuthHeader","createDigestContext","ha1","nc","algorithm","hasDigestAuth","generateDigestAuthHeader","digest","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","parseDigestAuth","_digest","responseIndicatesDigestAuth","uid","NONCE_CHARS","makeNonce","setupAuth","oauthToken","authType","Auto","Authorization","Digest","None","Password","Token","InvalidAuthType","generateTokenAuthHeader","token_type","access_token","hasArrayBuffer","objToString","isReactNative","TARGET","isWeb","__patcher","getPatcher","DEFAULT_CONTACT_HREF","remoteURL","authTypeRaw","remoteBasePath","contactHref","httpAgent","httpsAgent","parsing","attributeParsers","tagParsers","remotePath","copyFile","destination","createDirectory","createReadStream","createWriteStream","requestOptions","deleteFile","exists","getDirectoryContents","getFileContents","getFileDownloadLink","getFileUploadLink","getHeaders","getQuota","lock","moveFile","destinationFilename","putFileContents","partialUpdateFileContents","filePath","getDAVCompliance","unlock","registerAttributeParser","registerTagParser","Destination","Overwrite","overwrite","Depth","shallow","dirPath","recursive","paths","creating","testPath","createDirectoryRecursively","outStream","PassThroughStream","rangeHeader","Range","responseError","getFileStream","writeStream","maxRedirects","finalOptions","Accept","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","nodes","details","glob","compliance","server","TRANSFORM_RETAIN_FORMAT","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","getFileContentsBuffer","authPart","authContents","LinkUnsupportedAuthType","quota","DEFAULT_TIMEOUT","refreshToken","Timeout","If","lockPayload","serverTimeout","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","contentLength","getSearch","searchArbiter","results","getStat","prepareRequestOptions","userOptions","requestStandard","ok","requestDigest","requestAuto","response2","patcher","newHeaders","agent","parsedURL","getFetchOptions","createErrorFromResponse","handleResponseCode","processGlobFilter","matchBase","requestDataToFetchBody","ha1Compute","user","pass","ha1Hash","PropertyType","displaynameTagParser","getPropertyOfType","Original","xml","normaliseResponse","normaliseResult","processor","getParser","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","getcontenttype","getetag","etag","collection","lastmod","mime","displayname","parseStat","responseItem","statusLine","statusCodeStr","parseSearch","truncated","translateDiskSpace","fromBase64","toBase64","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","lowerHeader","cloneShallow","items","nextItem","mergeObjects","obj1","obj2","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","replaced","getAllDirectories","directory","currentPath","makePathAbsolute","pathStr","normalisePath","normalisedPath","parseQuota","quotaUsed","quotaAvail","used","available","calculateDataLength","DataTypeNoLength","extractURLPath","fullURL","urlPath","joinURL","nextPart","partIndex","normaliseHREF","generateLockXML","ownerHREF","lockinfo","lockscope","exclusive","locktype","owner","parseGenericResponse","AuthType","ErrorCode","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","codePointAt","EntityLevel","EncodingMode","assertValidPattern","_a","isExtglobType","isExtglobAST","adoptionMap","adoptionWithSpaceMap","adoptionAnyMap","usurpMap","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","hasMagic","pp","copyIn","toJSON","isStart","isEnd","pl","clone","ast","opt","extDepth","maxExtglobRecursion","escaping","inBrace","braceStart","braceNeg","noext","depthAdd","gc","blank","nt","iterations","fromGlob","toMMPattern","uflag","toRegExpSource","nocase","nocaseMagicOnly","flags","_src","_glob","allowDot","dot","noEmpty","aps","needNoTrav","needNoDot","repeated","me","bodyDotAllowed","_hasMagic","inStar","needUflag","consumed","magic","posixClasses","braceEscape","rangesToString","ranges","parseClass","negs","sawStart","negate","endPos","rangeStart","WHILE","cls","unip","neg","sranges","snegs","windowsPathsNoEscape","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","defaultPlatform","__MINIMATCH_TESTING_PLATFORM__","platform","GLOBSTAR","def","orig","makeRe","braceExpand","nobrace","mm","nonull","globMagic","nonegate","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","maxGlobstarRecursion","regexp","allowWindowsEscape","make","magicalBraces","parseNegate","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","levelTwoFileOptimize","didSomething","dd","gss","p2","other","splin","matched","partsMatch","emptyGSMatch","which","negateOffset","matchOne","fileStartIndex","patternStartIndex","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fileIndex","patternIndex","firstgs","lastgs","fileHead","fileTailMatch","tailStart","sawSome","bodySegments","currentBody","nonGsParts","nonGsPartsSums","fileLength","bodyIndex","globStarDepth","sawTail","bs","after","sub","fi","pi","fl","hit","fastTest","twoStar","ex","ff","flipNegate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","__esModule","definition","chunkId","promises","script","needAttach","scripts","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"comments-comments-tab.js?v=f87d75ec351c5c108973","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/comments/src/logger.js","webpack:///nextcloud/apps/comments/src/services/DavClient.js","webpack:///nextcloud/apps/comments/src/utils/davUtils.js","webpack:///nextcloud/apps/comments/src/comments-activity-tab.ts","webpack:///nextcloud/apps/comments/src/files-sidebar.ts","webpack:///nextcloud/apps/comments/src/utils/activity.ts","webpack:///nextcloud/apps/comments/src/services/GetComments.ts","webpack:///nextcloud/node_modules/balanced-match/index.js","webpack:///nextcloud/node_modules/base-64/base64.js","webpack:///nextcloud/node_modules/brace-expansion/index.js","webpack:///nextcloud/node_modules/builtin-status-codes/browser.js","webpack:///nextcloud/node_modules/byte-length/dist/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/actualApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/applyBind.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionApply.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/functionCall.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/index.js","webpack:///nextcloud/node_modules/call-bind-apply-helpers/reflectApply.js","webpack:///nextcloud/node_modules/call-bind/index.js","webpack:///nextcloud/node_modules/call-bound/index.js","webpack:///nextcloud/node_modules/define-data-property/index.js","webpack:///nextcloud/node_modules/dunder-proto/get.js","webpack:///nextcloud/node_modules/es-define-property/index.js","webpack:///nextcloud/node_modules/es-errors/eval.js","webpack:///nextcloud/node_modules/es-errors/index.js","webpack:///nextcloud/node_modules/es-errors/range.js","webpack:///nextcloud/node_modules/es-errors/ref.js","webpack:///nextcloud/node_modules/es-errors/syntax.js","webpack:///nextcloud/node_modules/es-errors/type.js","webpack:///nextcloud/node_modules/es-errors/uri.js","webpack:///nextcloud/node_modules/es-object-atoms/index.js","webpack:///nextcloud/node_modules/for-each/index.js","webpack:///nextcloud/node_modules/function-bind/implementation.js","webpack:///nextcloud/node_modules/function-bind/index.js","webpack:///nextcloud/node_modules/generator-function/index.js","webpack:///nextcloud/node_modules/get-intrinsic/index.js","webpack:///nextcloud/node_modules/get-proto/Object.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/Reflect.getPrototypeOf.js","webpack:///nextcloud/node_modules/get-proto/index.js","webpack:///nextcloud/node_modules/gopd/gOPD.js","webpack:///nextcloud/node_modules/gopd/index.js","webpack:///nextcloud/node_modules/has-property-descriptors/index.js","webpack:///nextcloud/node_modules/has-symbols/index.js","webpack:///nextcloud/node_modules/has-symbols/shams.js","webpack:///nextcloud/node_modules/has-tostringtag/shams.js","webpack:///nextcloud/node_modules/hasown/index.js","webpack:///nextcloud/node_modules/https-browserify/index.js","webpack:///nextcloud/node_modules/is-arguments/index.js","webpack:///nextcloud/node_modules/is-callable/index.js","webpack:///nextcloud/node_modules/is-generator-function/index.js","webpack:///nextcloud/node_modules/is-regex/index.js","webpack:///nextcloud/node_modules/is-typed-array/index.js","webpack:///nextcloud/node_modules/math-intrinsics/abs.js","webpack:///nextcloud/node_modules/math-intrinsics/floor.js","webpack:///nextcloud/node_modules/math-intrinsics/isNaN.js","webpack:///nextcloud/node_modules/math-intrinsics/max.js","webpack:///nextcloud/node_modules/math-intrinsics/min.js","webpack:///nextcloud/node_modules/math-intrinsics/pow.js","webpack:///nextcloud/node_modules/math-intrinsics/round.js","webpack:///nextcloud/node_modules/math-intrinsics/sign.js","webpack:///nextcloud/node_modules/nested-property/dist/nested-property.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/path-posix/index.js","webpack:///nextcloud/node_modules/possible-typed-array-names/index.js","webpack:///nextcloud/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/querystringify/index.js","webpack:///nextcloud/node_modules/requires-port/index.js","webpack:///nextcloud/node_modules/safe-regex-test/index.js","webpack:///nextcloud/node_modules/set-function-length/index.js","webpack:///nextcloud/node_modules/side-channel-list/index.js","webpack:///nextcloud/node_modules/side-channel-map/index.js","webpack:///nextcloud/node_modules/side-channel-weakmap/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/stream-http/index.js","webpack:///nextcloud/node_modules/stream-http/lib/capability.js","webpack:///nextcloud/node_modules/stream-http/lib/request.js","webpack:///nextcloud/node_modules/stream-http/lib/response.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/errors-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_duplex.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_readable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_transform.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/_stream_writable.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/async_iterator.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/buffer_list.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/end-of-stream.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/from-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/pipeline.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/state.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///nextcloud/node_modules/stream-http/node_modules/readable-stream/readable-browser.js","webpack:///nextcloud/node_modules/url-parse/index.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/node_modules/util/support/isBufferBrowser.js","webpack:///nextcloud/node_modules/util/support/types.js","webpack:///nextcloud/node_modules/util/util.js","webpack:///nextcloud/node_modules/which-typed-array/index.js","webpack:///nextcloud/node_modules/xtend/immutable.js","webpack:///nextcloud/node_modules/available-typed-arrays/index.js","webpack:///nextcloud/node_modules/@buttercup/fetch/dist/index.browser.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/fxb.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-builder/src/orderedJs2Xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/ignoreAttributes.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/util.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/validator.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/node2json.js","webpack:///nextcloud/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","webpack:///nextcloud/node_modules/hot-patcher/dist/functions.js","webpack:///nextcloud/node_modules/hot-patcher/dist/patcher.js","webpack:///nextcloud/node_modules/layerr/dist/error.js","webpack:///nextcloud/node_modules/layerr/dist/global.js","webpack:///nextcloud/node_modules/layerr/dist/layerr.js","webpack:///nextcloud/node_modules/layerr/dist/tools.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Expression.js","webpack:///nextcloud/node_modules/path-expression-matcher/src/Matcher.js","webpack:///nextcloud/node_modules/strnum/strnum.js","webpack:///nextcloud/node_modules/url-join/lib/url-join.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/basic.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/digest.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/index.js","webpack:///nextcloud/node_modules/webdav/dist/node/auth/oauth.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/arrayBuffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/buffer.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/env.js","webpack:///nextcloud/node_modules/webdav/dist/node/compat/patcher.js","webpack:///nextcloud/node_modules/webdav/dist/node/factory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/copyFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createDirectory.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/createStream.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/customRequest.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/deleteFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/directoryContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/exists.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getDAVCompliance.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/getQuota.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/lock.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/moveFile.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/partialUpdateFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/putFileContents.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/search.js","webpack:///nextcloud/node_modules/webdav/dist/node/operations/stat.js","webpack:///nextcloud/node_modules/webdav/dist/node/request.js","webpack:///nextcloud/node_modules/webdav/dist/node/response.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/body.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/crypto.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/dav.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/encode.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/headers.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/merge.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/path.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/quota.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/size.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/url.js","webpack:///nextcloud/node_modules/webdav/dist/node/tools/xml.js","webpack:///nextcloud/node_modules/webdav/dist/node/types.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode-codepoint.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/decode.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/entities/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/assert-valid-pattern.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/ast.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/brace-expressions.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/escape.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/index.js","webpack:///nextcloud/node_modules/webdav/node_modules/minimatch/dist/esm/unescape.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('comments')\n\t.detectUser()\n\t.build()\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getRequestToken, onRequestTokenUpdate } from '@nextcloud/auth'\nimport { createClient } from 'webdav'\nimport { getRootPath } from '../utils/davUtils.js'\n\n// init webdav client\nconst client = createClient(getRootPath())\n\n// set CSRF token header\n/**\n * @param token\n */\nfunction setHeaders(token) {\n\tclient.setHeaders({\n\t\t// Add this so the server knows it is an request from the browser\n\t\t'X-Requested-With': 'XMLHttpRequest',\n\t\t// Inject user auth\n\t\trequesttoken: token ?? '',\n\t})\n}\n\n// refresh headers when request token changes\nonRequestTokenUpdate(setHeaders)\nsetHeaders(getRequestToken())\n\nexport default client\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { generateRemoteUrl } from '@nextcloud/router'\n\n/**\n *\n */\nfunction getRootPath() {\n\treturn generateRemoteUrl('dav/comments')\n}\n\nexport { getRootPath }\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport moment from '@nextcloud/moment';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue, {} from 'vue';\nimport logger from './logger.js';\nimport { getComments } from './services/GetComments.js';\nVue.use(PiniaVuePlugin);\nlet ActivityTabPluginView;\nlet ActivityTabPluginInstance;\n/**\n * Register the comments plugins for the Activity sidebar\n */\nexport function registerCommentsPlugins() {\n    window.OCA.Activity.registerSidebarAction({\n        mount: async (el, { node, reload }) => {\n            const pinia = createPinia();\n            if (!ActivityTabPluginView) {\n                const { default: ActivityCommentAction } = await import('./views/ActivityCommentAction.vue');\n                // @ts-expect-error Types are broken for Vue2\n                ActivityTabPluginView = Vue.extend(ActivityCommentAction);\n            }\n            ActivityTabPluginInstance = new ActivityTabPluginView({\n                el,\n                pinia,\n                propsData: {\n                    reloadCallback: reload,\n                    resourceId: node.fileid,\n                },\n            });\n            logger.info('Comments plugin mounted in Activity sidebar action', { node });\n        },\n        unmount: () => {\n            // destroy previous instance if available\n            if (ActivityTabPluginInstance) {\n                ActivityTabPluginInstance.$destroy();\n            }\n        },\n    });\n    window.OCA.Activity.registerSidebarEntries(async ({ node, limit, offset }) => {\n        const { data: comments } = await getComments({ resourceType: 'files', resourceId: node.fileid }, {\n            limit,\n            offset: offset ?? 0,\n        });\n        logger.debug('Loaded comments', { node, comments });\n        const { default: CommentView } = await import('./views/ActivityCommentEntry.vue');\n        // @ts-expect-error Types are broken for Vue2\n        const CommentsViewObject = Vue.extend(CommentView);\n        return comments.map((comment) => ({\n            _CommentsViewInstance: undefined,\n            timestamp: moment(comment.props?.creationDateTime).toDate().getTime(),\n            mount(element, { reload }) {\n                this._CommentsViewInstance = new CommentsViewObject({\n                    el: element,\n                    propsData: {\n                        comment,\n                        resourceId: node.fileid,\n                        reloadCallback: reload,\n                    },\n                });\n            },\n            unmount() {\n                this._CommentsViewInstance?.$destroy();\n            },\n        }));\n    });\n    window.OCA.Activity.registerSidebarFilter((activity) => activity.type !== 'comments');\n    logger.info('Comments plugin registered for Activity sidebar action');\n}\n","/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MessageReplyText from '@mdi/svg/svg/message-reply-text.svg?raw';\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { registerSidebarTab } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport { createPinia, PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport { registerCommentsPlugins } from './comments-activity-tab.ts';\nimport { isUsingActivityIntegration } from './utils/activity.ts';\n__webpack_nonce__ = getCSPNonce();\nconst tagName = 'comments_files-sidebar-tab';\nif (isUsingActivityIntegration()) {\n    // Do not mount own tab but mount into activity\n    window.addEventListener('DOMContentLoaded', function () {\n        registerCommentsPlugins();\n    });\n}\nelse {\n    registerSidebarTab({\n        id: 'comments',\n        displayName: t('comments', 'Comments'),\n        iconSvgInline: MessageReplyText,\n        order: 50,\n        tagName,\n        async onInit() {\n            const { default: FilesSidebarTab } = await import('./views/FilesSidebarTab.vue');\n            Vue.use(PiniaVuePlugin);\n            Vue.mixin({ pinia: createPinia() });\n            const webComponent = wrap(Vue, FilesSidebarTab);\n            // In Vue 2, wrap doesn't support disabling shadow. Disable with a hack\n            Object.defineProperty(webComponent.prototype, 'attachShadow', {\n                value() { return this; },\n            });\n            Object.defineProperty(webComponent.prototype, 'shadowRoot', {\n                get() { return this; },\n            });\n            window.customElements.define(tagName, webComponent);\n        },\n    });\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check if the comments app is using the Activity app integration for the sidebar.\n */\nexport function isUsingActivityIntegration() {\n    return loadState('comments', 'activityEnabled', false) && window.OCA?.Activity?.registerSidebarAction !== undefined;\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { parseXML } from 'webdav';\nimport { processResponsePayload } from 'webdav/dist/node/response.js';\nimport { prepareFileFromProps } from 'webdav/dist/node/tools/dav.js';\nimport client from './DavClient.js';\nexport const DEFAULT_LIMIT = 20;\n/**\n * Retrieve the comments list\n *\n * @param data destructuring object\n * @param data.resourceType the resource type\n * @param data.resourceId the resource ID\n * @param [options] optional options for axios\n * @param [options.offset] the pagination offset\n * @param [options.limit] the pagination limit, defaults to 20\n * @param [options.datetime] optional date to query\n * @return the comments list\n */\nexport async function getComments({ resourceType, resourceId }, options) {\n    const resourcePath = ['', resourceType, resourceId].join('/');\n    const datetime = options.datetime ? `${options.datetime.toISOString()}` : '';\n    const response = await client.customRequest(resourcePath, {\n        method: 'REPORT',\n        data: `\n\t\t\t\n\t\t\t\t${options.limit ?? DEFAULT_LIMIT}\n\t\t\t\t${options.offset || 0}\n\t\t\t\t${datetime}\n\t\t\t`,\n        ...options,\n    });\n    const responseData = await response.text();\n    const result = await parseXML(responseData);\n    const stat = getDirectoryFiles(result, true);\n    // https://github.com/perry-mitchell/webdav-client/issues/339\n    return processResponsePayload(response, stat, true);\n}\n/**\n * https://github.com/perry-mitchell/webdav-client/blob/8d9694613c978ce7404e26a401c39a41f125f87f/source/operations/directoryContents.ts\n *\n * @param result\n * @param isDetailed\n */\nfunction getDirectoryFiles(result, isDetailed = false) {\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems }, } = result;\n    // Map all items to a consistent output structure (results)\n    return responseItems.map((item) => {\n        // Each item should contain a stat object\n        const props = item.propstat.prop;\n        return prepareFileFromProps(props, props.id.toString(), isDetailed);\n    });\n}\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n","module.exports = {\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/*\n * Calculate the byte lengths for utf8 encoded strings.\n */\nfunction byteLength(str) {\n    if (!str) {\n        return 0;\n    }\n    str = str.toString();\n    var len = str.length;\n    for (var i = str.length; i--;) {\n        var code = str.charCodeAt(i);\n        if (0xdc00 <= code && code <= 0xdfff) {\n            i--;\n        }\n        if (0x7f < code && code <= 0x7ff) {\n            len++;\n        }\n        else if (0x7ff < code && code <= 0xffff) {\n            len += 2;\n        }\n    }\n    return len;\n}\nexports.byteLength = byteLength;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\n/** @type {(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\n/** @type {(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n    return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (isArray(list)) {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n// eslint-disable-next-line no-extra-parens, no-empty-function\nconst cached = /** @type {GeneratorFunctionConstructor} */ (function* () {}.constructor);\n\n/** @type {import('.')} */\nmodule.exports = () => cached;\n\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n  if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n  params = validateParams(params)\n  return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n  params = validateParams(params)\n  return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n  if (typeof params === 'string') {\n    params = url.parse(params)\n  }\n  if (!params.protocol) {\n    params.protocol = 'https:'\n  }\n  if (params.protocol !== 'https:') {\n    throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n  }\n  return params\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar safeRegexTest = require('safe-regex-test');\nvar isFnRegex = safeRegexTest(/^\\s*(?:function)?\\*/);\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = require('get-proto');\n\nvar toStr = callBound('Object.prototype.toString');\nvar fnToStr = callBound('Function.prototype.toString');\n\nvar getGeneratorFunction = require('generator-function');\n\n/** @type {import('.')} */\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex(fnToStr(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tvar GeneratorFunction = getGeneratorFunction();\n\treturn GeneratorFunction && getProto(fn) === GeneratorFunction.prototype;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType, ...args: Parameters) => ReturnType} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n","'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","/**\n* @license nested-property https://github.com/cosmosio/nested-property\n*\n* The MIT License (MIT)\n*\n* Copyright (c) 2014-2020 Olivier Scherrer \n*/\n\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nvar ARRAY_WILDCARD = \"+\";\nvar PATH_DELIMITER = \".\";\n\nvar ObjectPrototypeMutationError = /*#__PURE__*/function (_Error) {\n  _inherits(ObjectPrototypeMutationError, _Error);\n\n  function ObjectPrototypeMutationError(params) {\n    var _this;\n\n    _classCallCheck(this, ObjectPrototypeMutationError);\n\n    _this = _possibleConstructorReturn(this, _getPrototypeOf(ObjectPrototypeMutationError).call(this, params));\n    _this.name = \"ObjectPrototypeMutationError\";\n    return _this;\n  }\n\n  return ObjectPrototypeMutationError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = {\n  set: setNestedProperty,\n  get: getNestedProperty,\n  has: hasNestedProperty,\n  hasOwn: function hasOwn(object, property, options) {\n    return this.has(object, property, options || {\n      own: true\n    });\n  },\n  isIn: isInNestedProperty,\n  ObjectPrototypeMutationError: ObjectPrototypeMutationError\n};\n/**\n * Get the property of an object nested in one or more objects or array\n * Given an object such as a.b.c.d = 5, getNestedProperty(a, \"b.c.d\") will return 5.\n * It also works through arrays. Given a nested array such as a[0].b = 5, getNestedProperty(a, \"0.b\") will return 5.\n * For accessing nested properties through all items in an array, you may use the array wildcard \"+\".\n * For instance, getNestedProperty([{a:1}, {a:2}, {a:3}], \"+.a\") will return [1, 2, 3]\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @returns the object or the the property value if found\n */\n\nfunction getNestedProperty(object, property) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _getNestedProperty(currentObject, currentProperty) {\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    return object;\n  }\n}\n/**\n * Tell if a nested object has a given property (or array a given index)\n * given an object such as a.b.c.d = 5, hasNestedProperty(a, \"b.c.d\") will return true.\n * It also returns true if the property is in the prototype chain.\n * @param {Object} object the object to get the property from\n * @param {String} property the path to the property as a string\n * @param {Object} options:\n *  - own: set to reject properties from the prototype\n * @returns true if has (property in object), false otherwise\n */\n\n\nfunction hasNestedProperty(object, property) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  if (typeof property == \"number\") {\n    return property in object;\n  }\n\n  try {\n    var has = false;\n    traverse(object, property, function _hasNestedProperty(currentObject, currentProperty, segments, index) {\n      if (isLastSegment(segments, index)) {\n        if (options.own) {\n          has = currentObject.hasOwnProperty(currentProperty);\n        } else {\n          has = currentProperty in currentObject;\n        }\n      } else {\n        return currentObject && currentObject[currentProperty];\n      }\n    });\n    return has;\n  } catch (err) {\n    return false;\n  }\n}\n/**\n * Set the property of an object nested in one or more objects\n * If the property doesn't exist, it gets created.\n * @param {Object} object\n * @param {String} property\n * @param value the value to set\n * @returns object if no assignment was made or the value if the assignment was made\n */\n\n\nfunction setNestedProperty(object, property, value) {\n  if (_typeof(object) != \"object\" || object === null) {\n    return object;\n  }\n\n  if (typeof property == \"undefined\") {\n    return object;\n  }\n\n  if (typeof property == \"number\") {\n    object[property] = value;\n    return object[property];\n  }\n\n  try {\n    return traverse(object, property, function _setNestedProperty(currentObject, currentProperty, segments, index) {\n      if (currentObject === Reflect.getPrototypeOf({})) {\n        throw new ObjectPrototypeMutationError(\"Attempting to mutate Object.prototype\");\n      }\n\n      if (!currentObject[currentProperty]) {\n        var nextPropIsNumber = Number.isInteger(Number(segments[index + 1]));\n        var nextPropIsArrayWildcard = segments[index + 1] === ARRAY_WILDCARD;\n\n        if (nextPropIsNumber || nextPropIsArrayWildcard) {\n          currentObject[currentProperty] = [];\n        } else {\n          currentObject[currentProperty] = {};\n        }\n      }\n\n      if (isLastSegment(segments, index)) {\n        currentObject[currentProperty] = value;\n      }\n\n      return currentObject[currentProperty];\n    });\n  } catch (err) {\n    if (err instanceof ObjectPrototypeMutationError) {\n      // rethrow\n      throw err;\n    } else {\n      return object;\n    }\n  }\n}\n/**\n * Tell if an object is on the path to a nested property\n * If the object is on the path, and the path exists, it returns true, and false otherwise.\n * @param {Object} object to get the nested property from\n * @param {String} property name of the nested property\n * @param {Object} objectInPath the object to check\n * @param {Object} options:\n *  - validPath: return false if the path is invalid, even if the object is in the path\n * @returns {boolean} true if the object is on the path\n */\n\n\nfunction isInNestedProperty(object, property, objectInPath) {\n  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n  if (_typeof(object) != \"object\" || object === null) {\n    return false;\n  }\n\n  if (typeof property == \"undefined\") {\n    return false;\n  }\n\n  try {\n    var isIn = false,\n        pathExists = false;\n    traverse(object, property, function _isInNestedProperty(currentObject, currentProperty, segments, index) {\n      isIn = isIn || currentObject === objectInPath || !!currentObject && currentObject[currentProperty] === objectInPath;\n      pathExists = isLastSegment(segments, index) && _typeof(currentObject) === \"object\" && currentProperty in currentObject;\n      return currentObject && currentObject[currentProperty];\n    });\n\n    if (options.validPath) {\n      return isIn && pathExists;\n    } else {\n      return isIn;\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction traverse(object, path) {\n  var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n  var segments = path.split(PATH_DELIMITER);\n  var length = segments.length;\n\n  var _loop = function _loop(idx) {\n    var currentSegment = segments[idx];\n\n    if (!object) {\n      return {\n        v: void 0\n      };\n    }\n\n    if (currentSegment === ARRAY_WILDCARD) {\n      if (Array.isArray(object)) {\n        return {\n          v: object.map(function (value, index) {\n            var remainingSegments = segments.slice(idx + 1);\n\n            if (remainingSegments.length > 0) {\n              return traverse(value, remainingSegments.join(PATH_DELIMITER), callback);\n            } else {\n              return callback(object, index, segments, idx);\n            }\n          })\n        };\n      } else {\n        var pathToHere = segments.slice(0, idx).join(PATH_DELIMITER);\n        throw new Error(\"Object at wildcard (\".concat(pathToHere, \") is not an array\"));\n      }\n    } else {\n      object = callback(object, currentSegment, segments, idx);\n    }\n  };\n\n  for (var idx = 0; idx < length; idx++) {\n    var _ret = _loop(idx);\n\n    if (_typeof(_ret) === \"object\") return _ret.v;\n  }\n\n  return object;\n}\n\nfunction isLastSegment(segments, index) {\n  return segments.length === index + 1;\n}\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\nvar util = require('util');\nvar isString = function (x) {\n  return typeof x === 'string';\n};\n\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n  var res = [];\n  for (var i = 0; i < parts.length; i++) {\n    var p = parts[i];\n\n    // ignore empty parts\n    if (!p || p === '.')\n      continue;\n\n    if (p === '..') {\n      if (res.length && res[res.length - 1] !== '..') {\n        res.pop();\n      } else if (allowAboveRoot) {\n        res.push('..');\n      }\n    } else {\n      res.push(p);\n    }\n  }\n\n  return res;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nvar splitPathRe =\n    /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/;\nvar posix = {};\n\n\nfunction posixSplitPath(filename) {\n  return splitPathRe.exec(filename).slice(1);\n}\n\n\n// path.resolve([from ...], to)\n// posix version\nposix.resolve = function() {\n  var resolvedPath = '',\n      resolvedAbsolute = false;\n\n  for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n    var path = (i >= 0) ? arguments[i] : process.cwd();\n\n    // Skip empty and invalid entries\n    if (!isString(path)) {\n      throw new TypeError('Arguments to path.resolve must be strings');\n    } else if (!path) {\n      continue;\n    }\n\n    resolvedPath = path + '/' + resolvedPath;\n    resolvedAbsolute = path.charAt(0) === '/';\n  }\n\n  // At this point the path should be resolved to a full absolute path, but\n  // handle relative paths to be safe (might happen when process.cwd() fails)\n\n  // Normalize the path\n  resolvedPath = normalizeArray(resolvedPath.split('/'),\n                                !resolvedAbsolute).join('/');\n\n  return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nposix.normalize = function(path) {\n  var isAbsolute = posix.isAbsolute(path),\n      trailingSlash = path.substr(-1) === '/';\n\n  // Normalize the path\n  path = normalizeArray(path.split('/'), !isAbsolute).join('/');\n\n  if (!path && !isAbsolute) {\n    path = '.';\n  }\n  if (path && trailingSlash) {\n    path += '/';\n  }\n\n  return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nposix.isAbsolute = function(path) {\n  return path.charAt(0) === '/';\n};\n\n// posix version\nposix.join = function() {\n  var path = '';\n  for (var i = 0; i < arguments.length; i++) {\n    var segment = arguments[i];\n    if (!isString(segment)) {\n      throw new TypeError('Arguments to path.join must be strings');\n    }\n    if (segment) {\n      if (!path) {\n        path += segment;\n      } else {\n        path += '/' + segment;\n      }\n    }\n  }\n  return posix.normalize(path);\n};\n\n\n// path.relative(from, to)\n// posix version\nposix.relative = function(from, to) {\n  from = posix.resolve(from).substr(1);\n  to = posix.resolve(to).substr(1);\n\n  function trim(arr) {\n    var start = 0;\n    for (; start < arr.length; start++) {\n      if (arr[start] !== '') break;\n    }\n\n    var end = arr.length - 1;\n    for (; end >= 0; end--) {\n      if (arr[end] !== '') break;\n    }\n\n    if (start > end) return [];\n    return arr.slice(start, end + 1);\n  }\n\n  var fromParts = trim(from.split('/'));\n  var toParts = trim(to.split('/'));\n\n  var length = Math.min(fromParts.length, toParts.length);\n  var samePartsLength = length;\n  for (var i = 0; i < length; i++) {\n    if (fromParts[i] !== toParts[i]) {\n      samePartsLength = i;\n      break;\n    }\n  }\n\n  var outputParts = [];\n  for (var i = samePartsLength; i < fromParts.length; i++) {\n    outputParts.push('..');\n  }\n\n  outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n  return outputParts.join('/');\n};\n\n\nposix._makeLong = function(path) {\n  return path;\n};\n\n\nposix.dirname = function(path) {\n  var result = posixSplitPath(path),\n      root = result[0],\n      dir = result[1];\n\n  if (!root && !dir) {\n    // No dirname whatsoever\n    return '.';\n  }\n\n  if (dir) {\n    // It has a dirname, strip trailing slash\n    dir = dir.substr(0, dir.length - 1);\n  }\n\n  return root + dir;\n};\n\n\nposix.basename = function(path, ext) {\n  var f = posixSplitPath(path)[2];\n  // TODO: make this comparison case-insensitive on windows?\n  if (ext && f.substr(-1 * ext.length) === ext) {\n    f = f.substr(0, f.length - ext.length);\n  }\n  return f;\n};\n\n\nposix.extname = function(path) {\n  return posixSplitPath(path)[3];\n};\n\n\nposix.format = function(pathObject) {\n  if (!util.isObject(pathObject)) {\n    throw new TypeError(\n        \"Parameter 'pathObject' must be an object, not \" + typeof pathObject\n    );\n  }\n\n  var root = pathObject.root || '';\n\n  if (!isString(root)) {\n    throw new TypeError(\n        \"'pathObject.root' must be a string or undefined, not \" +\n        typeof pathObject.root\n    );\n  }\n\n  var dir = pathObject.dir ? pathObject.dir + posix.sep : '';\n  var base = pathObject.base || '';\n  return dir + base;\n};\n\n\nposix.parse = function(pathString) {\n  if (!isString(pathString)) {\n    throw new TypeError(\n        \"Parameter 'pathString' must be a string, not \" + typeof pathString\n    );\n  }\n  var allParts = posixSplitPath(pathString);\n  if (!allParts || allParts.length !== 4) {\n    throw new TypeError(\"Invalid path '\" + pathString + \"'\");\n  }\n  allParts[1] = allParts[1] || '';\n  allParts[2] = allParts[2] || '';\n  allParts[3] = allParts[3] || '';\n\n  return {\n    root: allParts[0],\n    dir: allParts[0] + allParts[1].slice(0, allParts[1].length - 1),\n    base: allParts[2],\n    ext: allParts[3],\n    name: allParts[2].slice(0, allParts[2].length - allParts[3].length)\n  };\n};\n\n\nposix.sep = '/';\nposix.delimiter = ':';\n\n  module.exports = posix;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t    counter = 0,\n\t\t    length = string.length,\n\t\t    value,\n\t\t    extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t//  0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t    inputLength = input.length,\n\t\t    out,\n\t\t    i = 0,\n\t\t    n = initialN,\n\t\t    bias = initialBias,\n\t\t    basic,\n\t\t    j,\n\t\t    index,\n\t\t    oldi,\n\t\t    w,\n\t\t    k,\n\t\t    digit,\n\t\t    t,\n\t\t    /** Cached calculation results */\n\t\t    baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t    delta,\n\t\t    handledCPCount,\n\t\t    basicLength,\n\t\t    bias,\n\t\t    j,\n\t\t    m,\n\t\t    q,\n\t\t    k,\n\t\t    t,\n\t\t    currentValue,\n\t\t    output = [],\n\t\t    /** `inputLength` will hold the number of code points in `input`. */\n\t\t    inputLength,\n\t\t    /** Cached calculation results */\n\t\t    handledCPCountPlusOne,\n\t\t    baseMinusT,\n\t\t    qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's  state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false,\n    throwOnLimitExceeded: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options, currentArrayLength) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) {\n        throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n\n    var limit = options.parameterLimit === Infinity ? void undefined : options.parameterLimit;\n    var parts = cleanStr.split(\n        options.delimiter,\n        options.throwOnLimitExceeded ? limit + 1 : limit\n    );\n\n    if (options.throwOnLimitExceeded && parts.length > limit) {\n        throw new RangeError('Parameter limit exceeded. Only ' + limit + ' parameter' + (limit === 1 ? '' : 's') + ' allowed.');\n    }\n\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key;\n        var val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n\n            if (key !== null) {\n                val = utils.maybeMap(\n                    parseArrayValue(\n                        part.slice(pos + 1),\n                        options,\n                        isArray(obj[key]) ? obj[key].length : 0\n                    ),\n                    function (encodedVal) {\n                        return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                    }\n                );\n            }\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(String(val));\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (options.comma && isArray(val) && val.length > options.arrayLimit) {\n            if (options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            }\n            val = utils.combine([], val, options.arrayLimit, options.plainObjects);\n        }\n\n        if (key !== null) {\n            var existing = has.call(obj, key);\n            if (existing && options.duplicates === 'combine') {\n                obj[key] = utils.combine(\n                    obj[key],\n                    val,\n                    options.arrayLimit,\n                    options.plainObjects\n                );\n            } else if (!existing || options.duplicates === 'last') {\n                obj[key] = val;\n            }\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var currentArrayLength = 0;\n    if (chain.length > 0 && chain[chain.length - 1] === '[]') {\n        var parentKey = chain.slice(0, -1).join('');\n        currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0;\n    }\n\n    var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            if (utils.isOverflow(leaf)) {\n                // leaf is already an overflow object, preserve it\n                obj = leaf;\n            } else {\n                obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                    ? []\n                    : utils.combine(\n                        [],\n                        leaf,\n                        options.arrayLimit,\n                        options.plainObjects\n                    );\n            }\n        } else {\n            obj = options.plainObjects ? { __proto__: null } : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            var isValidArrayIndex = !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && options.parseArrays;\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (isValidArrayIndex && index < options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (isValidArrayIndex && options.throwOnLimitExceeded) {\n                throw new RangeError('Array limit exceeded. Only ' + options.arrayLimit + ' element' + (options.arrayLimit === 1 ? '' : 's') + ' allowed in an array.');\n            } else if (isValidArrayIndex) {\n                obj[index] = leaf;\n                utils.markOverflow(obj, index);\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar splitKeyIntoSegments = function splitKeyIntoSegments(givenKey, options) {\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    if (options.depth <= 0) {\n        if (!options.plainObjects && has.call(Object.prototype, key)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        return [key];\n    }\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    var segment = brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    var keys = [];\n\n    if (parent) {\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = parent;\n    }\n\n    var i = 0;\n    while ((segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n\n        var segmentContent = segment[1].slice(1, -1);\n        if (!options.plainObjects && has.call(Object.prototype, segmentContent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys[keys.length] = segment[1];\n    }\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n\n        keys[keys.length] = '[' + key.slice(segment.index) + ']';\n    }\n\n    return keys;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    var keys = splitKeyIntoSegments(givenKey, options);\n\n    if (!keys) {\n        return;\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    if (typeof opts.throwOnLimitExceeded !== 'undefined' && typeof opts.throwOnLimitExceeded !== 'boolean') {\n        throw new TypeError('`throwOnLimitExceeded` option must be a boolean');\n    }\n\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n        throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === 'boolean' ? opts.throwOnLimitExceeded : false\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? { __proto__: null } : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? { __proto__: null } : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    commaRoundTrip: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    filter: void undefined,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && key && typeof key.value !== 'undefined'\n            ? key.value\n            : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\\./g, '%2E') : String(key);\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n        var value = obj[key];\n\n        if (options.skipNulls && value === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            value,\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\nvar getSideChannel = require('side-channel');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\n// Track objects created from arrayLimit overflow using side-channel\n// Stores the current max numeric index for O(1) lookup\nvar overflowChannel = getSideChannel();\n\nvar markOverflow = function markOverflow(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n    return obj;\n};\n\nvar isOverflow = function isOverflow(obj) {\n    return overflowChannel.has(obj);\n};\n\nvar getMaxIndex = function getMaxIndex(obj) {\n    return overflowChannel.get(obj);\n};\n\nvar setMaxIndex = function setMaxIndex(obj, maxIndex) {\n    overflowChannel.set(obj, maxIndex);\n};\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array[array.length] = '%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase();\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted[compacted.length] = obj[j];\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? { __proto__: null } : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object' && typeof source !== 'function') {\n        if (isArray(target)) {\n            var nextIndex = target.length;\n            if (options && typeof options.arrayLimit === 'number' && nextIndex > options.arrayLimit) {\n                return markOverflow(arrayToObject(target.concat(source), options), nextIndex);\n            }\n            target[nextIndex] = source;\n        } else if (target && typeof target === 'object') {\n            if (isOverflow(target)) {\n                // Add at next numeric index for overflow objects\n                var newIndex = getMaxIndex(target) + 1;\n                target[newIndex] = source;\n                setMaxIndex(target, newIndex);\n            } else if (\n                (options && (options.plainObjects || options.allowPrototypes))\n                || !has.call(Object.prototype, source)\n            ) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        if (isOverflow(source)) {\n            // Create new object with target at 0, source values shifted by 1\n            var sourceKeys = Object.keys(source);\n            var result = options && options.plainObjects\n                ? { __proto__: null, 0: target }\n                : { 0: target };\n            for (var m = 0; m < sourceKeys.length; m++) {\n                var oldKey = parseInt(sourceKeys[m], 10);\n                result[oldKey + 1] = source[sourceKeys[m]];\n            }\n            return markOverflow(result, getMaxIndex(source) + 1);\n        }\n        var combined = [target].concat(source);\n        if (options && typeof options.arrayLimit === 'number' && combined.length > options.arrayLimit) {\n            return markOverflow(arrayToObject(combined, options), combined.length - 1);\n        }\n        return combined;\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target[target.length] = item;\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n\n        if (isOverflow(source) && !isOverflow(acc)) {\n            markOverflow(acc, getMaxIndex(source));\n        }\n        if (isOverflow(acc)) {\n            var keyNum = parseInt(key, 10);\n            if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) {\n                setMaxIndex(acc, keyNum);\n            }\n        }\n\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, defaultDecoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue[queue.length] = { obj: obj, prop: key };\n                refs[refs.length] = val;\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b, arrayLimit, plainObjects) {\n    // If 'a' is already an overflow object, add to it\n    if (isOverflow(a)) {\n        var newIndex = getMaxIndex(a) + 1;\n        a[newIndex] = b;\n        setMaxIndex(a, newIndex);\n        return a;\n    }\n\n    var result = [].concat(a, b);\n    if (result.length > arrayLimit) {\n        return markOverflow(arrayToObject(result, { plainObjects: plainObjects }), result.length - 1);\n    }\n    return result;\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped[mapped.length] = fn(val[i]);\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isOverflow: isOverflow,\n    isRegExp: isRegExp,\n    markOverflow: markOverflow,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n  , undef;\n\n/**\n * Decode a URI encoded string.\n *\n * @param {String} input The URI encoded string.\n * @returns {String|Null} The decoded string.\n * @api private\n */\nfunction decode(input) {\n  try {\n    return decodeURIComponent(input.replace(/\\+/g, ' '));\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Attempts to encode a given input.\n *\n * @param {String} input The string that needs to be encoded.\n * @returns {String|Null} The encoded string.\n * @api private\n */\nfunction encode(input) {\n  try {\n    return encodeURIComponent(input);\n  } catch (e) {\n    return null;\n  }\n}\n\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n * @api public\n */\nfunction querystring(query) {\n  var parser = /([^=?#&]+)=?([^&]*)/g\n    , result = {}\n    , part;\n\n  while (part = parser.exec(query)) {\n    var key = decode(part[1])\n      , value = decode(part[2]);\n\n    //\n    // Prevent overriding of existing properties. This ensures that build-in\n    // methods like `toString` or __proto__ are not overriden by malicious\n    // querystrings.\n    //\n    // In the case if failed decoding, we want to omit the key/value pairs\n    // from the result.\n    //\n    if (key === null || value === null || key in result) continue;\n    result[key] = value;\n  }\n\n  return result;\n}\n\n/**\n * Transform a query string to an object.\n *\n * @param {Object} obj Object that should be transformed.\n * @param {String} prefix Optional prefix.\n * @returns {String}\n * @api public\n */\nfunction querystringify(obj, prefix) {\n  prefix = prefix || '';\n\n  var pairs = []\n    , value\n    , key;\n\n  //\n  // Optionally prefix with a '?' if needed\n  //\n  if ('string' !== typeof prefix) prefix = '?';\n\n  for (key in obj) {\n    if (has.call(obj, key)) {\n      value = obj[key];\n\n      //\n      // Edge cases where we actually want to encode the value to an empty\n      // string instead of the stringified value.\n      //\n      if (!value && (value === null || value === undef || isNaN(value))) {\n        value = '';\n      }\n\n      key = encode(key);\n      value = encode(value);\n\n      //\n      // If we failed to encode the strings, we should bail out as we don't\n      // want to add invalid strings to the query.\n      //\n      if (key === null || value === null) continue;\n      pairs.push(key +'='+ value);\n    }\n  }\n\n  return pairs.length ? prefix + pairs.join('&') : '';\n}\n\n//\n// Expose the module.\n//\nexports.stringify = querystringify;\nexports.parse = querystring;\n","'use strict';\n\n/**\n * Check if we're required to add a port number.\n *\n * @see https://url.spec.whatwg.org/#default-port\n * @param {Number|String} port Port number we need to check\n * @param {String} protocol Protocol we need to check against.\n * @returns {Boolean} Is it a default port for the given protocol\n * @api private\n */\nmodule.exports = function required(port, protocol) {\n  protocol = protocol.split(':')[0];\n  port = +port;\n\n  if (!port) return false;\n\n  switch (protocol) {\n    case 'http':\n    case 'ws':\n    return port !== 80;\n\n    case 'https':\n    case 'wss':\n    return port !== 443;\n\n    case 'ftp':\n    return port !== 21;\n\n    case 'gopher':\n    return port !== 70;\n\n    case 'file':\n    return false;\n  }\n\n  return port !== 0;\n};\n","'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n","'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {(thisArg: Map, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {(thisArg: Map, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {(thisArg: Map, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {(thisArg: Map) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType} Channel */\n\t/** @typedef {Parameters[0]} K */\n\t/** @typedef {Parameters[1]} V */\n\n\t/** @type {Map | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {(thisArg: WeakMap, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {(thisArg: WeakMap, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {(thisArg: WeakMap, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType} Channel */\n\t\t/** @typedef {Parameters[0]} K */\n\t\t/** @typedef {Parameters[1]} V */\n\n\t\t/** @type {WeakMap | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n","'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n","var ClientRequest = require('./lib/request')\nvar response = require('./lib/response')\nvar extend = require('xtend')\nvar statusCodes = require('builtin-status-codes')\nvar url = require('url')\n\nvar http = exports\n\nhttp.request = function (opts, cb) {\n\tif (typeof opts === 'string')\n\t\topts = url.parse(opts)\n\telse\n\t\topts = extend(opts)\n\n\t// Normally, the page is loaded from http or https, so not specifying a protocol\n\t// will result in a (valid) protocol-relative url. However, this won't work if\n\t// the protocol is something else, like 'file:'\n\tvar defaultProtocol = global.location.protocol.search(/^https?:$/) === -1 ? 'http:' : ''\n\n\tvar protocol = opts.protocol || defaultProtocol\n\tvar host = opts.hostname || opts.host\n\tvar port = opts.port\n\tvar path = opts.path || '/'\n\n\t// Necessary for IPv6 addresses\n\tif (host && host.indexOf(':') !== -1)\n\t\thost = '[' + host + ']'\n\n\t// This may be a relative url. The browser should always be able to interpret it correctly.\n\topts.url = (host ? (protocol + '//' + host) : '') + (port ? ':' + port : '') + path\n\topts.method = (opts.method || 'GET').toUpperCase()\n\topts.headers = opts.headers || {}\n\n\t// Also valid opts.auth, opts.mode\n\n\tvar req = new ClientRequest(opts)\n\tif (cb)\n\t\treq.on('response', cb)\n\treturn req\n}\n\nhttp.get = function get (opts, cb) {\n\tvar req = http.request(opts, cb)\n\treq.end()\n\treturn req\n}\n\nhttp.ClientRequest = ClientRequest\nhttp.IncomingMessage = response.IncomingMessage\n\nhttp.Agent = function () {}\nhttp.Agent.defaultMaxSockets = 4\n\nhttp.globalAgent = new http.Agent()\n\nhttp.STATUS_CODES = statusCodes\n\nhttp.METHODS = [\n\t'CHECKOUT',\n\t'CONNECT',\n\t'COPY',\n\t'DELETE',\n\t'GET',\n\t'HEAD',\n\t'LOCK',\n\t'M-SEARCH',\n\t'MERGE',\n\t'MKACTIVITY',\n\t'MKCOL',\n\t'MOVE',\n\t'NOTIFY',\n\t'OPTIONS',\n\t'PATCH',\n\t'POST',\n\t'PROPFIND',\n\t'PROPPATCH',\n\t'PURGE',\n\t'PUT',\n\t'REPORT',\n\t'SEARCH',\n\t'SUBSCRIBE',\n\t'TRACE',\n\t'UNLOCK',\n\t'UNSUBSCRIBE'\n]","exports.fetch = isFunction(global.fetch) && isFunction(global.ReadableStream)\n\nexports.writableStream = isFunction(global.WritableStream)\n\nexports.abortController = isFunction(global.AbortController)\n\n// The xhr request to example.com may violate some restrictive CSP configurations,\n// so if we're running in a browser that supports `fetch`, avoid calling getXHR()\n// and assume support for certain features below.\nvar xhr\nfunction getXHR () {\n\t// Cache the xhr value\n\tif (xhr !== undefined) return xhr\n\n\tif (global.XMLHttpRequest) {\n\t\txhr = new global.XMLHttpRequest()\n\t\t// If XDomainRequest is available (ie only, where xhr might not work\n\t\t// cross domain), use the page location. Otherwise use example.com\n\t\t// Note: this doesn't actually make an http request.\n\t\ttry {\n\t\t\txhr.open('GET', global.XDomainRequest ? '/' : 'https://example.com')\n\t\t} catch(e) {\n\t\t\txhr = null\n\t\t}\n\t} else {\n\t\t// Service workers don't have XHR\n\t\txhr = null\n\t}\n\treturn xhr\n}\n\nfunction checkTypeSupport (type) {\n\tvar xhr = getXHR()\n\tif (!xhr) return false\n\ttry {\n\t\txhr.responseType = type\n\t\treturn xhr.responseType === type\n\t} catch (e) {}\n\treturn false\n}\n\n// If fetch is supported, then arraybuffer will be supported too. Skip calling\n// checkTypeSupport(), since that calls getXHR().\nexports.arraybuffer = exports.fetch || checkTypeSupport('arraybuffer')\n\n// These next two tests unavoidably show warnings in Chrome. Since fetch will always\n// be used if it's available, just return false for these to avoid the warnings.\nexports.msstream = !exports.fetch && checkTypeSupport('ms-stream')\nexports.mozchunkedarraybuffer = !exports.fetch && checkTypeSupport('moz-chunked-arraybuffer')\n\n// If fetch is supported, then overrideMimeType will be supported too. Skip calling\n// getXHR().\nexports.overrideMimeType = exports.fetch || (getXHR() ? isFunction(getXHR().overrideMimeType) : false)\n\nfunction isFunction (value) {\n\treturn typeof value === 'function'\n}\n\nxhr = null // Help gc\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar response = require('./response')\nvar stream = require('readable-stream')\n\nvar IncomingMessage = response.IncomingMessage\nvar rStates = response.readyStates\n\nfunction decideMode (preferBinary, useFetch) {\n\tif (capability.fetch && useFetch) {\n\t\treturn 'fetch'\n\t} else if (capability.mozchunkedarraybuffer) {\n\t\treturn 'moz-chunked-arraybuffer'\n\t} else if (capability.msstream) {\n\t\treturn 'ms-stream'\n\t} else if (capability.arraybuffer && preferBinary) {\n\t\treturn 'arraybuffer'\n\t} else {\n\t\treturn 'text'\n\t}\n}\n\nvar ClientRequest = module.exports = function (opts) {\n\tvar self = this\n\tstream.Writable.call(self)\n\n\tself._opts = opts\n\tself._body = []\n\tself._headers = {}\n\tif (opts.auth)\n\t\tself.setHeader('Authorization', 'Basic ' + Buffer.from(opts.auth).toString('base64'))\n\tObject.keys(opts.headers).forEach(function (name) {\n\t\tself.setHeader(name, opts.headers[name])\n\t})\n\n\tvar preferBinary\n\tvar useFetch = true\n\tif (opts.mode === 'disable-fetch' || ('requestTimeout' in opts && !capability.abortController)) {\n\t\t// If the use of XHR should be preferred. Not typically needed.\n\t\tuseFetch = false\n\t\tpreferBinary = true\n\t} else if (opts.mode === 'prefer-streaming') {\n\t\t// If streaming is a high priority but binary compatibility and\n\t\t// the accuracy of the 'content-type' header aren't\n\t\tpreferBinary = false\n\t} else if (opts.mode === 'allow-wrong-content-type') {\n\t\t// If streaming is more important than preserving the 'content-type' header\n\t\tpreferBinary = !capability.overrideMimeType\n\t} else if (!opts.mode || opts.mode === 'default' || opts.mode === 'prefer-fast') {\n\t\t// Use binary if text streaming may corrupt data or the content-type header, or for speed\n\t\tpreferBinary = true\n\t} else {\n\t\tthrow new Error('Invalid value for opts.mode')\n\t}\n\tself._mode = decideMode(preferBinary, useFetch)\n\tself._fetchTimer = null\n\tself._socketTimeout = null\n\tself._socketTimer = null\n\n\tself.on('finish', function () {\n\t\tself._onFinish()\n\t})\n}\n\ninherits(ClientRequest, stream.Writable)\n\nClientRequest.prototype.setHeader = function (name, value) {\n\tvar self = this\n\tvar lowerName = name.toLowerCase()\n\t// This check is not necessary, but it prevents warnings from browsers about setting unsafe\n\t// headers. To be honest I'm not entirely sure hiding these warnings is a good thing, but\n\t// http-browserify did it, so I will too.\n\tif (unsafeHeaders.indexOf(lowerName) !== -1)\n\t\treturn\n\n\tself._headers[lowerName] = {\n\t\tname: name,\n\t\tvalue: value\n\t}\n}\n\nClientRequest.prototype.getHeader = function (name) {\n\tvar header = this._headers[name.toLowerCase()]\n\tif (header)\n\t\treturn header.value\n\treturn null\n}\n\nClientRequest.prototype.removeHeader = function (name) {\n\tvar self = this\n\tdelete self._headers[name.toLowerCase()]\n}\n\nClientRequest.prototype._onFinish = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\tvar opts = self._opts\n\n\tif ('timeout' in opts && opts.timeout !== 0) {\n\t\tself.setTimeout(opts.timeout)\n\t}\n\n\tvar headersObj = self._headers\n\tvar body = null\n\tif (opts.method !== 'GET' && opts.method !== 'HEAD') {\n        body = new Blob(self._body, {\n            type: (headersObj['content-type'] || {}).value || ''\n        });\n    }\n\n\t// create flattened list of headers\n\tvar headersList = []\n\tObject.keys(headersObj).forEach(function (keyName) {\n\t\tvar name = headersObj[keyName].name\n\t\tvar value = headersObj[keyName].value\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue.forEach(function (v) {\n\t\t\t\theadersList.push([name, v])\n\t\t\t})\n\t\t} else {\n\t\t\theadersList.push([name, value])\n\t\t}\n\t})\n\n\tif (self._mode === 'fetch') {\n\t\tvar signal = null\n\t\tif (capability.abortController) {\n\t\t\tvar controller = new AbortController()\n\t\t\tsignal = controller.signal\n\t\t\tself._fetchAbortController = controller\n\n\t\t\tif ('requestTimeout' in opts && opts.requestTimeout !== 0) {\n\t\t\t\tself._fetchTimer = global.setTimeout(function () {\n\t\t\t\t\tself.emit('requestTimeout')\n\t\t\t\t\tif (self._fetchAbortController)\n\t\t\t\t\t\tself._fetchAbortController.abort()\n\t\t\t\t}, opts.requestTimeout)\n\t\t\t}\n\t\t}\n\n\t\tglobal.fetch(self._opts.url, {\n\t\t\tmethod: self._opts.method,\n\t\t\theaders: headersList,\n\t\t\tbody: body || undefined,\n\t\t\tmode: 'cors',\n\t\t\tcredentials: opts.withCredentials ? 'include' : 'same-origin',\n\t\t\tsignal: signal\n\t\t}).then(function (response) {\n\t\t\tself._fetchResponse = response\n\t\t\tself._resetTimers(false)\n\t\t\tself._connect()\n\t\t}, function (reason) {\n\t\t\tself._resetTimers(true)\n\t\t\tif (!self._destroyed)\n\t\t\t\tself.emit('error', reason)\n\t\t})\n\t} else {\n\t\tvar xhr = self._xhr = new global.XMLHttpRequest()\n\t\ttry {\n\t\t\txhr.open(self._opts.method, self._opts.url, true)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\t// Can't set responseType on really old browsers\n\t\tif ('responseType' in xhr)\n\t\t\txhr.responseType = self._mode\n\n\t\tif ('withCredentials' in xhr)\n\t\t\txhr.withCredentials = !!opts.withCredentials\n\n\t\tif (self._mode === 'text' && 'overrideMimeType' in xhr)\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined')\n\n\t\tif ('requestTimeout' in opts) {\n\t\t\txhr.timeout = opts.requestTimeout\n\t\t\txhr.ontimeout = function () {\n\t\t\t\tself.emit('requestTimeout')\n\t\t\t}\n\t\t}\n\n\t\theadersList.forEach(function (header) {\n\t\t\txhr.setRequestHeader(header[0], header[1])\n\t\t})\n\n\t\tself._response = null\n\t\txhr.onreadystatechange = function () {\n\t\t\tswitch (xhr.readyState) {\n\t\t\t\tcase rStates.LOADING:\n\t\t\t\tcase rStates.DONE:\n\t\t\t\t\tself._onXHRProgress()\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Necessary for streaming in Firefox, since xhr.response is ONLY defined\n\t\t// in onprogress, not in onreadystatechange with xhr.readyState = 3\n\t\tif (self._mode === 'moz-chunked-arraybuffer') {\n\t\t\txhr.onprogress = function () {\n\t\t\t\tself._onXHRProgress()\n\t\t\t}\n\t\t}\n\n\t\txhr.onerror = function () {\n\t\t\tif (self._destroyed)\n\t\t\t\treturn\n\t\t\tself._resetTimers(true)\n\t\t\tself.emit('error', new Error('XHR error'))\n\t\t}\n\n\t\ttry {\n\t\t\txhr.send(body)\n\t\t} catch (err) {\n\t\t\tprocess.nextTick(function () {\n\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t\treturn\n\t\t}\n\t}\n}\n\n/**\n * Checks if xhr.status is readable and non-zero, indicating no error.\n * Even though the spec says it should be available in readyState 3,\n * accessing it throws an exception in IE8\n */\nfunction statusValid (xhr) {\n\ttry {\n\t\tvar status = xhr.status\n\t\treturn (status !== null && status !== 0)\n\t} catch (e) {\n\t\treturn false\n\t}\n}\n\nClientRequest.prototype._onXHRProgress = function () {\n\tvar self = this\n\n\tself._resetTimers(false)\n\n\tif (!statusValid(self._xhr) || self._destroyed)\n\t\treturn\n\n\tif (!self._response)\n\t\tself._connect()\n\n\tself._response._onXHRProgress(self._resetTimers.bind(self))\n}\n\nClientRequest.prototype._connect = function () {\n\tvar self = this\n\n\tif (self._destroyed)\n\t\treturn\n\n\tself._response = new IncomingMessage(self._xhr, self._fetchResponse, self._mode, self._resetTimers.bind(self))\n\tself._response.on('error', function(err) {\n\t\tself.emit('error', err)\n\t})\n\n\tself.emit('response', self._response)\n}\n\nClientRequest.prototype._write = function (chunk, encoding, cb) {\n\tvar self = this\n\n\tself._body.push(chunk)\n\tcb()\n}\n\nClientRequest.prototype._resetTimers = function (done) {\n\tvar self = this\n\n\tglobal.clearTimeout(self._socketTimer)\n\tself._socketTimer = null\n\n\tif (done) {\n\t\tglobal.clearTimeout(self._fetchTimer)\n\t\tself._fetchTimer = null\n\t} else if (self._socketTimeout) {\n\t\tself._socketTimer = global.setTimeout(function () {\n\t\t\tself.emit('timeout')\n\t\t}, self._socketTimeout)\n\t}\n}\n\nClientRequest.prototype.abort = ClientRequest.prototype.destroy = function (err) {\n\tvar self = this\n\tself._destroyed = true\n\tself._resetTimers(true)\n\tif (self._response)\n\t\tself._response._destroyed = true\n\tif (self._xhr)\n\t\tself._xhr.abort()\n\telse if (self._fetchAbortController)\n\t\tself._fetchAbortController.abort()\n\n\tif (err)\n\t\tself.emit('error', err)\n}\n\nClientRequest.prototype.end = function (data, encoding, cb) {\n\tvar self = this\n\tif (typeof data === 'function') {\n\t\tcb = data\n\t\tdata = undefined\n\t}\n\n\tstream.Writable.prototype.end.call(self, data, encoding, cb)\n}\n\nClientRequest.prototype.setTimeout = function (timeout, cb) {\n\tvar self = this\n\n\tif (cb)\n\t\tself.once('timeout', cb)\n\n\tself._socketTimeout = timeout\n\tself._resetTimers(false)\n}\n\nClientRequest.prototype.flushHeaders = function () {}\nClientRequest.prototype.setNoDelay = function () {}\nClientRequest.prototype.setSocketKeepAlive = function () {}\n\n// Taken from http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader%28%29-method\nvar unsafeHeaders = [\n\t'accept-charset',\n\t'accept-encoding',\n\t'access-control-request-headers',\n\t'access-control-request-method',\n\t'connection',\n\t'content-length',\n\t'cookie',\n\t'cookie2',\n\t'date',\n\t'dnt',\n\t'expect',\n\t'host',\n\t'keep-alive',\n\t'origin',\n\t'referer',\n\t'te',\n\t'trailer',\n\t'transfer-encoding',\n\t'upgrade',\n\t'via'\n]\n","var capability = require('./capability')\nvar inherits = require('inherits')\nvar stream = require('readable-stream')\n\nvar rStates = exports.readyStates = {\n\tUNSENT: 0,\n\tOPENED: 1,\n\tHEADERS_RECEIVED: 2,\n\tLOADING: 3,\n\tDONE: 4\n}\n\nvar IncomingMessage = exports.IncomingMessage = function (xhr, response, mode, resetTimers) {\n\tvar self = this\n\tstream.Readable.call(self)\n\n\tself._mode = mode\n\tself.headers = {}\n\tself.rawHeaders = []\n\tself.trailers = {}\n\tself.rawTrailers = []\n\n\t// Fake the 'close' event, but only once 'end' fires\n\tself.on('end', function () {\n\t\t// The nextTick is necessary to prevent the 'request' module from causing an infinite loop\n\t\tprocess.nextTick(function () {\n\t\t\tself.emit('close')\n\t\t})\n\t})\n\n\tif (mode === 'fetch') {\n\t\tself._fetchResponse = response\n\n\t\tself.url = response.url\n\t\tself.statusCode = response.status\n\t\tself.statusMessage = response.statusText\n\t\t\n\t\tresponse.headers.forEach(function (header, key){\n\t\t\tself.headers[key.toLowerCase()] = header\n\t\t\tself.rawHeaders.push(key, header)\n\t\t})\n\n\t\tif (capability.writableStream) {\n\t\t\tvar writable = new WritableStream({\n\t\t\t\twrite: function (chunk) {\n\t\t\t\t\tresetTimers(false)\n\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\tif (self._destroyed) {\n\t\t\t\t\t\t\treject()\n\t\t\t\t\t\t} else if(self.push(Buffer.from(chunk))) {\n\t\t\t\t\t\t\tresolve()\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself._resumeFetch = resolve\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t},\n\t\t\t\tclose: function () {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.push(null)\n\t\t\t\t},\n\t\t\t\tabort: function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\ttry {\n\t\t\t\tresponse.body.pipeTo(writable).catch(function (err) {\n\t\t\t\t\tresetTimers(true)\n\t\t\t\t\tif (!self._destroyed)\n\t\t\t\t\t\tself.emit('error', err)\n\t\t\t\t})\n\t\t\t\treturn\n\t\t\t} catch (e) {} // pipeTo method isn't defined. Can't find a better way to feature test this\n\t\t}\n\t\t// fallback for when writableStream or pipeTo aren't available\n\t\tvar reader = response.body.getReader()\n\t\tfunction read () {\n\t\t\treader.read().then(function (result) {\n\t\t\t\tif (self._destroyed)\n\t\t\t\t\treturn\n\t\t\t\tresetTimers(result.done)\n\t\t\t\tif (result.done) {\n\t\t\t\t\tself.push(null)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tself.push(Buffer.from(result.value))\n\t\t\t\tread()\n\t\t\t}).catch(function (err) {\n\t\t\t\tresetTimers(true)\n\t\t\t\tif (!self._destroyed)\n\t\t\t\t\tself.emit('error', err)\n\t\t\t})\n\t\t}\n\t\tread()\n\t} else {\n\t\tself._xhr = xhr\n\t\tself._pos = 0\n\n\t\tself.url = xhr.responseURL\n\t\tself.statusCode = xhr.status\n\t\tself.statusMessage = xhr.statusText\n\t\tvar headers = xhr.getAllResponseHeaders().split(/\\r?\\n/)\n\t\theaders.forEach(function (header) {\n\t\t\tvar matches = header.match(/^([^:]+):\\s*(.*)/)\n\t\t\tif (matches) {\n\t\t\t\tvar key = matches[1].toLowerCase()\n\t\t\t\tif (key === 'set-cookie') {\n\t\t\t\t\tif (self.headers[key] === undefined) {\n\t\t\t\t\t\tself.headers[key] = []\n\t\t\t\t\t}\n\t\t\t\t\tself.headers[key].push(matches[2])\n\t\t\t\t} else if (self.headers[key] !== undefined) {\n\t\t\t\t\tself.headers[key] += ', ' + matches[2]\n\t\t\t\t} else {\n\t\t\t\t\tself.headers[key] = matches[2]\n\t\t\t\t}\n\t\t\t\tself.rawHeaders.push(matches[1], matches[2])\n\t\t\t}\n\t\t})\n\n\t\tself._charset = 'x-user-defined'\n\t\tif (!capability.overrideMimeType) {\n\t\t\tvar mimeType = self.rawHeaders['mime-type']\n\t\t\tif (mimeType) {\n\t\t\t\tvar charsetMatch = mimeType.match(/;\\s*charset=([^;])(;|$)/)\n\t\t\t\tif (charsetMatch) {\n\t\t\t\t\tself._charset = charsetMatch[1].toLowerCase()\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self._charset)\n\t\t\t\tself._charset = 'utf-8' // best guess\n\t\t}\n\t}\n}\n\ninherits(IncomingMessage, stream.Readable)\n\nIncomingMessage.prototype._read = function () {\n\tvar self = this\n\n\tvar resolve = self._resumeFetch\n\tif (resolve) {\n\t\tself._resumeFetch = null\n\t\tresolve()\n\t}\n}\n\nIncomingMessage.prototype._onXHRProgress = function (resetTimers) {\n\tvar self = this\n\n\tvar xhr = self._xhr\n\n\tvar response = null\n\tswitch (self._mode) {\n\t\tcase 'text':\n\t\t\tresponse = xhr.responseText\n\t\t\tif (response.length > self._pos) {\n\t\t\t\tvar newData = response.substr(self._pos)\n\t\t\t\tif (self._charset === 'x-user-defined') {\n\t\t\t\t\tvar buffer = Buffer.alloc(newData.length)\n\t\t\t\t\tfor (var i = 0; i < newData.length; i++)\n\t\t\t\t\t\tbuffer[i] = newData.charCodeAt(i) & 0xff\n\n\t\t\t\t\tself.push(buffer)\n\t\t\t\t} else {\n\t\t\t\t\tself.push(newData, self._charset)\n\t\t\t\t}\n\t\t\t\tself._pos = response.length\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'arraybuffer':\n\t\t\tif (xhr.readyState !== rStates.DONE || !xhr.response)\n\t\t\t\tbreak\n\t\t\tresponse = xhr.response\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'moz-chunked-arraybuffer': // take whole\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING || !response)\n\t\t\t\tbreak\n\t\t\tself.push(Buffer.from(new Uint8Array(response)))\n\t\t\tbreak\n\t\tcase 'ms-stream':\n\t\t\tresponse = xhr.response\n\t\t\tif (xhr.readyState !== rStates.LOADING)\n\t\t\t\tbreak\n\t\t\tvar reader = new global.MSStreamReader()\n\t\t\treader.onprogress = function () {\n\t\t\t\tif (reader.result.byteLength > self._pos) {\n\t\t\t\t\tself.push(Buffer.from(new Uint8Array(reader.result.slice(self._pos))))\n\t\t\t\t\tself._pos = reader.result.byteLength\n\t\t\t\t}\n\t\t\t}\n\t\t\treader.onload = function () {\n\t\t\t\tresetTimers(true)\n\t\t\t\tself.push(null)\n\t\t\t}\n\t\t\t// reader.onerror = ??? // TODO: this\n\t\t\treader.readAsArrayBuffer(response)\n\t\t\tbreak\n\t}\n\n\t// The ms-stream case handles end separately in reader.onload()\n\tif (self._xhr.readyState === rStates.DONE && self._mode !== 'ms-stream') {\n\t\tresetTimers(true)\n\t\tself.push(null)\n\t}\n}\n","'use strict';\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error;\n  }\n\n  function getMessage(arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message;\n    } else {\n      return message(arg1, arg2, arg3);\n    }\n  }\n\n  var NodeError =\n  /*#__PURE__*/\n  function (_Base) {\n    _inheritsLoose(NodeError, _Base);\n\n    function NodeError(arg1, arg2, arg3) {\n      return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n    }\n\n    return NodeError;\n  }(Base);\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n  codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    var len = expected.length;\n    expected = expected.map(function (i) {\n      return String(i);\n    });\n\n    if (len > 2) {\n      return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n    } else if (len === 2) {\n      return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n    } else {\n      return \"of \".concat(thing, \" \").concat(expected[0]);\n    }\n  } else {\n    return \"of \".concat(thing, \" \").concat(String(expected));\n  }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n  return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n  if (this_len === undefined || this_len > str.length) {\n    this_len = str.length;\n  }\n\n  return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  var determiner;\n\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  var msg;\n\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  } else {\n    var type = includes(name, '.') ? 'property' : 'argument';\n    msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n  }\n\n  msg += \". Received type \".concat(typeof actual);\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/**/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/*  */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/*  */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/**/\n\n/**/\nvar Stream = require('./internal/streams/stream');\n/**/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};","'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;","'use strict';\n\nfunction 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; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? 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; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { 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); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();","'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};","// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;","module.exports = function () {\n  throw new Error('Readable.from is not available in the browser')\n};\n","// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;","'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};","module.exports = require('events').EventEmitter;\n","exports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\nexports.finished = require('./lib/internal/streams/end-of-stream.js');\nexports.pipeline = require('./lib/internal/streams/pipeline.js');\n","'use strict';\n\nvar required = require('requires-port')\n  , qs = require('querystringify')\n  , controlOrWhitespace = /^[\\x00-\\x20\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff]+/\n  , CRHTLF = /[\\n\\r\\t]/g\n  , slashes = /^[A-Za-z][A-Za-z0-9+-.]*:\\/\\//\n  , port = /:\\d+$/\n  , protocolre = /^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\\\/]+)?([\\S\\s]*)/i\n  , windowsDriveLetter = /^[a-zA-Z]:/;\n\n/**\n * Remove control characters and whitespace from the beginning of a string.\n *\n * @param {Object|String} str String to trim.\n * @returns {String} A new string representing `str` stripped of control\n *     characters and whitespace from its beginning.\n * @public\n */\nfunction trimLeft(str) {\n  return (str ? str : '').toString().replace(controlOrWhitespace, '');\n}\n\n/**\n * These are the parse rules for the URL parser, it informs the parser\n * about:\n *\n * 0. The char it Needs to parse, if it's a string it should be done using\n *    indexOf, RegExp using exec and NaN means set as current value.\n * 1. The property we should set when parsing this value.\n * 2. Indication if it's backwards or forward parsing, when set as number it's\n *    the value of extra chars that should be split off.\n * 3. Inherit from location if non existing in the parser.\n * 4. `toLowerCase` the resulting value.\n */\nvar rules = [\n  ['#', 'hash'],                        // Extract from the back.\n  ['?', 'query'],                       // Extract from the back.\n  function sanitize(address, url) {     // Sanitize what is left of the address\n    return isSpecial(url.protocol) ? address.replace(/\\\\/g, '/') : address;\n  },\n  ['/', 'pathname'],                    // Extract from the back.\n  ['@', 'auth', 1],                     // Extract from the front.\n  [NaN, 'host', undefined, 1, 1],       // Set left over value.\n  [/:(\\d*)$/, 'port', undefined, 1],    // RegExp the back.\n  [NaN, 'hostname', undefined, 1, 1]    // Set left over.\n];\n\n/**\n * These properties should not be copied or inherited from. This is only needed\n * for all non blob URL's as a blob URL does not include a hash, only the\n * origin.\n *\n * @type {Object}\n * @private\n */\nvar ignore = { hash: 1, query: 1 };\n\n/**\n * The location object differs when your code is loaded through a normal page,\n * Worker or through a worker using a blob. And with the blobble begins the\n * trouble as the location object will contain the URL of the blob, not the\n * location of the page where our code is loaded in. The actual origin is\n * encoded in the `pathname` so we can thankfully generate a good \"default\"\n * location from it so we can generate proper relative URL's again.\n *\n * @param {Object|String} loc Optional default location object.\n * @returns {Object} lolcation object.\n * @public\n */\nfunction lolcation(loc) {\n  var globalVar;\n\n  if (typeof window !== 'undefined') globalVar = window;\n  else if (typeof global !== 'undefined') globalVar = global;\n  else if (typeof self !== 'undefined') globalVar = self;\n  else globalVar = {};\n\n  var location = globalVar.location || {};\n  loc = loc || location;\n\n  var finaldestination = {}\n    , type = typeof loc\n    , key;\n\n  if ('blob:' === loc.protocol) {\n    finaldestination = new Url(unescape(loc.pathname), {});\n  } else if ('string' === type) {\n    finaldestination = new Url(loc, {});\n    for (key in ignore) delete finaldestination[key];\n  } else if ('object' === type) {\n    for (key in loc) {\n      if (key in ignore) continue;\n      finaldestination[key] = loc[key];\n    }\n\n    if (finaldestination.slashes === undefined) {\n      finaldestination.slashes = slashes.test(loc.href);\n    }\n  }\n\n  return finaldestination;\n}\n\n/**\n * Check whether a protocol scheme is special.\n *\n * @param {String} The protocol scheme of the URL\n * @return {Boolean} `true` if the protocol scheme is special, else `false`\n * @private\n */\nfunction isSpecial(scheme) {\n  return (\n    scheme === 'file:' ||\n    scheme === 'ftp:' ||\n    scheme === 'http:' ||\n    scheme === 'https:' ||\n    scheme === 'ws:' ||\n    scheme === 'wss:'\n  );\n}\n\n/**\n * @typedef ProtocolExtract\n * @type Object\n * @property {String} protocol Protocol matched in the URL, in lowercase.\n * @property {Boolean} slashes `true` if protocol is followed by \"//\", else `false`.\n * @property {String} rest Rest of the URL that is not part of the protocol.\n */\n\n/**\n * Extract protocol information from a URL with/without double slash (\"//\").\n *\n * @param {String} address URL we want to extract from.\n * @param {Object} location\n * @return {ProtocolExtract} Extracted information.\n * @private\n */\nfunction extractProtocol(address, location) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n  location = location || {};\n\n  var match = protocolre.exec(address);\n  var protocol = match[1] ? match[1].toLowerCase() : '';\n  var forwardSlashes = !!match[2];\n  var otherSlashes = !!match[3];\n  var slashesCount = 0;\n  var rest;\n\n  if (forwardSlashes) {\n    if (otherSlashes) {\n      rest = match[2] + match[3] + match[4];\n      slashesCount = match[2].length + match[3].length;\n    } else {\n      rest = match[2] + match[4];\n      slashesCount = match[2].length;\n    }\n  } else {\n    if (otherSlashes) {\n      rest = match[3] + match[4];\n      slashesCount = match[3].length;\n    } else {\n      rest = match[4]\n    }\n  }\n\n  if (protocol === 'file:') {\n    if (slashesCount >= 2) {\n      rest = rest.slice(2);\n    }\n  } else if (isSpecial(protocol)) {\n    rest = match[4];\n  } else if (protocol) {\n    if (forwardSlashes) {\n      rest = rest.slice(2);\n    }\n  } else if (slashesCount >= 2 && isSpecial(location.protocol)) {\n    rest = match[4];\n  }\n\n  return {\n    protocol: protocol,\n    slashes: forwardSlashes || isSpecial(protocol),\n    slashesCount: slashesCount,\n    rest: rest\n  };\n}\n\n/**\n * Resolve a relative URL pathname against a base URL pathname.\n *\n * @param {String} relative Pathname of the relative URL.\n * @param {String} base Pathname of the base URL.\n * @return {String} Resolved pathname.\n * @private\n */\nfunction resolve(relative, base) {\n  if (relative === '') return base;\n\n  var path = (base || '/').split('/').slice(0, -1).concat(relative.split('/'))\n    , i = path.length\n    , last = path[i - 1]\n    , unshift = false\n    , up = 0;\n\n  while (i--) {\n    if (path[i] === '.') {\n      path.splice(i, 1);\n    } else if (path[i] === '..') {\n      path.splice(i, 1);\n      up++;\n    } else if (up) {\n      if (i === 0) unshift = true;\n      path.splice(i, 1);\n      up--;\n    }\n  }\n\n  if (unshift) path.unshift('');\n  if (last === '.' || last === '..') path.push('');\n\n  return path.join('/');\n}\n\n/**\n * The actual URL instance. Instead of returning an object we've opted-in to\n * create an actual constructor as it's much more memory efficient and\n * faster and it pleases my OCD.\n *\n * It is worth noting that we should not use `URL` as class name to prevent\n * clashes with the global URL instance that got introduced in browsers.\n *\n * @constructor\n * @param {String} address URL we want to parse.\n * @param {Object|String} [location] Location defaults for relative paths.\n * @param {Boolean|Function} [parser] Parser for the query string.\n * @private\n */\nfunction Url(address, location, parser) {\n  address = trimLeft(address);\n  address = address.replace(CRHTLF, '');\n\n  if (!(this instanceof Url)) {\n    return new Url(address, location, parser);\n  }\n\n  var relative, extracted, parse, instruction, index, key\n    , instructions = rules.slice()\n    , type = typeof location\n    , url = this\n    , i = 0;\n\n  //\n  // The following if statements allows this module two have compatibility with\n  // 2 different API:\n  //\n  // 1. Node.js's `url.parse` api which accepts a URL, boolean as arguments\n  //    where the boolean indicates that the query string should also be parsed.\n  //\n  // 2. The `URL` interface of the browser which accepts a URL, object as\n  //    arguments. The supplied object will be used as default values / fall-back\n  //    for relative paths.\n  //\n  if ('object' !== type && 'string' !== type) {\n    parser = location;\n    location = null;\n  }\n\n  if (parser && 'function' !== typeof parser) parser = qs.parse;\n\n  location = lolcation(location);\n\n  //\n  // Extract protocol information before running the instructions.\n  //\n  extracted = extractProtocol(address || '', location);\n  relative = !extracted.protocol && !extracted.slashes;\n  url.slashes = extracted.slashes || relative && location.slashes;\n  url.protocol = extracted.protocol || location.protocol || '';\n  address = extracted.rest;\n\n  //\n  // When the authority component is absent the URL starts with a path\n  // component.\n  //\n  if (\n    extracted.protocol === 'file:' && (\n      extracted.slashesCount !== 2 || windowsDriveLetter.test(address)) ||\n    (!extracted.slashes &&\n      (extracted.protocol ||\n        extracted.slashesCount < 2 ||\n        !isSpecial(url.protocol)))\n  ) {\n    instructions[3] = [/(.*)/, 'pathname'];\n  }\n\n  for (; i < instructions.length; i++) {\n    instruction = instructions[i];\n\n    if (typeof instruction === 'function') {\n      address = instruction(address, url);\n      continue;\n    }\n\n    parse = instruction[0];\n    key = instruction[1];\n\n    if (parse !== parse) {\n      url[key] = address;\n    } else if ('string' === typeof parse) {\n      index = parse === '@'\n        ? address.lastIndexOf(parse)\n        : address.indexOf(parse);\n\n      if (~index) {\n        if ('number' === typeof instruction[2]) {\n          url[key] = address.slice(0, index);\n          address = address.slice(index + instruction[2]);\n        } else {\n          url[key] = address.slice(index);\n          address = address.slice(0, index);\n        }\n      }\n    } else if ((index = parse.exec(address))) {\n      url[key] = index[1];\n      address = address.slice(0, index.index);\n    }\n\n    url[key] = url[key] || (\n      relative && instruction[3] ? location[key] || '' : ''\n    );\n\n    //\n    // Hostname, host and protocol should be lowercased so they can be used to\n    // create a proper `origin`.\n    //\n    if (instruction[4]) url[key] = url[key].toLowerCase();\n  }\n\n  //\n  // Also parse the supplied query string in to an object. If we're supplied\n  // with a custom parser as function use that instead of the default build-in\n  // parser.\n  //\n  if (parser) url.query = parser(url.query);\n\n  //\n  // If the URL is relative, resolve the pathname against the base URL.\n  //\n  if (\n      relative\n    && location.slashes\n    && url.pathname.charAt(0) !== '/'\n    && (url.pathname !== '' || location.pathname !== '')\n  ) {\n    url.pathname = resolve(url.pathname, location.pathname);\n  }\n\n  //\n  // Default to a / for pathname if none exists. This normalizes the URL\n  // to always have a /\n  //\n  if (url.pathname.charAt(0) !== '/' && isSpecial(url.protocol)) {\n    url.pathname = '/' + url.pathname;\n  }\n\n  //\n  // We should not add port numbers if they are already the default port number\n  // for a given protocol. As the host also contains the port number we're going\n  // override it with the hostname which contains no port number.\n  //\n  if (!required(url.port, url.protocol)) {\n    url.host = url.hostname;\n    url.port = '';\n  }\n\n  //\n  // Parse down the `auth` for the username and password.\n  //\n  url.username = url.password = '';\n\n  if (url.auth) {\n    index = url.auth.indexOf(':');\n\n    if (~index) {\n      url.username = url.auth.slice(0, index);\n      url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n      url.password = url.auth.slice(index + 1);\n      url.password = encodeURIComponent(decodeURIComponent(url.password))\n    } else {\n      url.username = encodeURIComponent(decodeURIComponent(url.auth));\n    }\n\n    url.auth = url.password ? url.username +':'+ url.password : url.username;\n  }\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  //\n  // The href is just the compiled result.\n  //\n  url.href = url.toString();\n}\n\n/**\n * This is convenience method for changing properties in the URL instance to\n * insure that they all propagate correctly.\n *\n * @param {String} part          Property we need to adjust.\n * @param {Mixed} value          The newly assigned value.\n * @param {Boolean|Function} fn  When setting the query, it will be the function\n *                               used to parse the query.\n *                               When setting the protocol, double slash will be\n *                               removed from the final url if it is true.\n * @returns {URL} URL instance for chaining.\n * @public\n */\nfunction set(part, value, fn) {\n  var url = this;\n\n  switch (part) {\n    case 'query':\n      if ('string' === typeof value && value.length) {\n        value = (fn || qs.parse)(value);\n      }\n\n      url[part] = value;\n      break;\n\n    case 'port':\n      url[part] = value;\n\n      if (!required(value, url.protocol)) {\n        url.host = url.hostname;\n        url[part] = '';\n      } else if (value) {\n        url.host = url.hostname +':'+ value;\n      }\n\n      break;\n\n    case 'hostname':\n      url[part] = value;\n\n      if (url.port) value += ':'+ url.port;\n      url.host = value;\n      break;\n\n    case 'host':\n      url[part] = value;\n\n      if (port.test(value)) {\n        value = value.split(':');\n        url.port = value.pop();\n        url.hostname = value.join(':');\n      } else {\n        url.hostname = value;\n        url.port = '';\n      }\n\n      break;\n\n    case 'protocol':\n      url.protocol = value.toLowerCase();\n      url.slashes = !fn;\n      break;\n\n    case 'pathname':\n    case 'hash':\n      if (value) {\n        var char = part === 'pathname' ? '/' : '#';\n        url[part] = value.charAt(0) !== char ? char + value : value;\n      } else {\n        url[part] = value;\n      }\n      break;\n\n    case 'username':\n    case 'password':\n      url[part] = encodeURIComponent(value);\n      break;\n\n    case 'auth':\n      var index = value.indexOf(':');\n\n      if (~index) {\n        url.username = value.slice(0, index);\n        url.username = encodeURIComponent(decodeURIComponent(url.username));\n\n        url.password = value.slice(index + 1);\n        url.password = encodeURIComponent(decodeURIComponent(url.password));\n      } else {\n        url.username = encodeURIComponent(decodeURIComponent(value));\n      }\n  }\n\n  for (var i = 0; i < rules.length; i++) {\n    var ins = rules[i];\n\n    if (ins[4]) url[ins[1]] = url[ins[1]].toLowerCase();\n  }\n\n  url.auth = url.password ? url.username +':'+ url.password : url.username;\n\n  url.origin = url.protocol !== 'file:' && isSpecial(url.protocol) && url.host\n    ? url.protocol +'//'+ url.host\n    : 'null';\n\n  url.href = url.toString();\n\n  return url;\n}\n\n/**\n * Transform the properties back in to a valid and full URL string.\n *\n * @param {Function} stringify Optional query stringify function.\n * @returns {String} Compiled version of the URL.\n * @public\n */\nfunction toString(stringify) {\n  if (!stringify || 'function' !== typeof stringify) stringify = qs.stringify;\n\n  var query\n    , url = this\n    , host = url.host\n    , protocol = url.protocol;\n\n  if (protocol && protocol.charAt(protocol.length - 1) !== ':') protocol += ':';\n\n  var result =\n    protocol +\n    ((url.protocol && url.slashes) || isSpecial(url.protocol) ? '//' : '');\n\n  if (url.username) {\n    result += url.username;\n    if (url.password) result += ':'+ url.password;\n    result += '@';\n  } else if (url.password) {\n    result += ':'+ url.password;\n    result += '@';\n  } else if (\n    url.protocol !== 'file:' &&\n    isSpecial(url.protocol) &&\n    !host &&\n    url.pathname !== '/'\n  ) {\n    //\n    // Add back the empty userinfo, otherwise the original invalid URL\n    // might be transformed into a valid one with `url.pathname` as host.\n    //\n    result += '@';\n  }\n\n  //\n  // Trailing colon is removed from `url.host` when it is parsed. If it still\n  // ends with a colon, then add back the trailing colon that was removed. This\n  // prevents an invalid URL from being transformed into a valid one.\n  //\n  if (host[host.length - 1] === ':' || (port.test(url.hostname) && !url.port)) {\n    host += ':';\n  }\n\n  result += host + url.pathname;\n\n  query = 'object' === typeof url.query ? stringify(url.query) : url.query;\n  if (query) result += '?' !== query.charAt(0) ? '?'+ query : query;\n\n  if (url.hash) result += url.hash;\n\n  return result;\n}\n\nUrl.prototype = { set: set, toString: toString };\n\n//\n// Expose the URL parser and some additional properties that might be useful for\n// others or testing.\n//\nUrl.extractProtocol = extractProtocol;\nUrl.location = lolcation;\nUrl.trimLeft = trimLeft;\nUrl.qs = qs;\n\nmodule.exports = Url;\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode/');\n\nfunction Url() {\n  this.protocol = null;\n  this.slashes = null;\n  this.auth = null;\n  this.host = null;\n  this.port = null;\n  this.hostname = null;\n  this.hash = null;\n  this.search = null;\n  this.query = null;\n  this.pathname = null;\n  this.path = null;\n  this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n  portPattern = /:[0-9]*$/,\n\n  // Special case for a simple path URL\n  simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n  /*\n   * RFC 2396: characters reserved for delimiting URLs.\n   * We actually just auto-escape these.\n   */\n  delims = [\n    '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n  ],\n\n  // RFC 2396: characters not allowed for various reasons.\n  unwise = [\n    '{', '}', '|', '\\\\', '^', '`'\n  ].concat(delims),\n\n  // Allowed by RFCs, but cause of XSS attacks.  Always escape these.\n  autoEscape = ['\\''].concat(unwise),\n  /*\n   * Characters that are never ever allowed in a hostname.\n   * Note that any invalid chars are also handled, but these\n   * are the ones that are *expected* to be seen, so we fast-path\n   * them.\n   */\n  nonHostChars = [\n    '%', '/', '?', ';', '#'\n  ].concat(autoEscape),\n  hostEndingChars = [\n    '/', '?', '#'\n  ],\n  hostnameMaxLen = 255,\n  hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n  hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n  // protocols that can allow \"unsafe\" and \"unwise\" chars.\n  unsafeProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that never have a hostname.\n  hostlessProtocol = {\n    javascript: true,\n    'javascript:': true\n  },\n  // protocols that always contain a // bit.\n  slashedProtocol = {\n    http: true,\n    https: true,\n    ftp: true,\n    gopher: true,\n    file: true,\n    'http:': true,\n    'https:': true,\n    'ftp:': true,\n    'gopher:': true,\n    'file:': true\n  },\n  querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n  if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n  var u = new Url();\n  u.parse(url, parseQueryString, slashesDenoteHost);\n  return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n  if (typeof url !== 'string') {\n    throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n  }\n\n  /*\n   * Copy chrome, IE, opera backslash-handling behavior.\n   * Back slashes before the query string get converted to forward slashes\n   * See: https://code.google.com/p/chromium/issues/detail?id=25916\n   */\n  var queryIndex = url.indexOf('?'),\n    splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n    uSplit = url.split(splitter),\n    slashRegex = /\\\\/g;\n  uSplit[0] = uSplit[0].replace(slashRegex, '/');\n  url = uSplit.join(splitter);\n\n  var rest = url;\n\n  /*\n   * trim before proceeding.\n   * This is to support parse stuff like \"  http://foo.com  \\n\"\n   */\n  rest = rest.trim();\n\n  if (!slashesDenoteHost && url.split('#').length === 1) {\n    // Try fast path regexp\n    var simplePath = simplePathPattern.exec(rest);\n    if (simplePath) {\n      this.path = rest;\n      this.href = rest;\n      this.pathname = simplePath[1];\n      if (simplePath[2]) {\n        this.search = simplePath[2];\n        if (parseQueryString) {\n          this.query = querystring.parse(this.search.substr(1));\n        } else {\n          this.query = this.search.substr(1);\n        }\n      } else if (parseQueryString) {\n        this.search = '';\n        this.query = {};\n      }\n      return this;\n    }\n  }\n\n  var proto = protocolPattern.exec(rest);\n  if (proto) {\n    proto = proto[0];\n    var lowerProto = proto.toLowerCase();\n    this.protocol = lowerProto;\n    rest = rest.substr(proto.length);\n  }\n\n  /*\n   * figure out if it's got a host\n   * user@server is *always* interpreted as a hostname, and url\n   * resolution will treat //foo/bar as host=foo,path=bar because that's\n   * how the browser resolves relative URLs.\n   */\n  if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n    var slashes = rest.substr(0, 2) === '//';\n    if (slashes && !(proto && hostlessProtocol[proto])) {\n      rest = rest.substr(2);\n      this.slashes = true;\n    }\n  }\n\n  if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n    /*\n     * there's a hostname.\n     * the first instance of /, ?, ;, or # ends the host.\n     *\n     * If there is an @ in the hostname, then non-host chars *are* allowed\n     * to the left of the last @ sign, unless some host-ending character\n     * comes *before* the @-sign.\n     * URLs are obnoxious.\n     *\n     * ex:\n     * http://a@b@c/ => user:a@b host:c\n     * http://a@b?@c => user:a host:c path:/?@c\n     */\n\n    /*\n     * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n     * Review our test case against browsers more comprehensively.\n     */\n\n    // find the first instance of any hostEndingChars\n    var hostEnd = -1;\n    for (var i = 0; i < hostEndingChars.length; i++) {\n      var hec = rest.indexOf(hostEndingChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n\n    /*\n     * at this point, either we have an explicit point where the\n     * auth portion cannot go past, or the last @ char is the decider.\n     */\n    var auth, atSign;\n    if (hostEnd === -1) {\n      // atSign can be anywhere.\n      atSign = rest.lastIndexOf('@');\n    } else {\n      /*\n       * atSign must be in auth portion.\n       * http://a@b/c@d => host:b auth:a path:/c@d\n       */\n      atSign = rest.lastIndexOf('@', hostEnd);\n    }\n\n    /*\n     * Now we have a portion which is definitely the auth.\n     * Pull that off.\n     */\n    if (atSign !== -1) {\n      auth = rest.slice(0, atSign);\n      rest = rest.slice(atSign + 1);\n      this.auth = decodeURIComponent(auth);\n    }\n\n    // the host is the remaining to the left of the first non-host char\n    hostEnd = -1;\n    for (var i = 0; i < nonHostChars.length; i++) {\n      var hec = rest.indexOf(nonHostChars[i]);\n      if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n    }\n    // if we still have not hit it, then the entire thing is a host.\n    if (hostEnd === -1) { hostEnd = rest.length; }\n\n    this.host = rest.slice(0, hostEnd);\n    rest = rest.slice(hostEnd);\n\n    // pull out port.\n    this.parseHost();\n\n    /*\n     * we've indicated that there is a hostname,\n     * so even if it's empty, it has to be present.\n     */\n    this.hostname = this.hostname || '';\n\n    /*\n     * if hostname begins with [ and ends with ]\n     * assume that it's an IPv6 address.\n     */\n    var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n    // validate a little.\n    if (!ipv6Hostname) {\n      var hostparts = this.hostname.split(/\\./);\n      for (var i = 0, l = hostparts.length; i < l; i++) {\n        var part = hostparts[i];\n        if (!part) { continue; }\n        if (!part.match(hostnamePartPattern)) {\n          var newpart = '';\n          for (var j = 0, k = part.length; j < k; j++) {\n            if (part.charCodeAt(j) > 127) {\n              /*\n               * we replace non-ASCII char with a temporary placeholder\n               * we need this to make sure size of hostname is not\n               * broken by replacing non-ASCII by nothing\n               */\n              newpart += 'x';\n            } else {\n              newpart += part[j];\n            }\n          }\n          // we test again with ASCII char only\n          if (!newpart.match(hostnamePartPattern)) {\n            var validParts = hostparts.slice(0, i);\n            var notHost = hostparts.slice(i + 1);\n            var bit = part.match(hostnamePartStart);\n            if (bit) {\n              validParts.push(bit[1]);\n              notHost.unshift(bit[2]);\n            }\n            if (notHost.length) {\n              rest = '/' + notHost.join('.') + rest;\n            }\n            this.hostname = validParts.join('.');\n            break;\n          }\n        }\n      }\n    }\n\n    if (this.hostname.length > hostnameMaxLen) {\n      this.hostname = '';\n    } else {\n      // hostnames are always lower case.\n      this.hostname = this.hostname.toLowerCase();\n    }\n\n    if (!ipv6Hostname) {\n      /*\n       * IDNA Support: Returns a punycoded representation of \"domain\".\n       * It only converts parts of the domain name that\n       * have non-ASCII characters, i.e. it doesn't matter if\n       * you call it with a domain that already is ASCII-only.\n       */\n      this.hostname = punycode.toASCII(this.hostname);\n    }\n\n    var p = this.port ? ':' + this.port : '';\n    var h = this.hostname || '';\n    this.host = h + p;\n    this.href += this.host;\n\n    /*\n     * strip [ and ] from the hostname\n     * the host field still retains them, though\n     */\n    if (ipv6Hostname) {\n      this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n      if (rest[0] !== '/') {\n        rest = '/' + rest;\n      }\n    }\n  }\n\n  /*\n   * now rest is set to the post-host stuff.\n   * chop off any delim chars.\n   */\n  if (!unsafeProtocol[lowerProto]) {\n\n    /*\n     * First, make 100% sure that any \"autoEscape\" chars get\n     * escaped, even if encodeURIComponent doesn't think they\n     * need to be.\n     */\n    for (var i = 0, l = autoEscape.length; i < l; i++) {\n      var ae = autoEscape[i];\n      if (rest.indexOf(ae) === -1) { continue; }\n      var esc = encodeURIComponent(ae);\n      if (esc === ae) {\n        esc = escape(ae);\n      }\n      rest = rest.split(ae).join(esc);\n    }\n  }\n\n  // chop off from the tail first.\n  var hash = rest.indexOf('#');\n  if (hash !== -1) {\n    // got a fragment string.\n    this.hash = rest.substr(hash);\n    rest = rest.slice(0, hash);\n  }\n  var qm = rest.indexOf('?');\n  if (qm !== -1) {\n    this.search = rest.substr(qm);\n    this.query = rest.substr(qm + 1);\n    if (parseQueryString) {\n      this.query = querystring.parse(this.query);\n    }\n    rest = rest.slice(0, qm);\n  } else if (parseQueryString) {\n    // no query string, but parseQueryString still requested\n    this.search = '';\n    this.query = {};\n  }\n  if (rest) { this.pathname = rest; }\n  if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n    this.pathname = '/';\n  }\n\n  // to support http.request\n  if (this.pathname || this.search) {\n    var p = this.pathname || '';\n    var s = this.search || '';\n    this.path = p + s;\n  }\n\n  // finally, reconstruct the href based on what has been validated.\n  this.href = this.format();\n  return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n  /*\n   * ensure it's an object, and not a string url.\n   * If it's an obj, this is a no-op.\n   * this way, you can call url_format() on strings\n   * to clean up potentially wonky urls.\n   */\n  if (typeof obj === 'string') { obj = urlParse(obj); }\n  if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n  return obj.format();\n}\n\nUrl.prototype.format = function () {\n  var auth = this.auth || '';\n  if (auth) {\n    auth = encodeURIComponent(auth);\n    auth = auth.replace(/%3A/i, ':');\n    auth += '@';\n  }\n\n  var protocol = this.protocol || '',\n    pathname = this.pathname || '',\n    hash = this.hash || '',\n    host = false,\n    query = '';\n\n  if (this.host) {\n    host = auth + this.host;\n  } else if (this.hostname) {\n    host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n    if (this.port) {\n      host += ':' + this.port;\n    }\n  }\n\n  if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n    query = querystring.stringify(this.query, {\n      arrayFormat: 'repeat',\n      addQueryPrefix: false\n    });\n  }\n\n  var search = this.search || (query && ('?' + query)) || '';\n\n  if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n  /*\n   * only the slashedProtocols get the //.  Not mailto:, xmpp:, etc.\n   * unless they had them to begin with.\n   */\n  if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n    host = '//' + (host || '');\n    if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n  } else if (!host) {\n    host = '';\n  }\n\n  if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n  if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n  pathname = pathname.replace(/[?#]/g, function (match) {\n    return encodeURIComponent(match);\n  });\n  search = search.replace('#', '%23');\n\n  return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n  return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n  return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n  if (!source) { return relative; }\n  return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n  if (typeof relative === 'string') {\n    var rel = new Url();\n    rel.parse(relative, false, true);\n    relative = rel;\n  }\n\n  var result = new Url();\n  var tkeys = Object.keys(this);\n  for (var tk = 0; tk < tkeys.length; tk++) {\n    var tkey = tkeys[tk];\n    result[tkey] = this[tkey];\n  }\n\n  /*\n   * hash is always overridden, no matter what.\n   * even href=\"\" will remove it.\n   */\n  result.hash = relative.hash;\n\n  // if the relative url is empty, then there's nothing left to do here.\n  if (relative.href === '') {\n    result.href = result.format();\n    return result;\n  }\n\n  // hrefs like //foo/bar always cut to the protocol.\n  if (relative.slashes && !relative.protocol) {\n    // take everything except the protocol from relative\n    var rkeys = Object.keys(relative);\n    for (var rk = 0; rk < rkeys.length; rk++) {\n      var rkey = rkeys[rk];\n      if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n    }\n\n    // urlParse appends trailing / to urls like http://www.example.com\n    if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n      result.pathname = '/';\n      result.path = result.pathname;\n    }\n\n    result.href = result.format();\n    return result;\n  }\n\n  if (relative.protocol && relative.protocol !== result.protocol) {\n    /*\n     * if it's a known url protocol, then changing\n     * the protocol does weird things\n     * first, if it's not file:, then we MUST have a host,\n     * and if there was a path\n     * to begin with, then we MUST have a path.\n     * if it is file:, then the host is dropped,\n     * because that's known to be hostless.\n     * anything else is assumed to be absolute.\n     */\n    if (!slashedProtocol[relative.protocol]) {\n      var keys = Object.keys(relative);\n      for (var v = 0; v < keys.length; v++) {\n        var k = keys[v];\n        result[k] = relative[k];\n      }\n      result.href = result.format();\n      return result;\n    }\n\n    result.protocol = relative.protocol;\n    if (!relative.host && !hostlessProtocol[relative.protocol]) {\n      var relPath = (relative.pathname || '').split('/');\n      while (relPath.length && !(relative.host = relPath.shift())) { }\n      if (!relative.host) { relative.host = ''; }\n      if (!relative.hostname) { relative.hostname = ''; }\n      if (relPath[0] !== '') { relPath.unshift(''); }\n      if (relPath.length < 2) { relPath.unshift(''); }\n      result.pathname = relPath.join('/');\n    } else {\n      result.pathname = relative.pathname;\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    result.host = relative.host || '';\n    result.auth = relative.auth;\n    result.hostname = relative.hostname || relative.host;\n    result.port = relative.port;\n    // to support http.request\n    if (result.pathname || result.search) {\n      var p = result.pathname || '';\n      var s = result.search || '';\n      result.path = p + s;\n    }\n    result.slashes = result.slashes || relative.slashes;\n    result.href = result.format();\n    return result;\n  }\n\n  var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n    isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n    mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n    removeAllDots = mustEndAbs,\n    srcPath = result.pathname && result.pathname.split('/') || [],\n    relPath = relative.pathname && relative.pathname.split('/') || [],\n    psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n  /*\n   * if the url is a non-slashed url, then relative\n   * links like ../.. should be able\n   * to crawl up to the hostname, as well.  This is strange.\n   * result.protocol has already been set by now.\n   * Later on, put the first path part into the host field.\n   */\n  if (psychotic) {\n    result.hostname = '';\n    result.port = null;\n    if (result.host) {\n      if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n    }\n    result.host = '';\n    if (relative.protocol) {\n      relative.hostname = null;\n      relative.port = null;\n      if (relative.host) {\n        if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n      }\n      relative.host = null;\n    }\n    mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n  }\n\n  if (isRelAbs) {\n    // it's absolute.\n    result.host = relative.host || relative.host === '' ? relative.host : result.host;\n    result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n    result.search = relative.search;\n    result.query = relative.query;\n    srcPath = relPath;\n    // fall through to the dot-handling below.\n  } else if (relPath.length) {\n    /*\n     * it's relative\n     * throw away the existing file, and take the new path instead.\n     */\n    if (!srcPath) { srcPath = []; }\n    srcPath.pop();\n    srcPath = srcPath.concat(relPath);\n    result.search = relative.search;\n    result.query = relative.query;\n  } else if (relative.search != null) {\n    /*\n     * just pull out the search.\n     * like href='?foo'.\n     * Put this after the other two cases because it simplifies the booleans\n     */\n    if (psychotic) {\n      result.host = srcPath.shift();\n      result.hostname = result.host;\n      /*\n       * occationaly the auth can get stuck only in host\n       * this especially happens in cases like\n       * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n       */\n      var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n      if (authInHost) {\n        result.auth = authInHost.shift();\n        result.hostname = authInHost.shift();\n        result.host = result.hostname;\n      }\n    }\n    result.search = relative.search;\n    result.query = relative.query;\n    // to support http.request\n    if (result.pathname !== null || result.search !== null) {\n      result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  if (!srcPath.length) {\n    /*\n     * no path at all.  easy.\n     * we've already handled the other stuff above.\n     */\n    result.pathname = null;\n    // to support http.request\n    if (result.search) {\n      result.path = '/' + result.search;\n    } else {\n      result.path = null;\n    }\n    result.href = result.format();\n    return result;\n  }\n\n  /*\n   * if a url ENDs in . or .., then it must get a trailing slash.\n   * however, if it ends in anything else non-slashy,\n   * then it must NOT get a trailing slash.\n   */\n  var last = srcPath.slice(-1)[0];\n  var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n  /*\n   * strip single dots, resolve double dots to parent dir\n   * if the path tries to go above the root, `up` ends up > 0\n   */\n  var up = 0;\n  for (var i = srcPath.length; i >= 0; i--) {\n    last = srcPath[i];\n    if (last === '.') {\n      srcPath.splice(i, 1);\n    } else if (last === '..') {\n      srcPath.splice(i, 1);\n      up++;\n    } else if (up) {\n      srcPath.splice(i, 1);\n      up--;\n    }\n  }\n\n  // if the path is allowed to go above the root, restore leading ..s\n  if (!mustEndAbs && !removeAllDots) {\n    for (; up--; up) {\n      srcPath.unshift('..');\n    }\n  }\n\n  if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n    srcPath.unshift('');\n  }\n\n  if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n    srcPath.push('');\n  }\n\n  var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n  // put the host back\n  if (psychotic) {\n    result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n    result.host = result.hostname;\n    /*\n     * occationaly the auth can get stuck only in host\n     * this especially happens in cases like\n     * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n     */\n    var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n    if (authInHost) {\n      result.auth = authInHost.shift();\n      result.hostname = authInHost.shift();\n      result.host = result.hostname;\n    }\n  }\n\n  mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n  if (mustEndAbs && !isAbsolute) {\n    srcPath.unshift('');\n  }\n\n  if (srcPath.length > 0) {\n    result.pathname = srcPath.join('/');\n  } else {\n    result.pathname = null;\n    result.path = null;\n  }\n\n  // to support request.http\n  if (result.pathname !== null || result.search !== null) {\n    result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n  }\n  result.auth = relative.auth || result.auth;\n  result.slashes = result.slashes || relative.slashes;\n  result.href = result.format();\n  return result;\n};\n\nUrl.prototype.parseHost = function () {\n  var host = this.host;\n  var port = portPattern.exec(host);\n  if (port) {\n    port = port[0];\n    if (port !== ':') {\n      this.port = port.substr(1);\n    }\n    host = host.substr(0, host.length - port.length);\n  }\n  if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}","// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n","'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n    var target = {}\n\n    for (var i = 0; i < arguments.length; i++) {\n        var source = arguments[i]\n\n        for (var key in source) {\n            if (hasOwnProperty.call(source, key)) {\n                target[key] = source[key]\n            }\n        }\n    }\n\n    return target\n}\n","'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n","const inWebWorker = typeof WorkerGlobalScope !== \"undefined\" &&\n    self instanceof WorkerGlobalScope;\nconst root = inWebWorker\n    ? self\n    : typeof window !== \"undefined\"\n        ? window\n        : globalThis;\nexport const fetch = root.fetch.bind(root);\nexport const Headers = root.Headers;\nexport const Request = root.Request;\nexport const Response = root.Response;\n","'use strict';\n//parse Empty Node as self closing node\nimport buildFromOrderedJs from './orderedJs2Xml.js';\nimport getIgnoreAttributesFn from \"./ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\nconst defaultOptions = {\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  cdataPropName: false,\n  format: false,\n  indentBy: '  ',\n  suppressEmptyNode: false,\n  suppressUnpairedNode: true,\n  suppressBooleanAttributes: true,\n  tagValueProcessor: function (key, a) {\n    return a;\n  },\n  attributeValueProcessor: function (attrName, a) {\n    return a;\n  },\n  preserveOrder: false,\n  commentPropName: false,\n  unpairedTags: [],\n  entities: [\n    { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n    { regex: new RegExp(\">\", \"g\"), val: \">\" },\n    { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n    { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n    { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n  ],\n  processEntities: true,\n  stopNodes: [],\n  // transformTagName: false,\n  // transformAttributeName: false,\n  oneListGroup: false,\n  maxNestedTags: 100,\n  jPath: true  // When true, callbacks receive string jPath; when false, receive Matcher instance\n};\n\nexport default function Builder(options) {\n  this.options = Object.assign({}, defaultOptions, options);\n\n  // Convert old-style stopNodes for backward compatibility\n  // Old syntax: \"*.tag\" meant \"tag anywhere in tree\"\n  // New syntax: \"..tag\" means \"tag anywhere in tree\"\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    this.options.stopNodes = this.options.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Convert old wildcard syntax to deep wildcard\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n\n  // Pre-compile stopNode expressions for pattern matching\n  this.stopNodeExpressions = [];\n  if (this.options.stopNodes && Array.isArray(this.options.stopNodes)) {\n    for (let i = 0; i < this.options.stopNodes.length; i++) {\n      const node = this.options.stopNodes[i];\n      if (typeof node === 'string') {\n        this.stopNodeExpressions.push(new Expression(node));\n      } else if (node instanceof Expression) {\n        this.stopNodeExpressions.push(node);\n      }\n    }\n  }\n\n  if (this.options.ignoreAttributes === true || this.options.attributesGroupName) {\n    this.isAttribute = function (/*a*/) {\n      return false;\n    };\n  } else {\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.attrPrefixLen = this.options.attributeNamePrefix.length;\n    this.isAttribute = isAttribute;\n  }\n\n  this.processTextOrObjNode = processTextOrObjNode\n\n  if (this.options.format) {\n    this.indentate = indentate;\n    this.tagEndChar = '>\\n';\n    this.newLine = '\\n';\n  } else {\n    this.indentate = function () {\n      return '';\n    };\n    this.tagEndChar = '>';\n    this.newLine = '';\n  }\n}\n\nBuilder.prototype.build = function (jObj) {\n  if (this.options.preserveOrder) {\n    return buildFromOrderedJs(jObj, this.options);\n  } else {\n    if (Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1) {\n      jObj = {\n        [this.options.arrayNodeName]: jObj\n      }\n    }\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n    return this.j2x(jObj, 0, matcher).val;\n  }\n};\n\nBuilder.prototype.j2x = function (jObj, level, matcher) {\n  let attrStr = '';\n  let val = '';\n  if (this.options.maxNestedTags && matcher.getDepth() >= this.options.maxNestedTags) {\n    throw new Error(\"Maximum nested tags exceeded\");\n  }\n  // Get jPath based on option: string for backward compatibility, or Matcher for new features\n  const jPath = this.options.jPath ? matcher.toString() : matcher;\n\n  // Check if current node is a stopNode (will be used for attribute encoding)\n  const isCurrentStopNode = this.checkStopNode(matcher);\n\n  for (let key in jObj) {\n    if (!Object.prototype.hasOwnProperty.call(jObj, key)) continue;\n    if (typeof jObj[key] === 'undefined') {\n      // supress undefined node only if it is not an attribute\n      if (this.isAttribute(key)) {\n        val += '';\n      }\n    } else if (jObj[key] === null) {\n      // null attribute should be ignored by the attribute list, but should not cause the tag closing\n      if (this.isAttribute(key)) {\n        val += '';\n      } else if (key === this.options.cdataPropName) {\n        val += '';\n      } else if (key[0] === '?') {\n        val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n      } else {\n        val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n      }\n      // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n    } else if (jObj[key] instanceof Date) {\n      val += this.buildTextValNode(jObj[key], key, '', level, matcher);\n    } else if (typeof jObj[key] !== 'object') {\n      //premitive type\n      const attr = this.isAttribute(key);\n      if (attr && !this.ignoreAttributesFn(attr, jPath)) {\n        attrStr += this.buildAttrPairStr(attr, '' + jObj[key], isCurrentStopNode);\n      } else if (!attr) {\n        //tag value\n        if (key === this.options.textNodeName) {\n          let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n          val += this.replaceEntitiesValue(newval);\n        } else {\n          // Check if this is a stopNode before building\n          matcher.push(key);\n          const isStopNode = this.checkStopNode(matcher);\n          matcher.pop();\n\n          if (isStopNode) {\n            // Build as raw content without encoding\n            const textValue = '' + jObj[key];\n            if (textValue === '') {\n              val += this.indentate(level) + '<' + key + this.closeTag(key) + this.tagEndChar;\n            } else {\n              val += this.indentate(level) + '<' + key + '>' + textValue + '' + textValue + '${item}`;\n        } else if (typeof item === 'object' && item !== null) {\n          const nestedContent = this.buildRawContent(item);\n          const nestedAttrs = this.buildAttributesForStopNode(item);\n          if (nestedContent === '') {\n            content += `<${key}${nestedAttrs}/>`;\n          } else {\n            content += `<${key}${nestedAttrs}>${nestedContent}`;\n          }\n        }\n      }\n    } else if (typeof value === 'object' && value !== null) {\n      // Nested object\n      const nestedContent = this.buildRawContent(value);\n      const nestedAttrs = this.buildAttributesForStopNode(value);\n      if (nestedContent === '') {\n        content += `<${key}${nestedAttrs}/>`;\n      } else {\n        content += `<${key}${nestedAttrs}>${nestedContent}`;\n      }\n    } else {\n      // Primitive value\n      content += `<${key}>${value}`;\n    }\n  }\n\n  return content;\n};\n\n// Build attribute string for stopNode (no entity encoding)\nBuilder.prototype.buildAttributesForStopNode = function (obj) {\n  if (!obj || typeof obj !== 'object') return '';\n\n  let attrStr = '';\n\n  // Check for attributesGroupName (when attributes are grouped)\n  if (this.options.attributesGroupName && obj[this.options.attributesGroupName]) {\n    const attrGroup = obj[this.options.attributesGroupName];\n    for (let attrKey in attrGroup) {\n      if (!Object.prototype.hasOwnProperty.call(attrGroup, attrKey)) continue;\n      const cleanKey = attrKey.startsWith(this.options.attributeNamePrefix)\n        ? attrKey.substring(this.options.attributeNamePrefix.length)\n        : attrKey;\n      const val = attrGroup[attrKey];\n      if (val === true && this.options.suppressBooleanAttributes) {\n        attrStr += ' ' + cleanKey;\n      } else {\n        attrStr += ' ' + cleanKey + '=\"' + val + '\"'; // No encoding for stopNode\n      }\n    }\n  } else {\n    // Look for individual attributes\n    for (let key in obj) {\n      if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n      const attr = this.isAttribute(key);\n      if (attr) {\n        const val = obj[key];\n        if (val === true && this.options.suppressBooleanAttributes) {\n          attrStr += ' ' + attr;\n        } else {\n          attrStr += ' ' + attr + '=\"' + val + '\"'; // No encoding for stopNode\n        }\n      }\n    }\n  }\n\n  return attrStr;\n};\n\nBuilder.prototype.buildObjectNode = function (val, key, attrStr, level) {\n  if (val === \"\") {\n    if (key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n    else {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    }\n  } else {\n\n    let tagEndExp = '' + val + tagEndExp);\n    } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n      return this.indentate(level) + `` + this.newLine;\n    } else {\n      return (\n        this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n        val +\n        this.indentate(level) + tagEndExp);\n    }\n  }\n}\n\nBuilder.prototype.closeTag = function (key) {\n  let closeTag = \"\";\n  if (this.options.unpairedTags.indexOf(key) !== -1) { //unpaired\n    if (!this.options.suppressUnpairedNode) closeTag = \"/\"\n  } else if (this.options.suppressEmptyNode) { //empty\n    closeTag = \"/\";\n  } else {\n    closeTag = `>` + this.newLine;\n  } else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n    return this.indentate(level) + `` + this.newLine;\n  } else if (key[0] === \"?\") {//PI tag\n    return this.indentate(level) + '<' + key + attrStr + '?' + this.tagEndChar;\n  } else {\n    // Normal processing: apply tagValueProcessor and entity replacement\n    let textValue = this.options.tagValueProcessor(key, val);\n    textValue = this.replaceEntitiesValue(textValue);\n\n    if (textValue === '') {\n      return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n    } else {\n      return this.indentate(level) + '<' + key + attrStr + '>' +\n        textValue +\n        ' 0 && this.options.processEntities) {\n    for (let i = 0; i < this.options.entities.length; i++) {\n      const entity = this.options.entities[i];\n      textValue = textValue.replace(entity.regex, entity.val);\n    }\n  }\n  return textValue;\n}\n\nfunction indentate(level) {\n  return this.options.indentBy.repeat(level);\n}\n\nfunction isAttribute(name /*, options*/) {\n  if (name.startsWith(this.options.attributeNamePrefix) && name !== this.options.textNodeName) {\n    return name.substr(this.attrPrefixLen);\n  } else {\n    return false;\n  }\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","import { Expression, Matcher } from 'path-expression-matcher';\n\nconst EOL = \"\\n\";\n\n/**\n * \n * @param {array} jArray \n * @param {any} options \n * @returns \n */\nexport default function toXml(jArray, options) {\n    let indentation = \"\";\n    if (options.format && options.indentBy.length > 0) {\n        indentation = EOL;\n    }\n\n    // Pre-compile stopNode expressions for pattern matching\n    const stopNodeExpressions = [];\n    if (options.stopNodes && Array.isArray(options.stopNodes)) {\n        for (let i = 0; i < options.stopNodes.length; i++) {\n            const node = options.stopNodes[i];\n            if (typeof node === 'string') {\n                stopNodeExpressions.push(new Expression(node));\n            } else if (node instanceof Expression) {\n                stopNodeExpressions.push(node);\n            }\n        }\n    }\n\n    // Initialize matcher for path tracking\n    const matcher = new Matcher();\n\n    return arrToStr(jArray, options, indentation, matcher, stopNodeExpressions);\n}\n\nfunction arrToStr(arr, options, indentation, matcher, stopNodeExpressions) {\n    let xmlStr = \"\";\n    let isPreviousElementTag = false;\n\n    if (options.maxNestedTags && matcher.getDepth() > options.maxNestedTags) {\n        throw new Error(\"Maximum nested tags exceeded\");\n    }\n\n    if (!Array.isArray(arr)) {\n        // Non-array values (e.g. string tag values) should be treated as text content\n        if (arr !== undefined && arr !== null) {\n            let text = arr.toString();\n            text = replaceEntitiesValue(text, options);\n            return text;\n        }\n        return \"\";\n    }\n\n    for (let i = 0; i < arr.length; i++) {\n        const tagObj = arr[i];\n        const tagName = propName(tagObj);\n        if (tagName === undefined) continue;\n\n        // Extract attributes from \":@\" property\n        const attrValues = extractAttributeValues(tagObj[\":@\"], options);\n\n        // Push tag to matcher WITH attributes\n        matcher.push(tagName, attrValues);\n\n        // Check if this is a stop node using Expression matching\n        const isStopNode = checkStopNode(matcher, stopNodeExpressions);\n\n        if (tagName === options.textNodeName) {\n            let tagText = tagObj[tagName];\n            if (!isStopNode) {\n                tagText = options.tagValueProcessor(tagName, tagText);\n                tagText = replaceEntitiesValue(tagText, options);\n            }\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += tagText;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.cdataPropName) {\n            if (isPreviousElementTag) {\n                xmlStr += indentation;\n            }\n            xmlStr += ``;\n            isPreviousElementTag = false;\n            matcher.pop();\n            continue;\n        } else if (tagName === options.commentPropName) {\n            xmlStr += indentation + ``;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        } else if (tagName[0] === \"?\") {\n            const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n            const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n            let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n            piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n            xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n            isPreviousElementTag = true;\n            matcher.pop();\n            continue;\n        }\n\n        let newIdentation = indentation;\n        if (newIdentation !== \"\") {\n            newIdentation += options.indentBy;\n        }\n\n        // Pass isStopNode to attr_to_str so attributes are also not processed for stopNodes\n        const attStr = attr_to_str(tagObj[\":@\"], options, isStopNode);\n        const tagStart = indentation + `<${tagName}${attStr}`;\n\n        // If this is a stopNode, get raw content without processing\n        let tagValue;\n        if (isStopNode) {\n            tagValue = getRawContent(tagObj[tagName], options);\n        } else {\n\n            tagValue = arrToStr(tagObj[tagName], options, newIdentation, matcher, stopNodeExpressions);\n        }\n\n        if (options.unpairedTags.indexOf(tagName) !== -1) {\n            if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n            else xmlStr += tagStart + \"/>\";\n        } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n            xmlStr += tagStart + \"/>\";\n        } else if (tagValue && tagValue.endsWith(\">\")) {\n            xmlStr += tagStart + `>${tagValue}${indentation}`;\n        } else {\n            xmlStr += tagStart + \">\";\n            if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n        }\n        isPreviousElementTag = true;\n\n        // Pop tag from matcher\n        matcher.pop();\n    }\n\n    return xmlStr;\n}\n\n/**\n * Extract attribute values from the \":@\" object and return as plain object\n * for passing to matcher.push()\n */\nfunction extractAttributeValues(attrMap, options) {\n    if (!attrMap || options.ignoreAttributes) return null;\n\n    const attrValues = {};\n    let hasAttrs = false;\n\n    for (let attr in attrMap) {\n        if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n        // Remove the attribute prefix to get clean attribute name\n        const cleanAttrName = attr.startsWith(options.attributeNamePrefix)\n            ? attr.substr(options.attributeNamePrefix.length)\n            : attr;\n        attrValues[cleanAttrName] = attrMap[attr];\n        hasAttrs = true;\n    }\n\n    return hasAttrs ? attrValues : null;\n}\n\n/**\n * Extract raw content from a stopNode without any processing\n * This preserves the content exactly as-is, including special characters\n */\nfunction getRawContent(arr, options) {\n    if (!Array.isArray(arr)) {\n        // Non-array values return as-is\n        if (arr !== undefined && arr !== null) {\n            return arr.toString();\n        }\n        return \"\";\n    }\n\n    let content = \"\";\n    for (let i = 0; i < arr.length; i++) {\n        const item = arr[i];\n        const tagName = propName(item);\n\n        if (tagName === options.textNodeName) {\n            // Raw text content - NO processing, NO entity replacement\n            content += item[tagName];\n        } else if (tagName === options.cdataPropName) {\n            // CDATA content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName === options.commentPropName) {\n            // Comment content\n            content += item[tagName][0][options.textNodeName];\n        } else if (tagName && tagName[0] === \"?\") {\n            // Processing instruction - skip for stopNodes\n            continue;\n        } else if (tagName) {\n            // Nested tags within stopNode\n            // Recursively get raw content and reconstruct the tag\n            // For stopNodes, we don't process attributes either\n            const attStr = attr_to_str_raw(item[\":@\"], options);\n            const nestedContent = getRawContent(item[tagName], options);\n\n            if (!nestedContent || nestedContent.length === 0) {\n                content += `<${tagName}${attStr}/>`;\n            } else {\n                content += `<${tagName}${attStr}>${nestedContent}`;\n            }\n        }\n    }\n    return content;\n}\n\n/**\n * Build attribute string for stopNodes - NO entity replacement\n */\nfunction attr_to_str_raw(attrMap, options) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            // For stopNodes, use raw value without processing\n            let attrVal = attrMap[attr];\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction propName(obj) {\n    const keys = Object.keys(obj);\n    for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n        if (key !== \":@\") return key;\n    }\n}\n\nfunction attr_to_str(attrMap, options, isStopNode) {\n    let attrStr = \"\";\n    if (attrMap && !options.ignoreAttributes) {\n        for (let attr in attrMap) {\n            if (!Object.prototype.hasOwnProperty.call(attrMap, attr)) continue;\n            let attrVal;\n\n            if (isStopNode) {\n                // For stopNodes, use raw value without any processing\n                attrVal = attrMap[attr];\n            } else {\n                // Normal processing: apply attributeValueProcessor and entity replacement\n                attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n                attrVal = replaceEntitiesValue(attrVal, options);\n            }\n\n            if (attrVal === true && options.suppressBooleanAttributes) {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n            } else {\n                attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n            }\n        }\n    }\n    return attrStr;\n}\n\nfunction checkStopNode(matcher, stopNodeExpressions) {\n    if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n    for (let i = 0; i < stopNodeExpressions.length; i++) {\n        if (matcher.matches(stopNodeExpressions[i])) {\n            return true;\n        }\n    }\n    return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n    if (textValue && textValue.length > 0 && options.processEntities) {\n        for (let i = 0; i < options.entities.length; i++) {\n            const entity = options.entities[i];\n            textValue = textValue.replace(entity.regex, entity.val);\n        }\n    }\n    return textValue;\n}","export default function getIgnoreAttributesFn(ignoreAttributes) {\n    if (typeof ignoreAttributes === 'function') {\n        return ignoreAttributes\n    }\n    if (Array.isArray(ignoreAttributes)) {\n        return (attrName) => {\n            for (const pattern of ignoreAttributes) {\n                if (typeof pattern === 'string' && attrName === pattern) {\n                    return true\n                }\n                if (pattern instanceof RegExp && pattern.test(attrName)) {\n                    return true\n                }\n            }\n        }\n    }\n    return () => false\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nexport const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*';\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nexport function getAllMatches(string, regex) {\n  const matches = [];\n  let match = regex.exec(string);\n  while (match) {\n    const allmatches = [];\n    allmatches.startIndex = regex.lastIndex - match[0].length;\n    const len = match.length;\n    for (let index = 0; index < len; index++) {\n      allmatches.push(match[index]);\n    }\n    matches.push(allmatches);\n    match = regex.exec(string);\n  }\n  return matches;\n}\n\nexport const isName = function (string) {\n  const match = regexName.exec(string);\n  return !(match === null || typeof match === 'undefined');\n}\n\nexport function isExist(v) {\n  return typeof v !== 'undefined';\n}\n\nexport function isEmptyObject(obj) {\n  return Object.keys(obj).length === 0;\n}\n\nexport function getValue(v) {\n  if (exports.isExist(v)) {\n    return v;\n  } else {\n    return '';\n  }\n}\n\n/**\n * Dangerous property names that could lead to prototype pollution or security issues\n */\nexport const DANGEROUS_PROPERTY_NAMES = [\n  // '__proto__',\n  // 'constructor',\n  // 'prototype',\n  'hasOwnProperty',\n  'toString',\n  'valueOf',\n  '__defineGetter__',\n  '__defineSetter__',\n  '__lookupGetter__',\n  '__lookupSetter__'\n];\n\nexport const criticalProperties = [\"__proto__\", \"constructor\", \"prototype\"];","'use strict';\n\nimport { getAllMatches, isName } from './util.js';\n\nconst defaultOptions = {\n  allowBooleanAttributes: false, //A tag can have attributes without any value\n  unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexport function validate(xmlData, options) {\n  options = Object.assign({}, defaultOptions, options);\n\n  //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n  //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n  //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n  const tags = [];\n  let tagFound = false;\n\n  //indicates that the root tag has been closed (aka. depth 0 has been reached)\n  let reachedRoot = false;\n\n  if (xmlData[0] === '\\ufeff') {\n    // check for byte order mark (BOM)\n    xmlData = xmlData.substr(1);\n  }\n\n  for (let i = 0; i < xmlData.length; i++) {\n\n    if (xmlData[i] === '<' && xmlData[i + 1] === '?') {\n      i += 2;\n      i = readPI(xmlData, i);\n      if (i.err) return i;\n    } else if (xmlData[i] === '<') {\n      //starting of tag\n      //read until you reach to '>' avoiding any '>' in attribute value\n      let tagStartPos = i;\n      i++;\n\n      if (xmlData[i] === '!') {\n        i = readCommentAndCDATA(xmlData, i);\n        continue;\n      } else {\n        let closingTag = false;\n        if (xmlData[i] === '/') {\n          //closing tag\n          closingTag = true;\n          i++;\n        }\n        //read tagname\n        let tagName = '';\n        for (; i < xmlData.length &&\n          xmlData[i] !== '>' &&\n          xmlData[i] !== ' ' &&\n          xmlData[i] !== '\\t' &&\n          xmlData[i] !== '\\n' &&\n          xmlData[i] !== '\\r'; i++\n        ) {\n          tagName += xmlData[i];\n        }\n        tagName = tagName.trim();\n        //console.log(tagName);\n\n        if (tagName[tagName.length - 1] === '/') {\n          //self closing tag without attributes\n          tagName = tagName.substring(0, tagName.length - 1);\n          //continue;\n          i--;\n        }\n        if (!validateTagName(tagName)) {\n          let msg;\n          if (tagName.trim().length === 0) {\n            msg = \"Invalid space after '<'.\";\n          } else {\n            msg = \"Tag '\" + tagName + \"' is an invalid name.\";\n          }\n          return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n        }\n\n        const result = readAttributeStr(xmlData, i);\n        if (result === false) {\n          return getErrorObject('InvalidAttr', \"Attributes for '\" + tagName + \"' have open quote.\", getLineNumberForPosition(xmlData, i));\n        }\n        let attrStr = result.value;\n        i = result.index;\n\n        if (attrStr[attrStr.length - 1] === '/') {\n          //self closing tag\n          const attrStrStart = i - attrStr.length;\n          attrStr = attrStr.substring(0, attrStr.length - 1);\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid === true) {\n            tagFound = true;\n            //continue; //text may presents after self closing tag\n          } else {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n          }\n        } else if (closingTag) {\n          if (!result.tagClosed) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n          } else if (attrStr.trim().length > 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else if (tags.length === 0) {\n            return getErrorObject('InvalidTag', \"Closing tag '\" + tagName + \"' has not been opened.\", getLineNumberForPosition(xmlData, tagStartPos));\n          } else {\n            const otg = tags.pop();\n            if (tagName !== otg.tagName) {\n              let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n              return getErrorObject('InvalidTag',\n                \"Expected closing tag '\" + otg.tagName + \"' (opened in line \" + openPos.line + \", col \" + openPos.col + \") instead of closing tag '\" + tagName + \"'.\",\n                getLineNumberForPosition(xmlData, tagStartPos));\n            }\n\n            //when there are no more tags, we reached the root level.\n            if (tags.length == 0) {\n              reachedRoot = true;\n            }\n          }\n        } else {\n          const isValid = validateAttributeString(attrStr, options);\n          if (isValid !== true) {\n            //the result from the nested function returns the position of the error within the attribute\n            //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n            //this gives us the absolute index in the entire xml, which we can use to find the line at last\n            return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n          }\n\n          //if the root level has been reached before ...\n          if (reachedRoot === true) {\n            return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n          } else if (options.unpairedTags.indexOf(tagName) !== -1) {\n            //don't push into stack\n          } else {\n            tags.push({ tagName, tagStartPos });\n          }\n          tagFound = true;\n        }\n\n        //skip tag text value\n        //It may include comments and CDATA value\n        for (i++; i < xmlData.length; i++) {\n          if (xmlData[i] === '<') {\n            if (xmlData[i + 1] === '!') {\n              //comment or CADATA\n              i++;\n              i = readCommentAndCDATA(xmlData, i);\n              continue;\n            } else if (xmlData[i + 1] === '?') {\n              i = readPI(xmlData, ++i);\n              if (i.err) return i;\n            } else {\n              break;\n            }\n          } else if (xmlData[i] === '&') {\n            const afterAmp = validateAmpersand(xmlData, i);\n            if (afterAmp == -1)\n              return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n            i = afterAmp;\n          } else {\n            if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n              return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n            }\n          }\n        } //end of reading tag text value\n        if (xmlData[i] === '<') {\n          i--;\n        }\n      }\n    } else {\n      if (isWhiteSpace(xmlData[i])) {\n        continue;\n      }\n      return getErrorObject('InvalidChar', \"char '\" + xmlData[i] + \"' is not expected.\", getLineNumberForPosition(xmlData, i));\n    }\n  }\n\n  if (!tagFound) {\n    return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n  } else if (tags.length == 1) {\n    return getErrorObject('InvalidTag', \"Unclosed tag '\" + tags[0].tagName + \"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n  } else if (tags.length > 0) {\n    return getErrorObject('InvalidXml', \"Invalid '\" +\n      JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '') +\n      \"' found.\", { line: 1, col: 1 });\n  }\n\n  return true;\n};\n\nfunction isWhiteSpace(char) {\n  return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n  const start = i;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] == '?' || xmlData[i] == ' ') {\n      //tagname\n      const tagname = xmlData.substr(start, i - start);\n      if (i > 5 && tagname === 'xml') {\n        return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n      } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n        //check if valid attribut string\n        i++;\n        break;\n      } else {\n        continue;\n      }\n    }\n  }\n  return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n  if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n    //comment\n    for (i += 3; i < xmlData.length; i++) {\n      if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  } else if (\n    xmlData.length > i + 8 &&\n    xmlData[i + 1] === 'D' &&\n    xmlData[i + 2] === 'O' &&\n    xmlData[i + 3] === 'C' &&\n    xmlData[i + 4] === 'T' &&\n    xmlData[i + 5] === 'Y' &&\n    xmlData[i + 6] === 'P' &&\n    xmlData[i + 7] === 'E'\n  ) {\n    let angleBracketsCount = 1;\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === '<') {\n        angleBracketsCount++;\n      } else if (xmlData[i] === '>') {\n        angleBracketsCount--;\n        if (angleBracketsCount === 0) {\n          break;\n        }\n      }\n    }\n  } else if (\n    xmlData.length > i + 9 &&\n    xmlData[i + 1] === '[' &&\n    xmlData[i + 2] === 'C' &&\n    xmlData[i + 3] === 'D' &&\n    xmlData[i + 4] === 'A' &&\n    xmlData[i + 5] === 'T' &&\n    xmlData[i + 6] === 'A' &&\n    xmlData[i + 7] === '['\n  ) {\n    for (i += 8; i < xmlData.length; i++) {\n      if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n        i += 2;\n        break;\n      }\n    }\n  }\n\n  return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n  let attrStr = '';\n  let startChar = '';\n  let tagClosed = false;\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n      if (startChar === '') {\n        startChar = xmlData[i];\n      } else if (startChar !== xmlData[i]) {\n        //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n      } else {\n        startChar = '';\n      }\n    } else if (xmlData[i] === '>') {\n      if (startChar === '') {\n        tagClosed = true;\n        break;\n      }\n    }\n    attrStr += xmlData[i];\n  }\n  if (startChar !== '') {\n    return false;\n  }\n\n  return {\n    value: attrStr,\n    index: i,\n    tagClosed: tagClosed\n  };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab  cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n  //console.log(\"start:\"+attrStr+\":end\");\n\n  //if(attrStr.trim().length === 0) return true; //empty string\n\n  const matches = getAllMatches(attrStr, validAttrStrRegxp);\n  const attrNames = {};\n\n  for (let i = 0; i < matches.length; i++) {\n    if (matches[i][1].length === 0) {\n      //nospace before attribute name: a=\"sd\"b=\"saf\"\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' has no space in starting.\", getPositionFromMatch(matches[i]))\n    } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + matches[i][2] + \"' is without value.\", getPositionFromMatch(matches[i]));\n    } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n      //independent attribute: ab\n      return getErrorObject('InvalidAttr', \"boolean attribute '\" + matches[i][2] + \"' is not allowed.\", getPositionFromMatch(matches[i]));\n    }\n    /* else if(matches[i][6] === undefined){//attribute without value: ab=\n                    return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n                } */\n    const attrName = matches[i][2];\n    if (!validateAttrName(attrName)) {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is an invalid name.\", getPositionFromMatch(matches[i]));\n    }\n    if (!Object.prototype.hasOwnProperty.call(attrNames, attrName)) {\n      //check for duplicate attribute.\n      attrNames[attrName] = 1;\n    } else {\n      return getErrorObject('InvalidAttr', \"Attribute '\" + attrName + \"' is repeated.\", getPositionFromMatch(matches[i]));\n    }\n  }\n\n  return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n  let re = /\\d/;\n  if (xmlData[i] === 'x') {\n    i++;\n    re = /[\\da-fA-F]/;\n  }\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === ';')\n      return i;\n    if (!xmlData[i].match(re))\n      break;\n  }\n  return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n  // https://www.w3.org/TR/xml/#dt-charref\n  i++;\n  if (xmlData[i] === ';')\n    return -1;\n  if (xmlData[i] === '#') {\n    i++;\n    return validateNumberAmpersand(xmlData, i);\n  }\n  let count = 0;\n  for (; i < xmlData.length; i++, count++) {\n    if (xmlData[i].match(/\\w/) && count < 20)\n      continue;\n    if (xmlData[i] === ';')\n      break;\n    return -1;\n  }\n  return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n  return {\n    err: {\n      code: code,\n      msg: message,\n      line: lineNumber.line || lineNumber,\n      col: lineNumber.col,\n    },\n  };\n}\n\nfunction validateAttrName(attrName) {\n  return isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n  return isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n  const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n  return {\n    line: lines.length,\n\n    // column number is last line's length + 1, because column numbering starts at 1:\n    col: lines[lines.length - 1].length + 1\n  };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n  return match.startIndex + match[1].length;\n}\n","// Re-export from fast-xml-builder for backward compatibility\nimport XMLBuilder from 'fast-xml-builder';\nexport default XMLBuilder;\n\n// If there are any named exports you also want to re-export:\nexport * from 'fast-xml-builder';","import { isName } from '../util.js';\n\nexport default class DocTypeReader {\n    constructor(options) {\n        this.suppressValidationErr = !options;\n        this.options = options;\n    }\n\n    readDocType(xmlData, i) {\n        const entities = Object.create(null);\n        let entityCount = 0;\n\n        if (xmlData[i + 3] === 'O' &&\n            xmlData[i + 4] === 'C' &&\n            xmlData[i + 5] === 'T' &&\n            xmlData[i + 6] === 'Y' &&\n            xmlData[i + 7] === 'P' &&\n            xmlData[i + 8] === 'E') {\n            i = i + 9;\n            let angleBracketsCount = 1;\n            let hasBody = false, comment = false;\n            let exp = \"\";\n            for (; i < xmlData.length; i++) {\n                if (xmlData[i] === '<' && !comment) { //Determine the tag type\n                    if (hasBody && hasSeq(xmlData, \"!ENTITY\", i)) {\n                        i += 7;\n                        let entityName, val;\n                        [entityName, val, i] = this.readEntityExp(xmlData, i + 1, this.suppressValidationErr);\n                        if (val.indexOf(\"&\") === -1) { //Parameter entities are not supported\n                            if (this.options.enabled !== false &&\n                                this.options.maxEntityCount != null &&\n                                entityCount >= this.options.maxEntityCount) {\n                                throw new Error(\n                                    `Entity count (${entityCount + 1}) exceeds maximum allowed (${this.options.maxEntityCount})`\n                                );\n                            }\n                            //const escaped = entityName.replace(/[.\\-+*:]/g, '\\\\.');\n                            const escaped = entityName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n                            entities[entityName] = {\n                                regx: RegExp(`&${escaped};`, \"g\"),\n                                val: val\n                            };\n                            entityCount++;\n                        }\n                    }\n                    else if (hasBody && hasSeq(xmlData, \"!ELEMENT\", i)) {\n                        i += 8;//Not supported\n                        const { index } = this.readElementExp(xmlData, i + 1);\n                        i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!ATTLIST\", i)) {\n                        i += 8;//Not supported\n                        // const {index} = this.readAttlistExp(xmlData,i+1);\n                        // i = index;\n                    } else if (hasBody && hasSeq(xmlData, \"!NOTATION\", i)) {\n                        i += 9;//Not supported\n                        const { index } = this.readNotationExp(xmlData, i + 1, this.suppressValidationErr);\n                        i = index;\n                    } else if (hasSeq(xmlData, \"!--\", i)) comment = true;\n                    else throw new Error(`Invalid DOCTYPE`);\n\n                    angleBracketsCount++;\n                    exp = \"\";\n                } else if (xmlData[i] === '>') { //Read tag content\n                    if (comment) {\n                        if (xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\") {\n                            comment = false;\n                            angleBracketsCount--;\n                        }\n                    } else {\n                        angleBracketsCount--;\n                    }\n                    if (angleBracketsCount === 0) {\n                        break;\n                    }\n                } else if (xmlData[i] === '[') {\n                    hasBody = true;\n                } else {\n                    exp += xmlData[i];\n                }\n            }\n            if (angleBracketsCount !== 0) {\n                throw new Error(`Unclosed DOCTYPE`);\n            }\n        } else {\n            throw new Error(`Invalid Tag instead of DOCTYPE`);\n        }\n        return { entities, i };\n    }\n    readEntityExp(xmlData, i) {\n        //External entities are not supported\n        //    \n\n        //Parameter entities are not supported\n        //    \n\n        //Internal entities are supported\n        //    \n\n        // Skip leading whitespace after  this.options.maxEntitySize) {\n            throw new Error(\n                `Entity \"${entityName}\" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`\n            );\n        }\n\n        i--;\n        return [entityName, entityValue, i];\n    }\n\n    readNotationExp(xmlData, i) {\n        // Skip leading whitespace after \n        // \n        // \n        // \n        // \n\n        // Skip leading whitespace after  {\n    while (index < data.length && /\\s/.test(data[index])) {\n        index++;\n    }\n    return index;\n};\n\n\n\nfunction hasSeq(data, seq, i) {\n    for (let j = 0; j < seq.length; j++) {\n        if (seq[j] !== data[i + j + 1]) return false;\n    }\n    return true;\n}\n\nfunction validateEntityName(name) {\n    if (isName(name))\n        return name;\n    else\n        throw new Error(`Invalid entity name ${name}`);\n}","import { DANGEROUS_PROPERTY_NAMES, criticalProperties } from \"../util.js\";\n\nconst defaultOnDangerousProperty = (name) => {\n  if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return \"__\" + name;\n  }\n  return name;\n};\n\n\nexport const defaultOptions = {\n  preserveOrder: false,\n  attributeNamePrefix: '@_',\n  attributesGroupName: false,\n  textNodeName: '#text',\n  ignoreAttributes: true,\n  removeNSPrefix: false, // remove NS from tag name or attribute name if true\n  allowBooleanAttributes: false, //a tag can have attributes without any value\n  //ignoreRootElement : false,\n  parseTagValue: true,\n  parseAttributeValue: false,\n  trimValues: true, //Trim string values of tag and attributes\n  cdataPropName: false,\n  numberParseOptions: {\n    hex: true,\n    leadingZeros: true,\n    eNotation: true\n  },\n  tagValueProcessor: function (tagName, val) {\n    return val;\n  },\n  attributeValueProcessor: function (attrName, val) {\n    return val;\n  },\n  stopNodes: [], //nested tags will not be parsed even for errors\n  alwaysCreateTextNode: false,\n  isArray: () => false,\n  commentPropName: false,\n  unpairedTags: [],\n  processEntities: true,\n  htmlEntities: false,\n  ignoreDeclaration: false,\n  ignorePiTags: false,\n  transformTagName: false,\n  transformAttributeName: false,\n  updateTag: function (tagName, jPath, attrs) {\n    return tagName\n  },\n  // skipEmptyListItem: false\n  captureMetaData: false,\n  maxNestedTags: 100,\n  strictReservedNames: true,\n  jPath: true, // if true, pass jPath string to callbacks; if false, pass matcher instance\n  onDangerousProperty: defaultOnDangerousProperty\n};\n\n\n/**\n * Validates that a property name is safe to use\n * @param {string} propertyName - The property name to validate\n * @param {string} optionName - The option field name (for error message)\n * @throws {Error} If property name is dangerous\n */\nfunction validatePropertyName(propertyName, optionName) {\n  if (typeof propertyName !== 'string') {\n    return; // Only validate string property names\n  }\n\n  const normalized = propertyName.toLowerCase();\n  if (DANGEROUS_PROPERTY_NAMES.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n\n  if (criticalProperties.some(dangerous => normalized === dangerous.toLowerCase())) {\n    throw new Error(\n      `[SECURITY] Invalid ${optionName}: \"${propertyName}\" is a reserved JavaScript keyword that could cause prototype pollution`\n    );\n  }\n}\n\n/**\n * Normalizes processEntities option for backward compatibility\n * @param {boolean|object} value \n * @returns {object} Always returns normalized object\n */\nfunction normalizeProcessEntities(value) {\n  // Boolean backward compatibility\n  if (typeof value === 'boolean') {\n    return {\n      enabled: value, // true or false\n      maxEntitySize: 10000,\n      maxExpansionDepth: 10,\n      maxTotalExpansions: 1000,\n      maxExpandedLength: 100000,\n      maxEntityCount: 100,\n      allowedTags: null,\n      tagFilter: null\n    };\n  }\n\n  // Object config - merge with defaults\n  if (typeof value === 'object' && value !== null) {\n    return {\n      enabled: value.enabled !== false,\n      maxEntitySize: Math.max(1, value.maxEntitySize ?? 10000),\n      maxExpansionDepth: Math.max(1, value.maxExpansionDepth ?? 10),\n      maxTotalExpansions: Math.max(1, value.maxTotalExpansions ?? 1000),\n      maxExpandedLength: Math.max(1, value.maxExpandedLength ?? 100000),\n      maxEntityCount: Math.max(1, value.maxEntityCount ?? 100),\n      allowedTags: value.allowedTags ?? null,\n      tagFilter: value.tagFilter ?? null\n    };\n  }\n\n  // Default to enabled with limits\n  return normalizeProcessEntities(true);\n}\n\nexport const buildOptions = function (options) {\n  const built = Object.assign({}, defaultOptions, options);\n\n  // Validate property names to prevent prototype pollution\n  const propertyNameOptions = [\n    { value: built.attributeNamePrefix, name: 'attributeNamePrefix' },\n    { value: built.attributesGroupName, name: 'attributesGroupName' },\n    { value: built.textNodeName, name: 'textNodeName' },\n    { value: built.cdataPropName, name: 'cdataPropName' },\n    { value: built.commentPropName, name: 'commentPropName' }\n  ];\n\n  for (const { value, name } of propertyNameOptions) {\n    if (value) {\n      validatePropertyName(value, name);\n    }\n  }\n\n  if (built.onDangerousProperty === null) {\n    built.onDangerousProperty = defaultOnDangerousProperty;\n  }\n\n  // Always normalize processEntities for backward compatibility and validation\n  built.processEntities = normalizeProcessEntities(built.processEntities);\n\n  // Convert old-style stopNodes for backward compatibility\n  if (built.stopNodes && Array.isArray(built.stopNodes)) {\n    built.stopNodes = built.stopNodes.map(node => {\n      if (typeof node === 'string' && node.startsWith('*.')) {\n        // Old syntax: *.tagname meant \"tagname anywhere\"\n        // Convert to new syntax: ..tagname\n        return '..' + node.substring(2);\n      }\n      return node;\n    });\n  }\n  //console.debug(built.processEntities)\n  return built;\n};","'use strict';\n///@ts-check\n\nimport { getAllMatches, isExist, DANGEROUS_PROPERTY_NAMES, criticalProperties } from '../util.js';\nimport xmlNode from './xmlNode.js';\nimport DocTypeReader from './DocTypeReader.js';\nimport toNumber from \"strnum\";\nimport getIgnoreAttributesFn from \"../ignoreAttributes.js\";\nimport { Expression, Matcher } from 'path-expression-matcher';\n\n// const regx =\n//   '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n//   .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\n// Helper functions for attribute and namespace handling\n\n/**\n * Extract raw attributes (without prefix) from prefixed attribute map\n * @param {object} prefixedAttrs - Attributes with prefix from buildAttributesMap\n * @param {object} options - Parser options containing attributeNamePrefix\n * @returns {object} Raw attributes for matcher\n */\nfunction extractRawAttributes(prefixedAttrs, options) {\n  if (!prefixedAttrs) return {};\n\n  // Handle attributesGroupName option\n  const attrs = options.attributesGroupName\n    ? prefixedAttrs[options.attributesGroupName]\n    : prefixedAttrs;\n\n  if (!attrs) return {};\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    // Remove the attribute prefix to get raw name\n    if (key.startsWith(options.attributeNamePrefix)) {\n      const rawName = key.substring(options.attributeNamePrefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * Extract namespace from raw tag name\n * @param {string} rawTagName - Tag name possibly with namespace (e.g., \"soap:Envelope\")\n * @returns {string|undefined} Namespace or undefined\n */\nfunction extractNamespace(rawTagName) {\n  if (!rawTagName || typeof rawTagName !== 'string') return undefined;\n\n  const colonIndex = rawTagName.indexOf(':');\n  if (colonIndex !== -1 && colonIndex > 0) {\n    const ns = rawTagName.substring(0, colonIndex);\n    // Don't treat xmlns as a namespace\n    if (ns !== 'xmlns') {\n      return ns;\n    }\n  }\n  return undefined;\n}\n\nexport default class OrderedObjParser {\n  constructor(options) {\n    this.options = options;\n    this.currentNode = null;\n    this.tagsNodeStack = [];\n    this.docTypeEntities = {};\n    this.lastEntities = {\n      \"apos\": { regex: /&(apos|#39|#x27);/g, val: \"'\" },\n      \"gt\": { regex: /&(gt|#62|#x3E);/g, val: \">\" },\n      \"lt\": { regex: /&(lt|#60|#x3C);/g, val: \"<\" },\n      \"quot\": { regex: /&(quot|#34|#x22);/g, val: \"\\\"\" },\n    };\n    this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: \"&\" };\n    this.htmlEntities = {\n      \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n      // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n      // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n      // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n      // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n      // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n      \"cent\": { regex: /&(cent|#162);/g, val: \"¢\" },\n      \"pound\": { regex: /&(pound|#163);/g, val: \"£\" },\n      \"yen\": { regex: /&(yen|#165);/g, val: \"¥\" },\n      \"euro\": { regex: /&(euro|#8364);/g, val: \"€\" },\n      \"copyright\": { regex: /&(copy|#169);/g, val: \"©\" },\n      \"reg\": { regex: /&(reg|#174);/g, val: \"®\" },\n      \"inr\": { regex: /&(inr|#8377);/g, val: \"₹\" },\n      \"num_dec\": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, \"&#\") },\n      \"num_hex\": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, \"&#x\") },\n    };\n    this.addExternalEntities = addExternalEntities;\n    this.parseXml = parseXml;\n    this.parseTextData = parseTextData;\n    this.resolveNameSpace = resolveNameSpace;\n    this.buildAttributesMap = buildAttributesMap;\n    this.isItStopNode = isItStopNode;\n    this.replaceEntitiesValue = replaceEntitiesValue;\n    this.readStopNodeData = readStopNodeData;\n    this.saveTextToParentTag = saveTextToParentTag;\n    this.addChild = addChild;\n    this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)\n    this.entityExpansionCount = 0;\n    this.currentExpandedLength = 0;\n\n    // Initialize path matcher for path-expression-matcher\n    this.matcher = new Matcher();\n\n    // Flag to track if current node is a stop node (optimization)\n    this.isCurrentNodeStopNode = false;\n\n    // Pre-compile stopNodes expressions\n    if (this.options.stopNodes && this.options.stopNodes.length > 0) {\n      this.stopNodeExpressions = [];\n      for (let i = 0; i < this.options.stopNodes.length; i++) {\n        const stopNodeExp = this.options.stopNodes[i];\n        if (typeof stopNodeExp === 'string') {\n          // Convert string to Expression object\n          this.stopNodeExpressions.push(new Expression(stopNodeExp));\n        } else if (stopNodeExp instanceof Expression) {\n          // Already an Expression object\n          this.stopNodeExpressions.push(stopNodeExp);\n        }\n      }\n    }\n  }\n\n}\n\nfunction addExternalEntities(externalEntities) {\n  const entKeys = Object.keys(externalEntities);\n  for (let i = 0; i < entKeys.length; i++) {\n    const ent = entKeys[i];\n    const escaped = ent.replace(/[.\\-+*:]/g, '\\\\.');\n    this.lastEntities[ent] = {\n      regex: new RegExp(\"&\" + escaped + \";\", \"g\"),\n      val: externalEntities[ent]\n    }\n  }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n  if (val !== undefined) {\n    if (this.options.trimValues && !dontTrim) {\n      val = val.trim();\n    }\n    if (val.length > 0) {\n      if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);\n\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n      const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);\n      if (newval === null || newval === undefined) {\n        //don't parse\n        return val;\n      } else if (typeof newval !== typeof val || newval !== val) {\n        //overwrite\n        return newval;\n      } else if (this.options.trimValues) {\n        return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n      } else {\n        const trimmedVal = val.trim();\n        if (trimmedVal === val) {\n          return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n        } else {\n          return val;\n        }\n      }\n    }\n  }\n}\n\nfunction resolveNameSpace(tagname) {\n  if (this.options.removeNSPrefix) {\n    const tags = tagname.split(':');\n    const prefix = tagname.charAt(0) === '/' ? '/' : '';\n    if (tags[0] === 'xmlns') {\n      return '';\n    }\n    if (tags.length === 2) {\n      tagname = prefix + tags[1];\n    }\n  }\n  return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n  if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {\n    // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n    //attrStr = attrStr || attrStr.trim();\n\n    const matches = getAllMatches(attrStr, attrsRegx);\n    const len = matches.length; //don't make it inline\n    const attrs = {};\n\n    // First pass: parse all attributes and update matcher with raw values\n    // This ensures the matcher has all attribute values when processors run\n    const rawAttrsForMatcher = {};\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n      const oldVal = matches[i][4];\n\n      if (attrName.length && oldVal !== undefined) {\n        let parsedVal = oldVal;\n        if (this.options.trimValues) {\n          parsedVal = parsedVal.trim();\n        }\n        parsedVal = this.replaceEntitiesValue(parsedVal, tagName, jPath);\n        rawAttrsForMatcher[attrName] = parsedVal;\n      }\n    }\n\n    // Update matcher with raw attribute values BEFORE running processors\n    if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) {\n      jPath.updateCurrent(rawAttrsForMatcher);\n    }\n\n    // Second pass: now process attributes with matcher having full attribute context\n    for (let i = 0; i < len; i++) {\n      const attrName = this.resolveNameSpace(matches[i][1]);\n\n      // Convert jPath to string if needed for ignoreAttributesFn\n      const jPathStr = this.options.jPath ? jPath.toString() : jPath;\n      if (this.ignoreAttributesFn(attrName, jPathStr)) {\n        continue\n      }\n\n      let oldVal = matches[i][4];\n      let aName = this.options.attributeNamePrefix + attrName;\n\n      if (attrName.length) {\n        if (this.options.transformAttributeName) {\n          aName = this.options.transformAttributeName(aName);\n        }\n        //if (aName === \"__proto__\") aName = \"#__proto__\";\n        aName = sanitizeName(aName, this.options);\n\n        if (oldVal !== undefined) {\n          if (this.options.trimValues) {\n            oldVal = oldVal.trim();\n          }\n          oldVal = this.replaceEntitiesValue(oldVal, tagName, jPath);\n\n          // Pass jPath string or matcher based on options.jPath setting\n          const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n          const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher);\n          if (newVal === null || newVal === undefined) {\n            //don't parse\n            attrs[aName] = oldVal;\n          } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {\n            //overwrite\n            attrs[aName] = newVal;\n          } else {\n            //parse\n            attrs[aName] = parseValue(\n              oldVal,\n              this.options.parseAttributeValue,\n              this.options.numberParseOptions\n            );\n          }\n        } else if (this.options.allowBooleanAttributes) {\n          attrs[aName] = true;\n        }\n      }\n    }\n\n    if (!Object.keys(attrs).length) {\n      return;\n    }\n    if (this.options.attributesGroupName) {\n      const attrCollection = {};\n      attrCollection[this.options.attributesGroupName] = attrs;\n      return attrCollection;\n    }\n    return attrs\n  }\n}\n\nconst parseXml = function (xmlData) {\n  xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n  const xmlObj = new xmlNode('!xml');\n  let currentNode = xmlObj;\n  let textData = \"\";\n\n  // Reset matcher for new document\n  this.matcher.reset();\n\n  // Reset entity expansion counters for this document\n  this.entityExpansionCount = 0;\n  this.currentExpandedLength = 0;\n\n  const docTypeReader = new DocTypeReader(this.options.processEntities);\n  for (let i = 0; i < xmlData.length; i++) {//for each char in XML data\n    const ch = xmlData[i];\n    if (ch === '<') {\n      // const nextIndex = i+1;\n      // const _2ndChar = xmlData[nextIndex];\n      if (xmlData[i + 1] === '/') {//Closing Tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n        let tagName = xmlData.substring(i + 2, closeIndex).trim();\n\n        if (this.options.removeNSPrefix) {\n          const colonIndex = tagName.indexOf(\":\");\n          if (colonIndex !== -1) {\n            tagName = tagName.substr(colonIndex + 1);\n          }\n        }\n\n        tagName = transformTagName(this.options.transformTagName, tagName, \"\", this.options).tagName;\n\n        if (currentNode) {\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        }\n\n        //check if last tag of nested tag was unpaired tag\n        const lastTagName = this.matcher.getCurrentTag();\n        if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {\n          throw new Error(`Unpaired tag can not be used as closing tag: `);\n        }\n        if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {\n          // Pop the unpaired tag\n          this.matcher.pop();\n          this.tagsNodeStack.pop();\n        }\n        // Pop the closing tag\n        this.matcher.pop();\n        this.isCurrentNodeStopNode = false; // Reset flag when closing tag\n\n        currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n        textData = \"\";\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n\n        let tagData = readTagExp(xmlData, i, false, \"?>\");\n        if (!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n        if ((this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags) {\n          //do nothing\n        } else {\n\n          const childNode = new xmlNode(tagData.tagName);\n          childNode.add(this.options.textNodeName, \"\");\n\n          if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {\n            childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName);\n          }\n          this.addChild(currentNode, childNode, this.matcher, i);\n        }\n\n\n        i = tagData.closeIndex + 1;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const endIndex = findClosingIndex(xmlData, \"-->\", i + 4, \"Comment is not closed.\")\n        if (this.options.commentPropName) {\n          const comment = xmlData.substring(i + 4, endIndex - 2);\n\n          textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n          currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);\n        }\n        i = endIndex;\n      } else if (xmlData.substr(i + 1, 2) === '!D') {\n        const result = docTypeReader.readDocType(xmlData, i);\n        this.docTypeEntities = result.entities;\n        i = result.i;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n        const tagExp = xmlData.substring(i + 9, closeIndex);\n\n        textData = this.saveTextToParentTag(textData, currentNode, this.matcher);\n\n        let val = this.parseTextData(tagExp, currentNode.tagname, this.matcher, true, false, true, true);\n        if (val == undefined) val = \"\";\n\n        //cdata should be set even if it is 0 length string\n        if (this.options.cdataPropName) {\n          currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);\n        } else {\n          currentNode.add(this.options.textNodeName, val);\n        }\n\n        i = closeIndex + 2;\n      } else {//Opening tag\n        let result = readTagExp(xmlData, i, this.options.removeNSPrefix);\n\n        // Safety check: readTagExp can return undefined\n        if (!result) {\n          // Log context for debugging\n          const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50));\n          throw new Error(`readTagExp returned undefined at position ${i}. Context: \"${context}\"`);\n        }\n\n        let tagName = result.tagName;\n        const rawTagName = result.rawTagName;\n        let tagExp = result.tagExp;\n        let attrExpPresent = result.attrExpPresent;\n        let closeIndex = result.closeIndex;\n\n        ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n        if (this.options.strictReservedNames &&\n          (tagName === this.options.commentPropName\n            || tagName === this.options.cdataPropName\n            || tagName === this.options.textNodeName\n            || tagName === this.options.attributesGroupName\n          )) {\n          throw new Error(`Invalid tag name: ${tagName}`);\n        }\n\n        //save text as child node\n        if (currentNode && textData) {\n          if (currentNode.tagname !== '!xml') {\n            //when nested tag is found\n            textData = this.saveTextToParentTag(textData, currentNode, this.matcher, false);\n          }\n        }\n\n        //check if last tag was unpaired tag\n        const lastTag = currentNode;\n        if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {\n          currentNode = this.tagsNodeStack.pop();\n          this.matcher.pop();\n        }\n\n        // Clean up self-closing syntax BEFORE processing attributes\n        // This is where tagExp gets the trailing / removed\n        let isSelfClosing = false;\n        if (tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1) {\n          isSelfClosing = true;\n          if (tagName[tagName.length - 1] === \"/\") {\n            tagName = tagName.substr(0, tagName.length - 1);\n            tagExp = tagName;\n          } else {\n            tagExp = tagExp.substr(0, tagExp.length - 1);\n          }\n\n          // Re-check attrExpPresent after cleaning\n          attrExpPresent = (tagName !== tagExp);\n        }\n\n        // Now process attributes with CLEAN tagExp (no trailing /)\n        let prefixedAttrs = null;\n        let rawAttrs = {};\n        let namespace = undefined;\n\n        // Extract namespace from rawTagName\n        namespace = extractNamespace(rawTagName);\n\n        // Push tag to matcher FIRST (with empty attrs for now) so callbacks see correct path\n        if (tagName !== xmlObj.tagname) {\n          this.matcher.push(tagName, {}, namespace);\n        }\n\n        // Now build attributes - callbacks will see correct matcher state\n        if (tagName !== tagExp && attrExpPresent) {\n          // Build attributes (returns prefixed attributes for the tree)\n          // Note: buildAttributesMap now internally updates the matcher with raw attributes\n          prefixedAttrs = this.buildAttributesMap(tagExp, this.matcher, tagName);\n\n          if (prefixedAttrs) {\n            // Extract raw attributes (without prefix) for our use\n            rawAttrs = extractRawAttributes(prefixedAttrs, this.options);\n          }\n        }\n\n        // Now check if this is a stop node (after attributes are set)\n        if (tagName !== xmlObj.tagname) {\n          this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher);\n        }\n\n        const startIndex = i;\n        if (this.isCurrentNodeStopNode) {\n          let tagContent = \"\";\n\n          // For self-closing tags, content is empty\n          if (isSelfClosing) {\n            i = result.closeIndex;\n          }\n          //unpaired tag\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {\n            i = result.closeIndex;\n          }\n          //normal tag\n          else {\n            //read until closing tag is found\n            const result = this.readStopNodeData(xmlData, rawTagName, closeIndex + 1);\n            if (!result) throw new Error(`Unexpected end of ${rawTagName}`);\n            i = result.i;\n            tagContent = result.tagContent;\n          }\n\n          const childNode = new xmlNode(tagName);\n\n          if (prefixedAttrs) {\n            childNode[\":@\"] = prefixedAttrs;\n          }\n\n          // For stop nodes, store raw content as-is without any processing\n          childNode.add(this.options.textNodeName, tagContent);\n\n          this.matcher.pop(); // Pop the stop node tag\n          this.isCurrentNodeStopNode = false; // Reset flag\n\n          this.addChild(currentNode, childNode, this.matcher, startIndex);\n        } else {\n          //selfClosing tag\n          if (isSelfClosing) {\n            ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));\n\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop self-closing tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n          }\n          else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag\n            const childNode = new xmlNode(tagName);\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            this.matcher.pop(); // Pop unpaired tag\n            this.isCurrentNodeStopNode = false; // Reset flag\n            i = result.closeIndex;\n            // Continue to next iteration without changing currentNode\n            continue;\n          }\n          //opening tag\n          else {\n            const childNode = new xmlNode(tagName);\n            if (this.tagsNodeStack.length > this.options.maxNestedTags) {\n              throw new Error(\"Maximum nested tags exceeded\");\n            }\n            this.tagsNodeStack.push(currentNode);\n\n            if (prefixedAttrs) {\n              childNode[\":@\"] = prefixedAttrs;\n            }\n            this.addChild(currentNode, childNode, this.matcher, startIndex);\n            currentNode = childNode;\n          }\n          textData = \"\";\n          i = closeIndex;\n        }\n      }\n    } else {\n      textData += xmlData[i];\n    }\n  }\n  return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, matcher, startIndex) {\n  // unset startIndex if not requested\n  if (!this.options.captureMetaData) startIndex = undefined;\n\n  // Pass jPath string or matcher based on options.jPath setting\n  const jPathOrMatcher = this.options.jPath ? matcher.toString() : matcher;\n  const result = this.options.updateTag(childNode.tagname, jPathOrMatcher, childNode[\":@\"])\n  if (result === false) {\n    //do nothing\n  } else if (typeof result === \"string\") {\n    childNode.tagname = result\n    currentNode.addChild(childNode, startIndex);\n  } else {\n    currentNode.addChild(childNode, startIndex);\n  }\n}\n\n/**\n * @param {object} val - Entity object with regex and val properties\n * @param {string} tagName - Tag name\n * @param {string|Matcher} jPath - jPath string or Matcher instance based on options.jPath\n */\nfunction replaceEntitiesValue(val, tagName, jPath) {\n  const entityConfig = this.options.processEntities;\n\n  if (!entityConfig || !entityConfig.enabled) {\n    return val;\n  }\n\n  // Check if tag is allowed to contain entities\n  if (entityConfig.allowedTags) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    const allowed = Array.isArray(entityConfig.allowedTags)\n      ? entityConfig.allowedTags.includes(tagName)\n      : entityConfig.allowedTags(tagName, jPathOrMatcher);\n\n    if (!allowed) {\n      return val;\n    }\n  }\n\n  // Apply custom tag filter if provided\n  if (entityConfig.tagFilter) {\n    const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;\n    if (!entityConfig.tagFilter(tagName, jPathOrMatcher)) {\n      return val; // Skip based on custom filter\n    }\n  }\n\n  // Replace DOCTYPE entities\n  for (const entityName of Object.keys(this.docTypeEntities)) {\n    const entity = this.docTypeEntities[entityName];\n    const matches = val.match(entity.regx);\n\n    if (matches) {\n      // Track expansions\n      this.entityExpansionCount += matches.length;\n\n      // Check expansion limit\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n\n      // Store length before replacement\n      const lengthBefore = val.length;\n      val = val.replace(entity.regx, entity.val);\n\n      // Check expanded length immediately after replacement\n      if (entityConfig.maxExpandedLength) {\n        this.currentExpandedLength += (val.length - lengthBefore);\n\n        if (this.currentExpandedLength > entityConfig.maxExpandedLength) {\n          throw new Error(\n            `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`\n          );\n        }\n      }\n    }\n  }\n  // Replace standard entities\n  for (const entityName of Object.keys(this.lastEntities)) {\n    const entity = this.lastEntities[entityName];\n    const matches = val.match(entity.regex);\n    if (matches) {\n      this.entityExpansionCount += matches.length;\n      if (entityConfig.maxTotalExpansions &&\n        this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n        throw new Error(\n          `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n        );\n      }\n    }\n    val = val.replace(entity.regex, entity.val);\n  }\n  if (val.indexOf('&') === -1) return val;\n\n  // Replace HTML entities if enabled\n  if (this.options.htmlEntities) {\n    for (const entityName of Object.keys(this.htmlEntities)) {\n      const entity = this.htmlEntities[entityName];\n      const matches = val.match(entity.regex);\n      if (matches) {\n        //console.log(matches);\n        this.entityExpansionCount += matches.length;\n        if (entityConfig.maxTotalExpansions &&\n          this.entityExpansionCount > entityConfig.maxTotalExpansions) {\n          throw new Error(\n            `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`\n          );\n        }\n      }\n      val = val.replace(entity.regex, entity.val);\n    }\n  }\n\n  // Replace ampersand entity last\n  val = val.replace(this.ampEntity.regex, this.ampEntity.val);\n\n  return val;\n}\n\n\nfunction saveTextToParentTag(textData, parentNode, matcher, isLeafNode) {\n  if (textData) { //store previously collected data as textNode\n    if (isLeafNode === undefined) isLeafNode = parentNode.child.length === 0\n\n    textData = this.parseTextData(textData,\n      parentNode.tagname,\n      matcher,\n      false,\n      parentNode[\":@\"] ? Object.keys(parentNode[\":@\"]).length !== 0 : false,\n      isLeafNode);\n\n    if (textData !== undefined && textData !== \"\")\n      parentNode.add(this.options.textNodeName, textData);\n    textData = \"\";\n  }\n  return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * @param {Array} stopNodeExpressions - Array of compiled Expression objects\n * @param {Matcher} matcher - Current path matcher\n */\nfunction isItStopNode(stopNodeExpressions, matcher) {\n  if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;\n\n  for (let i = 0; i < stopNodeExpressions.length; i++) {\n    if (matcher.matches(stopNodeExpressions[i])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\") {\n  let attrBoundary;\n  let tagExp = \"\";\n  for (let index = i; index < xmlData.length; index++) {\n    let ch = xmlData[index];\n    if (attrBoundary) {\n      if (ch === attrBoundary) attrBoundary = \"\";//reset\n    } else if (ch === '\"' || ch === \"'\") {\n      attrBoundary = ch;\n    } else if (ch === closingChar[0]) {\n      if (closingChar[1]) {\n        if (xmlData[index + 1] === closingChar[1]) {\n          return {\n            data: tagExp,\n            index: index\n          }\n        }\n      } else {\n        return {\n          data: tagExp,\n          index: index\n        }\n      }\n    } else if (ch === '\\t') {\n      ch = \" \"\n    }\n    tagExp += ch;\n  }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg) {\n  const closingIndex = xmlData.indexOf(str, i);\n  if (closingIndex === -1) {\n    throw new Error(errMsg)\n  } else {\n    return closingIndex + str.length - 1;\n  }\n}\n\nfunction readTagExp(xmlData, i, removeNSPrefix, closingChar = \">\") {\n  const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);\n  if (!result) return;\n  let tagExp = result.data;\n  const closeIndex = result.index;\n  const separatorIndex = tagExp.search(/\\s/);\n  let tagName = tagExp;\n  let attrExpPresent = true;\n  if (separatorIndex !== -1) {//separate tag name and attributes expression\n    tagName = tagExp.substring(0, separatorIndex);\n    tagExp = tagExp.substring(separatorIndex + 1).trimStart();\n  }\n\n  const rawTagName = tagName;\n  if (removeNSPrefix) {\n    const colonIndex = tagName.indexOf(\":\");\n    if (colonIndex !== -1) {\n      tagName = tagName.substr(colonIndex + 1);\n      attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n    }\n  }\n\n  return {\n    tagName: tagName,\n    tagExp: tagExp,\n    closeIndex: closeIndex,\n    attrExpPresent: attrExpPresent,\n    rawTagName: rawTagName,\n  }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i) {\n  const startIndex = i;\n  // Starting at 1 since we already have an open tag\n  let openTagCount = 1;\n\n  for (; i < xmlData.length; i++) {\n    if (xmlData[i] === \"<\") {\n      if (xmlData[i + 1] === \"/\") {//close tag\n        const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n        let closeTagName = xmlData.substring(i + 2, closeIndex).trim();\n        if (closeTagName === tagName) {\n          openTagCount--;\n          if (openTagCount === 0) {\n            return {\n              tagContent: xmlData.substring(startIndex, i),\n              i: closeIndex\n            }\n          }\n        }\n        i = closeIndex;\n      } else if (xmlData[i + 1] === '?') {\n        const closeIndex = findClosingIndex(xmlData, \"?>\", i + 1, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 3) === '!--') {\n        const closeIndex = findClosingIndex(xmlData, \"-->\", i + 3, \"StopNode is not closed.\")\n        i = closeIndex;\n      } else if (xmlData.substr(i + 1, 2) === '![') {\n        const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n        i = closeIndex;\n      } else {\n        const tagData = readTagExp(xmlData, i, '>')\n\n        if (tagData) {\n          const openTagName = tagData && tagData.tagName;\n          if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length - 1] !== \"/\") {\n            openTagCount++;\n          }\n          i = tagData.closeIndex;\n        }\n      }\n    }\n  }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n  if (shouldParse && typeof val === 'string') {\n    //console.log(options)\n    const newval = val.trim();\n    if (newval === 'true') return true;\n    else if (newval === 'false') return false;\n    else return toNumber(val, options);\n  } else {\n    if (isExist(val)) {\n      return val;\n    } else {\n      return '';\n    }\n  }\n}\n\nfunction fromCodePoint(str, base, prefix) {\n  const codePoint = Number.parseInt(str, base);\n\n  if (codePoint >= 0 && codePoint <= 0x10FFFF) {\n    return String.fromCodePoint(codePoint);\n  } else {\n    return prefix + str + \";\";\n  }\n}\n\nfunction transformTagName(fn, tagName, tagExp, options) {\n  if (fn) {\n    const newTagName = fn(tagName);\n    if (tagExp === tagName) {\n      tagExp = newTagName\n    }\n    tagName = newTagName;\n  }\n  tagName = sanitizeName(tagName, options);\n  return { tagName, tagExp };\n}\n\n\n\nfunction sanitizeName(name, options) {\n  if (criticalProperties.includes(name)) {\n    throw new Error(`[SECURITY] Invalid name: \"${name}\" is a reserved JavaScript keyword that could cause prototype pollution`);\n  } else if (DANGEROUS_PROPERTY_NAMES.includes(name)) {\n    return options.onDangerousProperty(name);\n  }\n  return name;\n}","import { buildOptions } from './OptionsBuilder.js';\nimport OrderedObjParser from './OrderedObjParser.js';\nimport prettify from './node2json.js';\nimport { validate } from \"../validator.js\";\nimport XmlNode from './xmlNode.js';\n\nexport default class XMLParser {\n\n    constructor(options) {\n        this.externalEntities = {};\n        this.options = buildOptions(options);\n\n    }\n    /**\n     * Parse XML dats to JS object \n     * @param {string|Uint8Array} xmlData \n     * @param {boolean|Object} validationOption \n     */\n    parse(xmlData, validationOption) {\n        if (typeof xmlData !== \"string\" && xmlData.toString) {\n            xmlData = xmlData.toString();\n        } else if (typeof xmlData !== \"string\") {\n            throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n        }\n\n        if (validationOption) {\n            if (validationOption === true) validationOption = {}; //validate with default options\n\n            const result = validate(xmlData, validationOption);\n            if (result !== true) {\n                throw Error(`${result.err.msg}:${result.err.line}:${result.err.col}`)\n            }\n        }\n        const orderedObjParser = new OrderedObjParser(this.options);\n        orderedObjParser.addExternalEntities(this.externalEntities);\n        const orderedResult = orderedObjParser.parseXml(xmlData);\n        if (this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n        else return prettify(orderedResult, this.options, orderedObjParser.matcher);\n    }\n\n    /**\n     * Add Entity which is not by default supported by this library\n     * @param {string} key \n     * @param {string} value \n     */\n    addEntity(key, value) {\n        if (value.indexOf(\"&\") !== -1) {\n            throw new Error(\"Entity value can't have '&'\")\n        } else if (key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1) {\n            throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for '
'\")\n        } else if (value === \"&\") {\n            throw new Error(\"An entity with value '&' is not permitted\");\n        } else {\n            this.externalEntities[key] = value;\n        }\n    }\n\n    /**\n     * Returns a Symbol that can be used to access the metadata\n     * property on a node.\n     * \n     * If Symbol is not available in the environment, an ordinary property is used\n     * and the name of the property is here returned.\n     * \n     * The XMLMetaData property is only present when `captureMetaData`\n     * is true in the options.\n     */\n    static getMetaDataSymbol() {\n        return XmlNode.getMetaDataSymbol();\n    }\n}\n","'use strict';\n\nimport XmlNode from './xmlNode.js';\nimport { Matcher } from 'path-expression-matcher';\n\nconst METADATA_SYMBOL = XmlNode.getMetaDataSymbol();\n\n/**\n * Helper function to strip attribute prefix from attribute map\n * @param {object} attrs - Attributes with prefix (e.g., {\"@_class\": \"code\"})\n * @param {string} prefix - Attribute prefix to remove (e.g., \"@_\")\n * @returns {object} Attributes without prefix (e.g., {\"class\": \"code\"})\n */\nfunction stripAttributePrefix(attrs, prefix) {\n  if (!attrs || typeof attrs !== 'object') return {};\n  if (!prefix) return attrs;\n\n  const rawAttrs = {};\n  for (const key in attrs) {\n    if (key.startsWith(prefix)) {\n      const rawName = key.substring(prefix.length);\n      rawAttrs[rawName] = attrs[key];\n    } else {\n      // Attribute without prefix (shouldn't normally happen, but be safe)\n      rawAttrs[key] = attrs[key];\n    }\n  }\n  return rawAttrs;\n}\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns \n */\nexport default function prettify(node, options, matcher) {\n  return compress(node, options, matcher);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {Matcher} matcher - Path matcher instance\n * @returns object\n */\nfunction compress(arr, options, matcher) {\n  let text;\n  const compressedObj = {}; //This is intended to be a plain object\n  for (let i = 0; i < arr.length; i++) {\n    const tagObj = arr[i];\n    const property = propName(tagObj);\n\n    // Push current property to matcher WITH RAW ATTRIBUTES (no prefix)\n    if (property !== undefined && property !== options.textNodeName) {\n      const rawAttrs = stripAttributePrefix(\n        tagObj[\":@\"] || {},\n        options.attributeNamePrefix\n      );\n      matcher.push(property, rawAttrs);\n    }\n\n    if (property === options.textNodeName) {\n      if (text === undefined) text = tagObj[property];\n      else text += \"\" + tagObj[property];\n    } else if (property === undefined) {\n      continue;\n    } else if (tagObj[property]) {\n\n      let val = compress(tagObj[property], options, matcher);\n      const isLeaf = isLeafTag(val, options);\n\n      if (tagObj[\":@\"]) {\n        assignAttributes(val, tagObj[\":@\"], matcher, options);\n      } else if (Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode) {\n        val = val[options.textNodeName];\n      } else if (Object.keys(val).length === 0) {\n        if (options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n        else val = \"\";\n      }\n\n      if (tagObj[METADATA_SYMBOL] !== undefined && typeof val === \"object\" && val !== null) {\n        val[METADATA_SYMBOL] = tagObj[METADATA_SYMBOL]; // copy over metadata\n      }\n\n\n      if (compressedObj[property] !== undefined && Object.prototype.hasOwnProperty.call(compressedObj, property)) {\n        if (!Array.isArray(compressedObj[property])) {\n          compressedObj[property] = [compressedObj[property]];\n        }\n        compressedObj[property].push(val);\n      } else {\n        //TODO: if a node is not an array, then check if it should be an array\n        //also determine if it is a leaf node\n\n        // Pass jPath string or matcher based on options.jPath setting\n        const jPathOrMatcher = options.jPath ? matcher.toString() : matcher;\n        if (options.isArray(property, jPathOrMatcher, isLeaf)) {\n          compressedObj[property] = [val];\n        } else {\n          compressedObj[property] = val;\n        }\n      }\n\n      // Pop property from matcher after processing\n      if (property !== undefined && property !== options.textNodeName) {\n        matcher.pop();\n      }\n    }\n\n  }\n  // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n  if (typeof text === \"string\") {\n    if (text.length > 0) compressedObj[options.textNodeName] = text;\n  } else if (text !== undefined) compressedObj[options.textNodeName] = text;\n\n\n  return compressedObj;\n}\n\nfunction propName(obj) {\n  const keys = Object.keys(obj);\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i];\n    if (key !== \":@\") return key;\n  }\n}\n\nfunction assignAttributes(obj, attrMap, matcher, options) {\n  if (attrMap) {\n    const keys = Object.keys(attrMap);\n    const len = keys.length; //don't make it inline\n    for (let i = 0; i < len; i++) {\n      const atrrName = keys[i];  // This is the PREFIXED name (e.g., \"@_class\")\n\n      // Strip prefix for matcher path (for isArray callback)\n      const rawAttrName = atrrName.startsWith(options.attributeNamePrefix)\n        ? atrrName.substring(options.attributeNamePrefix.length)\n        : atrrName;\n\n      // For attributes, we need to create a temporary path\n      // Pass jPath string or matcher based on options.jPath setting\n      const jPathOrMatcher = options.jPath\n        ? matcher.toString() + \".\" + rawAttrName\n        : matcher;\n\n      if (options.isArray(atrrName, jPathOrMatcher, true, true)) {\n        obj[atrrName] = [attrMap[atrrName]];\n      } else {\n        obj[atrrName] = attrMap[atrrName];\n      }\n    }\n  }\n}\n\nfunction isLeafTag(obj, options) {\n  const { textNodeName } = options;\n  const propCount = Object.keys(obj).length;\n\n  if (propCount === 0) {\n    return true;\n  }\n\n  if (\n    propCount === 1 &&\n    (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n  ) {\n    return true;\n  }\n\n  return false;\n}","'use strict';\n\nlet METADATA_SYMBOL;\n\nif (typeof Symbol !== \"function\") {\n  METADATA_SYMBOL = \"@@xmlMetadata\";\n} else {\n  METADATA_SYMBOL = Symbol(\"XML Node Metadata\");\n}\n\nexport default class XmlNode {\n  constructor(tagname) {\n    this.tagname = tagname;\n    this.child = []; //nested tags, text, cdata, comments in order\n    this[\":@\"] = Object.create(null); //attributes map\n  }\n  add(key, val) {\n    // this.child.push( {name : key, val: val, isCdata: isCdata });\n    if (key === \"__proto__\") key = \"#__proto__\";\n    this.child.push({ [key]: val });\n  }\n  addChild(node, startIndex) {\n    if (node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n    if (node[\":@\"] && Object.keys(node[\":@\"]).length > 0) {\n      this.child.push({ [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n    } else {\n      this.child.push({ [node.tagname]: node.child });\n    }\n    // if requested, add the startIndex\n    if (startIndex !== undefined) {\n      // Note: for now we just overwrite the metadata. If we had more complex metadata,\n      // we might need to do an object append here:  metadata = { ...metadata, startIndex }\n      this.child[this.child.length - 1][METADATA_SYMBOL] = { startIndex };\n    }\n  }\n  /** symbol used for metadata */\n  static getMetaDataSymbol() {\n    return METADATA_SYMBOL;\n  }\n}\n","export function sequence(...methods) {\n    if (methods.length === 0) {\n        throw new Error(\"Failed creating sequence: No functions provided\");\n    }\n    return function __executeSequence(...args) {\n        let result = args;\n        const _this = this;\n        while (methods.length > 0) {\n            const method = methods.shift();\n            result = [method.apply(_this, result)];\n        }\n        return result[0];\n    };\n}\n","import { sequence } from \"./functions.js\";\nconst HOT_PATCHER_TYPE = \"@@HOTPATCHER\";\nconst NOOP = () => { };\nfunction createNewItem(method) {\n    return {\n        original: method,\n        methods: [method],\n        final: false\n    };\n}\n/**\n * Hot patching manager class\n */\nexport class HotPatcher {\n    constructor() {\n        this._configuration = {\n            registry: {},\n            getEmptyAction: \"null\"\n        };\n        this.__type__ = HOT_PATCHER_TYPE;\n    }\n    /**\n     * Configuration object reference\n     * @readonly\n     */\n    get configuration() {\n        return this._configuration;\n    }\n    /**\n     * The action to take when a non-set method is requested\n     * Possible values: null/throw\n     */\n    get getEmptyAction() {\n        return this.configuration.getEmptyAction;\n    }\n    set getEmptyAction(newAction) {\n        this.configuration.getEmptyAction = newAction;\n    }\n    /**\n     * Control another hot-patcher instance\n     * Force the remote instance to use patched methods from calling instance\n     * @param target The target instance to control\n     * @param allowTargetOverrides Allow the target to override patched methods on\n     * the controller (default is false)\n     * @returns Returns self\n     * @throws {Error} Throws if the target is invalid\n     */\n    control(target, allowTargetOverrides = false) {\n        if (!target || target.__type__ !== HOT_PATCHER_TYPE) {\n            throw new Error(\"Failed taking control of target HotPatcher instance: Invalid type or object\");\n        }\n        Object.keys(target.configuration.registry).forEach(foreignKey => {\n            if (this.configuration.registry.hasOwnProperty(foreignKey)) {\n                if (allowTargetOverrides) {\n                    this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n                }\n            }\n            else {\n                this.configuration.registry[foreignKey] = Object.assign({}, target.configuration.registry[foreignKey]);\n            }\n        });\n        target._configuration = this.configuration;\n        return this;\n    }\n    /**\n     * Execute a patched method\n     * @param key The method key\n     * @param args Arguments to pass to the method (optional)\n     * @see HotPatcher#get\n     * @returns The output of the called method\n     */\n    execute(key, ...args) {\n        const method = this.get(key) || NOOP;\n        return method(...args);\n    }\n    /**\n     * Get a method for a key\n     * @param key The method key\n     * @returns Returns the requested function or null if the function\n     * does not exist and the host is configured to return null (and not throw)\n     * @throws {Error} Throws if the configuration specifies to throw and the method\n     * does not exist\n     * @throws {Error} Throws if the `getEmptyAction` value is invalid\n     */\n    get(key) {\n        const item = this.configuration.registry[key];\n        if (!item) {\n            switch (this.getEmptyAction) {\n                case \"null\":\n                    return null;\n                case \"throw\":\n                    throw new Error(`Failed handling method request: No method provided for override: ${key}`);\n                default:\n                    throw new Error(`Failed handling request which resulted in an empty method: Invalid empty-action specified: ${this.getEmptyAction}`);\n            }\n        }\n        return sequence(...item.methods);\n    }\n    /**\n     * Check if a method has been patched\n     * @param key The function key\n     * @returns True if already patched\n     */\n    isPatched(key) {\n        return !!this.configuration.registry[key];\n    }\n    /**\n     * Patch a method name\n     * @param key The method key to patch\n     * @param method The function to set\n     * @param opts Patch options\n     * @returns Returns self\n     */\n    patch(key, method, opts = {}) {\n        const { chain = false } = opts;\n        if (this.configuration.registry[key] && this.configuration.registry[key].final) {\n            throw new Error(`Failed patching '${key}': Method marked as being final`);\n        }\n        if (typeof method !== \"function\") {\n            throw new Error(`Failed patching '${key}': Provided method is not a function`);\n        }\n        if (chain) {\n            // Add new method to the chain\n            if (!this.configuration.registry[key]) {\n                // New key, create item\n                this.configuration.registry[key] = createNewItem(method);\n            }\n            else {\n                // Existing, push the method\n                this.configuration.registry[key].methods.push(method);\n            }\n        }\n        else {\n            // Replace the original\n            if (this.isPatched(key)) {\n                const { original } = this.configuration.registry[key];\n                this.configuration.registry[key] = Object.assign(createNewItem(method), {\n                    original\n                });\n            }\n            else {\n                this.configuration.registry[key] = createNewItem(method);\n            }\n        }\n        return this;\n    }\n    /**\n     * Patch a method inline, execute it and return the value\n     * Used for patching contents of functions. This method will not apply a patched\n     * function if it has already been patched, allowing for external overrides to\n     * function. It also means that the function is cached so that it is not\n     * instantiated every time the outer function is invoked.\n     * @param key The function key to use\n     * @param method The function to patch (once, only if not patched)\n     * @param args Arguments to pass to the function\n     * @returns The output of the patched function\n     * @example\n     *  function mySpecialFunction(a, b) {\n     *      return hotPatcher.patchInline(\"func\", (a, b) => {\n     *          return a + b;\n     *      }, a, b);\n     *  }\n     */\n    patchInline(key, method, ...args) {\n        if (!this.isPatched(key)) {\n            this.patch(key, method);\n        }\n        return this.execute(key, ...args);\n    }\n    /**\n     * Patch a method (or methods) in sequential-mode\n     * See `patch()` with the option `chain: true`\n     * @see patch\n     * @param key The key to patch\n     * @param methods The methods to patch\n     * @returns Returns self\n     */\n    plugin(key, ...methods) {\n        methods.forEach(method => {\n            this.patch(key, method, { chain: true });\n        });\n        return this;\n    }\n    /**\n     * Restore a patched method if it has been overridden\n     * @param key The method key\n     * @returns Returns self\n     */\n    restore(key) {\n        if (!this.isPatched(key)) {\n            throw new Error(`Failed restoring method: No method present for key: ${key}`);\n        }\n        else if (typeof this.configuration.registry[key].original !== \"function\") {\n            throw new Error(`Failed restoring method: Original method not found or of invalid type for key: ${key}`);\n        }\n        this.configuration.registry[key].methods = [this.configuration.registry[key].original];\n        return this;\n    }\n    /**\n     * Set a method as being final\n     * This sets a method as having been finally overridden. Attempts at overriding\n     * again will fail with an error.\n     * @param key The key to make final\n     * @returns Returns self\n     */\n    setFinal(key) {\n        if (!this.configuration.registry.hasOwnProperty(key)) {\n            throw new Error(`Failed marking '${key}' as final: No method found for key`);\n        }\n        this.configuration.registry[key].final = true;\n        return this;\n    }\n}\n","export function assertError(err) {\n    if (!isError(err)) {\n        throw new Error(\"Parameter was not an error\");\n    }\n}\nexport function isError(err) {\n    return ((!!err &&\n        typeof err === \"object\" &&\n        objectToString(err) === \"[object Error]\") ||\n        err instanceof Error);\n}\nfunction objectToString(obj) {\n    return Object.prototype.toString.call(obj);\n}\n","const NAME = \"Layerr\";\nlet __name = NAME;\nexport function getGlobalName() {\n    return __name;\n}\nexport function setGlobalName(name = null) {\n    __name = name ?? NAME;\n}\n","import { assertError, isError } from \"./error.js\";\nimport { getGlobalName } from \"./global.js\";\nimport { parseArguments } from \"./tools.js\";\nexport class Layerr extends Error {\n    constructor(errorOptionsOrMessage, messageText) {\n        const args = [...arguments];\n        const { options, shortMessage } = parseArguments(args);\n        let message = shortMessage;\n        if (options.cause) {\n            message = `${message}: ${options.cause.message}`;\n        }\n        super(message);\n        this.message = message;\n        if (options.name && typeof options.name === \"string\") {\n            this.name = options.name;\n        }\n        else {\n            this.name = getGlobalName();\n        }\n        if (options.cause) {\n            Object.defineProperty(this, \"_cause\", { value: options.cause });\n        }\n        Object.defineProperty(this, \"_info\", { value: {} });\n        if (options.info && typeof options.info === \"object\") {\n            Object.assign(this._info, options.info);\n        }\n        if (Error.captureStackTrace) {\n            const ctor = options.constructorOpt || this.constructor;\n            Error.captureStackTrace(this, ctor);\n        }\n    }\n    static cause(err) {\n        assertError(err);\n        if (!err._cause)\n            return null;\n        return isError(err._cause)\n            ? err._cause\n            : null;\n    }\n    static fullStack(err) {\n        assertError(err);\n        const cause = Layerr.cause(err);\n        if (cause) {\n            return `${err.stack}\\ncaused by: ${Layerr.fullStack(cause)}`;\n        }\n        return err.stack ?? \"\";\n    }\n    static info(err) {\n        assertError(err);\n        const output = {};\n        const cause = Layerr.cause(err);\n        if (cause) {\n            Object.assign(output, Layerr.info(cause));\n        }\n        if (err._info) {\n            Object.assign(output, err._info);\n        }\n        return output;\n    }\n    toString() {\n        let output = this.name ||\n            this.constructor.name ||\n            this.constructor.prototype.name;\n        if (this.message) {\n            output = `${output}: ${this.message}`;\n        }\n        return output;\n    }\n}\n","import { isError } from \"./error.js\";\nexport function parseArguments(args) {\n    let options, shortMessage = \"\";\n    if (args.length === 0) {\n        options = {};\n    }\n    else if (isError(args[0])) {\n        options = {\n            cause: args[0],\n        };\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (args[0] && typeof args[0] === \"object\") {\n        options = Object.assign({}, args[0]);\n        shortMessage = args.slice(1).join(\" \") || \"\";\n    }\n    else if (typeof args[0] === \"string\") {\n        options = {};\n        shortMessage = shortMessage = args.join(\" \") || \"\";\n    }\n    else {\n        throw new Error(\"Invalid arguments passed to Layerr\");\n    }\n    return {\n        options,\n        shortMessage,\n    };\n}\n","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n  /**\n   * Create a new Expression\n   * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Path separator (default: '.')\n   */\n  constructor(pattern, options = {}) {\n    this.pattern = pattern;\n    this.separator = options.separator || '.';\n    this.segments = this._parse(pattern);\n\n    // Cache expensive checks for performance (O(1) instead of O(n))\n    this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n    this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n    this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n  }\n\n  /**\n   * Parse pattern string into segments\n   * @private\n   * @param {string} pattern - Pattern to parse\n   * @returns {Array} Array of segment objects\n   */\n  _parse(pattern) {\n    const segments = [];\n\n    // Split by separator but handle \"..\" specially\n    let i = 0;\n    let currentPart = '';\n\n    while (i < pattern.length) {\n      if (pattern[i] === this.separator) {\n        // Check if next char is also separator (deep wildcard)\n        if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n          // Flush current part if any\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n            currentPart = '';\n          }\n          // Add deep wildcard\n          segments.push({ type: 'deep-wildcard' });\n          i += 2; // Skip both separators\n        } else {\n          // Regular separator\n          if (currentPart.trim()) {\n            segments.push(this._parseSegment(currentPart.trim()));\n          }\n          currentPart = '';\n          i++;\n        }\n      } else {\n        currentPart += pattern[i];\n        i++;\n      }\n    }\n\n    // Flush remaining part\n    if (currentPart.trim()) {\n      segments.push(this._parseSegment(currentPart.trim()));\n    }\n\n    return segments;\n  }\n\n  /**\n   * Parse a single segment\n   * @private\n   * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n   * @returns {Object} Segment object\n   */\n  _parseSegment(part) {\n    const segment = { type: 'tag' };\n\n    // NEW NAMESPACE SYNTAX (v2.0):\n    // ============================\n    // Namespace uses DOUBLE colon (::)\n    // Position uses SINGLE colon (:)\n    // \n    // Examples:\n    //   \"user\"              → tag\n    //   \"user:first\"        → tag + position\n    //   \"user[id]\"          → tag + attribute\n    //   \"user[id]:first\"    → tag + attribute + position\n    //   \"ns::user\"          → namespace + tag\n    //   \"ns::user:first\"    → namespace + tag + position\n    //   \"ns::user[id]\"      → namespace + tag + attribute\n    //   \"ns::user[id]:first\" → namespace + tag + attribute + position\n    //   \"ns::first\"         → namespace + tag named \"first\" (NO ambiguity!)\n    //\n    // This eliminates all ambiguity:\n    //   :: = namespace separator\n    //   :  = position selector\n    //   [] = attributes\n\n    // Step 1: Extract brackets [attr] or [attr=value]\n    let bracketContent = null;\n    let withoutBrackets = part;\n\n    const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n    if (bracketMatch) {\n      withoutBrackets = bracketMatch[1] + bracketMatch[3];\n      if (bracketMatch[2]) {\n        const content = bracketMatch[2].slice(1, -1);\n        if (content) {\n          bracketContent = content;\n        }\n      }\n    }\n\n    // Step 2: Check for namespace (double colon ::)\n    let namespace = undefined;\n    let tagAndPosition = withoutBrackets;\n\n    if (withoutBrackets.includes('::')) {\n      const nsIndex = withoutBrackets.indexOf('::');\n      namespace = withoutBrackets.substring(0, nsIndex).trim();\n      tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n      if (!namespace) {\n        throw new Error(`Invalid namespace in pattern: ${part}`);\n      }\n    }\n\n    // Step 3: Parse tag and position (single colon :)\n    let tag = undefined;\n    let positionMatch = null;\n\n    if (tagAndPosition.includes(':')) {\n      const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n      const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n      const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n      // Verify position is a valid keyword\n      const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n        /^nth\\(\\d+\\)$/.test(posPart);\n\n      if (isPositionKeyword) {\n        tag = tagPart;\n        positionMatch = posPart;\n      } else {\n        // Not a valid position keyword, treat whole thing as tag\n        tag = tagAndPosition;\n      }\n    } else {\n      tag = tagAndPosition;\n    }\n\n    if (!tag) {\n      throw new Error(`Invalid segment pattern: ${part}`);\n    }\n\n    segment.tag = tag;\n    if (namespace) {\n      segment.namespace = namespace;\n    }\n\n    // Step 4: Parse attributes\n    if (bracketContent) {\n      if (bracketContent.includes('=')) {\n        const eqIndex = bracketContent.indexOf('=');\n        segment.attrName = bracketContent.substring(0, eqIndex).trim();\n        segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n      } else {\n        segment.attrName = bracketContent.trim();\n      }\n    }\n\n    // Step 5: Parse position selector\n    if (positionMatch) {\n      const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n      if (nthMatch) {\n        segment.position = 'nth';\n        segment.positionValue = parseInt(nthMatch[1], 10);\n      } else {\n        segment.position = positionMatch;\n      }\n    }\n\n    return segment;\n  }\n\n  /**\n   * Get the number of segments\n   * @returns {number}\n   */\n  get length() {\n    return this.segments.length;\n  }\n\n  /**\n   * Check if expression contains deep wildcard\n   * @returns {boolean}\n   */\n  hasDeepWildcard() {\n    return this._hasDeepWildcard;\n  }\n\n  /**\n   * Check if expression has attribute conditions\n   * @returns {boolean}\n   */\n  hasAttributeCondition() {\n    return this._hasAttributeCondition;\n  }\n\n  /**\n   * Check if expression has position selectors\n   * @returns {boolean}\n   */\n  hasPositionSelector() {\n    return this._hasPositionSelector;\n  }\n\n  /**\n   * Get string representation\n   * @returns {string}\n   */\n  toString() {\n    return this.pattern;\n  }\n}","/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions\n * \n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n * \n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n * \n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n  /**\n   * Create a new Matcher\n   * @param {Object} options - Configuration options\n   * @param {string} options.separator - Default path separator (default: '.')\n   */\n  constructor(options = {}) {\n    this.separator = options.separator || '.';\n    this.path = [];\n    this.siblingStacks = [];\n    // Each path node: { tag: string, values: object, position: number, counter: number }\n    // values only present for current (last) node\n    // Each siblingStacks entry: Map tracking occurrences at each level\n  }\n\n  /**\n   * Push a new tag onto the path\n   * @param {string} tagName - Name of the tag\n   * @param {Object} attrValues - Attribute key-value pairs for current node (optional)\n   * @param {string} namespace - Namespace for the tag (optional)\n   */\n  push(tagName, attrValues = null, namespace = null) {\n    // Remove values from previous current node (now becoming ancestor)\n    if (this.path.length > 0) {\n      const prev = this.path[this.path.length - 1];\n      prev.values = undefined;\n    }\n\n    // Get or create sibling tracking for current level\n    const currentLevel = this.path.length;\n    if (!this.siblingStacks[currentLevel]) {\n      this.siblingStacks[currentLevel] = new Map();\n    }\n\n    const siblings = this.siblingStacks[currentLevel];\n\n    // Create a unique key for sibling tracking that includes namespace\n    const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n    // Calculate counter (how many times this tag appeared at this level)\n    const counter = siblings.get(siblingKey) || 0;\n\n    // Calculate position (total children at this level so far)\n    let position = 0;\n    for (const count of siblings.values()) {\n      position += count;\n    }\n\n    // Update sibling count for this tag\n    siblings.set(siblingKey, counter + 1);\n\n    // Create new node\n    const node = {\n      tag: tagName,\n      position: position,\n      counter: counter\n    };\n\n    // Store namespace if provided\n    if (namespace !== null && namespace !== undefined) {\n      node.namespace = namespace;\n    }\n\n    // Store values only for current node\n    if (attrValues !== null && attrValues !== undefined) {\n      node.values = attrValues;\n    }\n\n    this.path.push(node);\n  }\n\n  /**\n   * Pop the last tag from the path\n   * @returns {Object|undefined} The popped node\n   */\n  pop() {\n    if (this.path.length === 0) {\n      return undefined;\n    }\n\n    const node = this.path.pop();\n\n    // Clean up sibling tracking for levels deeper than current\n    // After pop, path.length is the new depth\n    // We need to clean up siblingStacks[path.length + 1] and beyond\n    if (this.siblingStacks.length > this.path.length + 1) {\n      this.siblingStacks.length = this.path.length + 1;\n    }\n\n    return node;\n  }\n\n  /**\n   * Update current node's attribute values\n   * Useful when attributes are parsed after push\n   * @param {Object} attrValues - Attribute values\n   */\n  updateCurrent(attrValues) {\n    if (this.path.length > 0) {\n      const current = this.path[this.path.length - 1];\n      if (attrValues !== null && attrValues !== undefined) {\n        current.values = attrValues;\n      }\n    }\n  }\n\n  /**\n   * Get current tag name\n   * @returns {string|undefined}\n   */\n  getCurrentTag() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n  }\n\n  /**\n   * Get current namespace\n   * @returns {string|undefined}\n   */\n  getCurrentNamespace() {\n    return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n  }\n\n  /**\n   * Get current node's attribute value\n   * @param {string} attrName - Attribute name\n   * @returns {*} Attribute value or undefined\n   */\n  getAttrValue(attrName) {\n    if (this.path.length === 0) return undefined;\n    const current = this.path[this.path.length - 1];\n    return current.values?.[attrName];\n  }\n\n  /**\n   * Check if current node has an attribute\n   * @param {string} attrName - Attribute name\n   * @returns {boolean}\n   */\n  hasAttr(attrName) {\n    if (this.path.length === 0) return false;\n    const current = this.path[this.path.length - 1];\n    return current.values !== undefined && attrName in current.values;\n  }\n\n  /**\n   * Get current node's sibling position (child index in parent)\n   * @returns {number}\n   */\n  getPosition() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].position ?? 0;\n  }\n\n  /**\n   * Get current node's repeat counter (occurrence count of this tag name)\n   * @returns {number}\n   */\n  getCounter() {\n    if (this.path.length === 0) return -1;\n    return this.path[this.path.length - 1].counter ?? 0;\n  }\n\n  /**\n   * Get current node's sibling index (alias for getPosition for backward compatibility)\n   * @returns {number}\n   * @deprecated Use getPosition() or getCounter() instead\n   */\n  getIndex() {\n    return this.getPosition();\n  }\n\n  /**\n   * Get current path depth\n   * @returns {number}\n   */\n  getDepth() {\n    return this.path.length;\n  }\n\n  /**\n   * Get path as string\n   * @param {string} separator - Optional separator (uses default if not provided)\n   * @param {boolean} includeNamespace - Whether to include namespace in output (default: true)\n   * @returns {string}\n   */\n  toString(separator, includeNamespace = true) {\n    const sep = separator || this.separator;\n    return this.path.map(n => {\n      if (includeNamespace && n.namespace) {\n        return `${n.namespace}:${n.tag}`;\n      }\n      return n.tag;\n    }).join(sep);\n  }\n\n  /**\n   * Get path as array of tag names\n   * @returns {string[]}\n   */\n  toArray() {\n    return this.path.map(n => n.tag);\n  }\n\n  /**\n   * Reset the path to empty\n   */\n  reset() {\n    this.path = [];\n    this.siblingStacks = [];\n  }\n\n  /**\n   * Match current path against an Expression\n   * @param {Expression} expression - The expression to match against\n   * @returns {boolean} True if current path matches the expression\n   */\n  matches(expression) {\n    const segments = expression.segments;\n\n    if (segments.length === 0) {\n      return false;\n    }\n\n    // Handle deep wildcard patterns\n    if (expression.hasDeepWildcard()) {\n      return this._matchWithDeepWildcard(segments);\n    }\n\n    // Simple path matching (no deep wildcards)\n    return this._matchSimple(segments);\n  }\n\n  /**\n   * Match simple path (no deep wildcards)\n   * @private\n   */\n  _matchSimple(segments) {\n    // Path must be same length as segments\n    if (this.path.length !== segments.length) {\n      return false;\n    }\n\n    // Match each segment bottom-to-top\n    for (let i = 0; i < segments.length; i++) {\n      const segment = segments[i];\n      const node = this.path[i];\n      const isCurrentNode = (i === this.path.length - 1);\n\n      if (!this._matchSegment(segment, node, isCurrentNode)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Match path with deep wildcards\n   * @private\n   */\n  _matchWithDeepWildcard(segments) {\n    let pathIdx = this.path.length - 1;  // Start from current node (bottom)\n    let segIdx = segments.length - 1;     // Start from last segment\n\n    while (segIdx >= 0 && pathIdx >= 0) {\n      const segment = segments[segIdx];\n\n      if (segment.type === 'deep-wildcard') {\n        // \"..\" matches zero or more levels\n        segIdx--;\n\n        if (segIdx < 0) {\n          // Pattern ends with \"..\", always matches\n          return true;\n        }\n\n        // Find where next segment matches in the path\n        const nextSeg = segments[segIdx];\n        let found = false;\n\n        for (let i = pathIdx; i >= 0; i--) {\n          const isCurrentNode = (i === this.path.length - 1);\n          if (this._matchSegment(nextSeg, this.path[i], isCurrentNode)) {\n            pathIdx = i - 1;\n            segIdx--;\n            found = true;\n            break;\n          }\n        }\n\n        if (!found) {\n          return false;\n        }\n      } else {\n        // Regular segment\n        const isCurrentNode = (pathIdx === this.path.length - 1);\n        if (!this._matchSegment(segment, this.path[pathIdx], isCurrentNode)) {\n          return false;\n        }\n        pathIdx--;\n        segIdx--;\n      }\n    }\n\n    // All segments must be consumed\n    return segIdx < 0;\n  }\n\n  /**\n   * Match a single segment against a node\n   * @private\n   * @param {Object} segment - Segment from Expression\n   * @param {Object} node - Node from path\n   * @param {boolean} isCurrentNode - Whether this is the current (last) node\n   * @returns {boolean}\n   */\n  _matchSegment(segment, node, isCurrentNode) {\n    // Match tag name (* is wildcard)\n    if (segment.tag !== '*' && segment.tag !== node.tag) {\n      return false;\n    }\n\n    // Match namespace if specified in segment\n    if (segment.namespace !== undefined) {\n      // Segment has namespace - node must match it\n      if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n        return false;\n      }\n    }\n    // If segment has no namespace, it matches nodes with or without namespace\n\n    // Match attribute name (check if node has this attribute)\n    // Can only check for current node since ancestors don't have values\n    if (segment.attrName !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check attributes for ancestor nodes (values not stored)\n        return false;\n      }\n\n      if (!node.values || !(segment.attrName in node.values)) {\n        return false;\n      }\n\n      // Match attribute value (only possible for current node)\n      if (segment.attrValue !== undefined) {\n        const actualValue = node.values[segment.attrName];\n        // Both should be strings\n        if (String(actualValue) !== String(segment.attrValue)) {\n          return false;\n        }\n      }\n    }\n\n    // Match position (only for current node)\n    if (segment.position !== undefined) {\n      if (!isCurrentNode) {\n        // Can't check position for ancestor nodes\n        return false;\n      }\n\n      const counter = node.counter ?? 0;\n\n      if (segment.position === 'first' && counter !== 0) {\n        return false;\n      } else if (segment.position === 'odd' && counter % 2 !== 1) {\n        return false;\n      } else if (segment.position === 'even' && counter % 2 !== 0) {\n        return false;\n      } else if (segment.position === 'nth') {\n        if (counter !== segment.positionValue) {\n          return false;\n        }\n      }\n    }\n\n    return true;\n  }\n\n  /**\n   * Create a snapshot of current state\n   * @returns {Object} State snapshot\n   */\n  snapshot() {\n    return {\n      path: this.path.map(node => ({ ...node })),\n      siblingStacks: this.siblingStacks.map(map => new Map(map))\n    };\n  }\n\n  /**\n   * Restore state from snapshot\n   * @param {Object} snapshot - State snapshot\n   */\n  restore(snapshot) {\n    this.path = snapshot.path.map(node => ({ ...node }));\n    this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n  }\n}","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)([0-9]*(\\.[0-9]*)?)$/;\n// const octRegex = /^0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\nconst consider = {\n    hex: true,\n    // oct: false,\n    leadingZeros: true,\n    decimalPoint: \"\\.\",\n    eNotation: true,\n    //skipLike: /regex/,\n    infinity: \"original\", // \"null\", \"infinity\" (Infinity type), \"string\" (\"Infinity\" (the string literal))\n};\n\nexport default function toNumber(str, options = {}) {\n    options = Object.assign({}, consider, options);\n    if (!str || typeof str !== \"string\") return str;\n\n    let trimmedStr = str.trim();\n\n    if (options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n    else if (str === \"0\") return 0;\n    else if (options.hex && hexRegex.test(trimmedStr)) {\n        return parse_int(trimmedStr, 16);\n        // }else if (options.oct && octRegex.test(str)) {\n        //     return Number.parseInt(val, 8);\n    } else if (!isFinite(trimmedStr)) { //Infinity\n        return handleInfinity(str, Number(trimmedStr), options);\n    } else if (trimmedStr.includes('e') || trimmedStr.includes('E')) { //eNotation\n        return resolveEnotation(str, trimmedStr, options);\n        // }else if (options.parseBin && binRegex.test(str)) {\n        //     return Number.parseInt(val, 2);\n    } else {\n        //separate negative sign, leading zeros, and rest number\n        const match = numRegex.exec(trimmedStr);\n        // +00.123 => [ , '+', '00', '.123', ..\n        if (match) {\n            const sign = match[1] || \"\";\n            const leadingZeros = match[2];\n            let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n            const decimalAdjacentToLeadingZeros = sign ? // 0., -00., 000.\n                str[leadingZeros.length + 1] === \".\"\n                : str[leadingZeros.length] === \".\";\n\n            //trim ending zeros for floating number\n            if (!options.leadingZeros //leading zeros are not allowed\n                && (leadingZeros.length > 1\n                    || (leadingZeros.length === 1 && !decimalAdjacentToLeadingZeros))) {\n                // 00, 00.3, +03.24, 03, 03.24\n                return str;\n            }\n            else {//no leading zeros or leading zeros are allowed\n                const num = Number(trimmedStr);\n                const parsedStr = String(num);\n\n                if (num === 0) return num;\n                if (parsedStr.search(/[eE]/) !== -1) { //given number is long and parsed to eNotation\n                    if (options.eNotation) return num;\n                    else return str;\n                } else if (trimmedStr.indexOf(\".\") !== -1) { //floating number\n                    if (parsedStr === \"0\") return num; //0.0\n                    else if (parsedStr === numTrimmedByZeros) return num; //0.456. 0.79000\n                    else if (parsedStr === `${sign}${numTrimmedByZeros}`) return num;\n                    else return str;\n                }\n\n                let n = leadingZeros ? numTrimmedByZeros : trimmedStr;\n                if (leadingZeros) {\n                    // -009 => -9\n                    return (n === parsedStr) || (sign + n === parsedStr) ? num : str\n                } else {\n                    // +9\n                    return (n === parsedStr) || (n === sign + parsedStr) ? num : str\n                }\n            }\n        } else { //non-numeric string\n            return str;\n        }\n    }\n}\n\nconst eNotationRegx = /^([-+])?(0*)(\\d*(\\.\\d*)?[eE][-\\+]?\\d+)$/;\nfunction resolveEnotation(str, trimmedStr, options) {\n    if (!options.eNotation) return str;\n    const notation = trimmedStr.match(eNotationRegx);\n    if (notation) {\n        let sign = notation[1] || \"\";\n        const eChar = notation[3].indexOf(\"e\") === -1 ? \"E\" : \"e\";\n        const leadingZeros = notation[2];\n        const eAdjacentToLeadingZeros = sign ? // 0E.\n            str[leadingZeros.length + 1] === eChar\n            : str[leadingZeros.length] === eChar;\n\n        if (leadingZeros.length > 1 && eAdjacentToLeadingZeros) return str;\n        else if (leadingZeros.length === 1\n            && (notation[3].startsWith(`.${eChar}`) || notation[3][0] === eChar)) {\n            return Number(trimmedStr);\n        } else if (leadingZeros.length > 0) {\n            // Has leading zeros — only accept if leadingZeros option allows it\n            if (options.leadingZeros && !eAdjacentToLeadingZeros) {\n                trimmedStr = (notation[1] || \"\") + notation[3];\n                return Number(trimmedStr);\n            } else return str;\n        } else {\n            // No leading zeros — always valid e-notation, parse it\n            return Number(trimmedStr);\n        }\n    } else {\n        return str;\n    }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr) {\n    if (numStr && numStr.indexOf(\".\") !== -1) {//float\n        numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n        if (numStr === \".\") numStr = \"0\";\n        else if (numStr[0] === \".\") numStr = \"0\" + numStr;\n        else if (numStr[numStr.length - 1] === \".\") numStr = numStr.substring(0, numStr.length - 1);\n        return numStr;\n    }\n    return numStr;\n}\n\nfunction parse_int(numStr, base) {\n    //polyfill\n    if (parseInt) return parseInt(numStr, base);\n    else if (Number.parseInt) return Number.parseInt(numStr, base);\n    else if (window && window.parseInt) return window.parseInt(numStr, base);\n    else throw new Error(\"parseInt, Number.parseInt, window.parseInt are not supported\")\n}\n\n/**\n * Handle infinite values based on user option\n * @param {string} str - original input string\n * @param {number} num - parsed number (Infinity or -Infinity)\n * @param {object} options - user options\n * @returns {string|number|null} based on infinity option\n */\nfunction handleInfinity(str, num, options) {\n    const isPositive = num === Infinity;\n\n    switch (options.infinity.toLowerCase()) {\n        case \"null\":\n            return null;\n        case \"infinity\":\n            return num; // Return Infinity or -Infinity\n        case \"string\":\n            return isPositive ? \"Infinity\" : \"-Infinity\";\n        case \"original\":\n        default:\n            return str; // Return original string like \"1e1000\"\n    }\n}","function normalize (strArray) {\n  var resultArray = [];\n  if (strArray.length === 0) { return ''; }\n\n  if (typeof strArray[0] !== 'string') {\n    throw new TypeError('Url must be a string. Received ' + strArray[0]);\n  }\n\n  // If the first part is a plain protocol, we combine it with the next part.\n  if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n    var first = strArray.shift();\n    strArray[0] = first + strArray[0];\n  }\n\n  // There must be two or three slashes in the file protocol, two slashes in anything else.\n  if (strArray[0].match(/^file:\\/\\/\\//)) {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n  } else {\n    strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n  }\n\n  for (var i = 0; i < strArray.length; i++) {\n    var component = strArray[i];\n\n    if (typeof component !== 'string') {\n      throw new TypeError('Url must be a string. Received ' + component);\n    }\n\n    if (component === '') { continue; }\n\n    if (i > 0) {\n      // Removing the starting slashes for each component but the first.\n      component = component.replace(/^[\\/]+/, '');\n    }\n    if (i < strArray.length - 1) {\n      // Removing the ending slashes for each component but the last.\n      component = component.replace(/[\\/]+$/, '');\n    } else {\n      // For the last component we will combine multiple slashes to a single one.\n      component = component.replace(/[\\/]+$/, '/');\n    }\n\n    resultArray.push(component);\n\n  }\n\n  var str = resultArray.join('/');\n  // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n  // remove trailing slash before parameters or hash\n  str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n  // replace ? in parameters with &\n  var parts = str.split('?');\n  str = parts.shift() + (parts.length > 0 ? '?': '') + parts.join('&');\n\n  return str;\n}\n\nexport default function urlJoin() {\n  var input;\n\n  if (typeof arguments[0] === 'object') {\n    input = arguments[0];\n  } else {\n    input = [].slice.call(arguments);\n  }\n\n  return normalize(input);\n}\n","import { toBase64 } from \"../tools/encode.js\";\nexport function generateBasicAuthHeader(username, password) {\n    const encoded = toBase64(`${username}:${password}`);\n    return `Basic ${encoded}`;\n}\n","import md5 from \"md5\";\nimport { ha1Compute } from \"../tools/crypto.js\";\nconst NONCE_CHARS = \"abcdef0123456789\";\nconst NONCE_SIZE = 32;\nexport function createDigestContext(username, password, ha1) {\n    return { username, password, ha1, nc: 0, algorithm: \"md5\", hasDigestAuth: false };\n}\nexport function generateDigestAuthHeader(options, digest) {\n    const url = options.url.replace(\"//\", \"\");\n    const uri = url.indexOf(\"/\") == -1 ? \"/\" : url.slice(url.indexOf(\"/\"));\n    const method = options.method ? options.method.toUpperCase() : \"GET\";\n    const qop = /(^|,)\\s*auth\\s*($|,)/.test(digest.qop) ? \"auth\" : false;\n    const ncString = `00000000${digest.nc}`.slice(-8);\n    const ha1 = ha1Compute(digest.algorithm, digest.username, digest.realm, digest.password, digest.nonce, digest.cnonce, digest.ha1);\n    const ha2 = md5(`${method}:${uri}`);\n    const digestResponse = qop\n        ? md5(`${ha1}:${digest.nonce}:${ncString}:${digest.cnonce}:${qop}:${ha2}`)\n        : md5(`${ha1}:${digest.nonce}:${ha2}`);\n    const authValues = {\n        username: digest.username,\n        realm: digest.realm,\n        nonce: digest.nonce,\n        uri,\n        qop,\n        response: digestResponse,\n        nc: ncString,\n        cnonce: digest.cnonce,\n        algorithm: digest.algorithm,\n        opaque: digest.opaque\n    };\n    const authHeader = [];\n    for (const k in authValues) {\n        if (authValues[k]) {\n            if (k === \"qop\" || k === \"nc\" || k === \"algorithm\") {\n                authHeader.push(`${k}=${authValues[k]}`);\n            }\n            else {\n                authHeader.push(`${k}=\"${authValues[k]}\"`);\n            }\n        }\n    }\n    return `Digest ${authHeader.join(\", \")}`;\n}\nfunction makeNonce() {\n    let uid = \"\";\n    for (let i = 0; i < NONCE_SIZE; ++i) {\n        uid = `${uid}${NONCE_CHARS[Math.floor(Math.random() * NONCE_CHARS.length)]}`;\n    }\n    return uid;\n}\nexport function parseDigestAuth(response, _digest) {\n    const isDigest = responseIndicatesDigestAuth(response);\n    if (!isDigest) {\n        return false;\n    }\n    const re = /([a-z0-9_-]+)=(?:\"([^\"]+)\"|([a-z0-9_-]+))/gi;\n    for (;;) {\n        const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n        const match = re.exec(authHeader);\n        if (!match) {\n            break;\n        }\n        _digest[match[1]] = match[2] || match[3];\n    }\n    _digest.nc += 1;\n    _digest.cnonce = makeNonce();\n    return true;\n}\nexport function responseIndicatesDigestAuth(response) {\n    const authHeader = (response.headers && response.headers.get(\"www-authenticate\")) || \"\";\n    return authHeader.split(/\\s/)[0].toLowerCase() === \"digest\";\n}\n","import { Layerr } from \"layerr\";\nimport { createDigestContext } from \"./digest.js\";\nimport { generateBasicAuthHeader } from \"./basic.js\";\nimport { generateTokenAuthHeader } from \"./oauth.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport function setupAuth(context, username, password, oauthToken, ha1) {\n    switch (context.authType) {\n        case AuthType.Auto:\n            if (username && password) {\n                context.headers.Authorization = generateBasicAuthHeader(username, password);\n            }\n            break;\n        case AuthType.Digest:\n            context.digest = createDigestContext(username, password, ha1);\n            break;\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password:\n            context.headers.Authorization = generateBasicAuthHeader(username, password);\n            break;\n        case AuthType.Token:\n            context.headers.Authorization = generateTokenAuthHeader(oauthToken);\n            break;\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.InvalidAuthType\n                }\n            }, `Invalid auth type: ${context.authType}`);\n    }\n}\n","export function generateTokenAuthHeader(token) {\n    return `${token.token_type} ${token.access_token}`;\n}\n","const hasArrayBuffer = typeof ArrayBuffer === \"function\";\nconst { toString: objToString } = Object.prototype;\n// Taken from: https://github.com/fengyuanchen/is-array-buffer/blob/master/src/index.js\nexport function isArrayBuffer(value) {\n    return (hasArrayBuffer &&\n        (value instanceof ArrayBuffer || objToString.call(value) === \"[object ArrayBuffer]\"));\n}\n","export function isBuffer(value) {\n    return (value != null &&\n        value.constructor != null &&\n        typeof value.constructor.isBuffer === \"function\" &&\n        value.constructor.isBuffer(value));\n}\n","export function isReactNative() {\n    return typeof TARGET === \"string\" && TARGET === \"react-native\";\n}\nexport function isWeb() {\n    return typeof TARGET === \"string\" && TARGET === \"web\";\n}\n","import { HotPatcher } from \"hot-patcher\";\nlet __patcher = null;\nexport function getPatcher() {\n    if (!__patcher) {\n        __patcher = new HotPatcher();\n    }\n    return __patcher;\n}\n","import { extractURLPath } from \"./tools/url.js\";\nimport { setupAuth } from \"./auth/index.js\";\nimport { copyFile } from \"./operations/copyFile.js\";\nimport { createDirectory } from \"./operations/createDirectory.js\";\nimport { createReadStream, createWriteStream } from \"./operations/createStream.js\";\nimport { customRequest } from \"./operations/customRequest.js\";\nimport { deleteFile } from \"./operations/deleteFile.js\";\nimport { exists } from \"./operations/exists.js\";\nimport { getDirectoryContents } from \"./operations/directoryContents.js\";\nimport { getFileContents, getFileDownloadLink } from \"./operations/getFileContents.js\";\nimport { lock, unlock } from \"./operations/lock.js\";\nimport { getQuota } from \"./operations/getQuota.js\";\nimport { getStat } from \"./operations/stat.js\";\nimport { getSearch } from \"./operations/search.js\";\nimport { moveFile } from \"./operations/moveFile.js\";\nimport { getFileUploadLink, putFileContents } from \"./operations/putFileContents.js\";\nimport { partialUpdateFileContents } from \"./operations/partialUpdateFileContents.js\";\nimport { getDAVCompliance } from \"./operations/getDAVCompliance.js\";\nimport { displaynameTagParser } from \"./tools/dav.js\";\nimport { AuthType } from \"./types.js\";\nconst DEFAULT_CONTACT_HREF = \"https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md\";\nexport function createClient(remoteURL, options = {}) {\n    const { authType: authTypeRaw = null, remoteBasePath, contactHref = DEFAULT_CONTACT_HREF, ha1, headers = {}, httpAgent, httpsAgent, password, token, username, withCredentials } = options;\n    let authType = authTypeRaw;\n    if (!authType) {\n        authType = username || password ? AuthType.Password : AuthType.None;\n    }\n    const context = {\n        authType,\n        remoteBasePath,\n        contactHref,\n        ha1,\n        headers: Object.assign({}, headers),\n        httpAgent,\n        httpsAgent,\n        password,\n        parsing: {\n            attributeNamePrefix: options.attributeNamePrefix ?? \"@\",\n            attributeParsers: [],\n            tagParsers: [displaynameTagParser]\n        },\n        remotePath: extractURLPath(remoteURL),\n        remoteURL,\n        token,\n        username,\n        withCredentials\n    };\n    setupAuth(context, username, password, token, ha1);\n    return {\n        copyFile: (filename, destination, options) => copyFile(context, filename, destination, options),\n        createDirectory: (path, options) => createDirectory(context, path, options),\n        createReadStream: (filename, options) => createReadStream(context, filename, options),\n        createWriteStream: (filename, options, callback) => createWriteStream(context, filename, options, callback),\n        customRequest: (path, requestOptions) => customRequest(context, path, requestOptions),\n        deleteFile: (filename, options) => deleteFile(context, filename, options),\n        exists: (path, options) => exists(context, path, options),\n        getDirectoryContents: (path, options\n        // @ts-ignore\n        ) => getDirectoryContents(context, path, options),\n        getFileContents: (filename, options) => getFileContents(context, filename, options),\n        getFileDownloadLink: (filename) => getFileDownloadLink(context, filename),\n        getFileUploadLink: (filename) => getFileUploadLink(context, filename),\n        getHeaders: () => Object.assign({}, context.headers),\n        getQuota: (options) => getQuota(context, options),\n        lock: (path, options) => lock(context, path, options),\n        moveFile: (filename, destinationFilename, options) => moveFile(context, filename, destinationFilename, options),\n        putFileContents: (filename, data, options) => putFileContents(context, filename, data, options),\n        partialUpdateFileContents: (filePath, start, end, data, options) => partialUpdateFileContents(context, filePath, start, end, data, options),\n        getDAVCompliance: (path) => getDAVCompliance(context, path),\n        search: (path, options) => getSearch(context, path, options),\n        setHeaders: (headers) => {\n            context.headers = Object.assign({}, headers);\n        },\n        stat: (path, options) => getStat(context, path, options),\n        unlock: (path, token, options) => unlock(context, path, token, options),\n        registerAttributeParser: (parser) => {\n            context.parsing.attributeParsers.push(parser);\n        },\n        registerTagParser: (parser) => {\n            context.parsing.tagParsers.push(parser);\n        }\n    };\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function copyFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"COPY\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\",\n            /**\n             * From RFC4918 section 9.8.3: A client may submit a Depth header on a COPY on a collection with a value of \"0\"\n             * or \"infinity\". The COPY method on a collection without a Depth header MUST act as if\n             * a Depth header with value \"infinity\" was included.\n             */\n            Depth: options.shallow ? \"0\" : \"infinity\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath, getAllDirectories, normalisePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getStat } from \"./stat.js\";\nexport async function createDirectory(context, dirPath, options = {}) {\n    if (options.recursive === true)\n        return createDirectoryRecursively(context, dirPath, options);\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, ensureCollectionPath(encodePath(dirPath))),\n        method: \"MKCOL\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n/**\n * Ensure the path is a proper \"collection\" path by ensuring it has a trailing \"/\".\n * The proper format of collection according to the specification does contain the trailing slash.\n * http://www.webdav.org/specs/rfc4918.html#rfc.section.5.2\n * @param path Path of the collection\n * @return string Path of the collection with appended trailing \"/\" in case the `path` does not have it.\n */\nfunction ensureCollectionPath(path) {\n    if (!path.endsWith(\"/\")) {\n        return path + \"/\";\n    }\n    return path;\n}\nasync function createDirectoryRecursively(context, dirPath, options = {}) {\n    const paths = getAllDirectories(normalisePath(dirPath));\n    paths.sort((a, b) => {\n        if (a.length > b.length) {\n            return 1;\n        }\n        else if (b.length > a.length) {\n            return -1;\n        }\n        return 0;\n    });\n    let creating = false;\n    for (const testPath of paths) {\n        if (creating) {\n            await createDirectory(context, testPath, {\n                ...options,\n                recursive: false\n            });\n            continue;\n        }\n        try {\n            const testStat = (await getStat(context, testPath));\n            if (testStat.type !== \"directory\") {\n                throw new Error(`Path includes a file: ${dirPath}`);\n            }\n        }\n        catch (err) {\n            const error = err;\n            if (error.status === 404) {\n                creating = true;\n                await createDirectory(context, testPath, {\n                    ...options,\n                    recursive: false\n                });\n            }\n            else {\n                throw err;\n            }\n        }\n    }\n}\n","import Stream from \"stream\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nconst NOOP = () => { };\nexport function createReadStream(context, filePath, options = {}) {\n    const PassThroughStream = Stream.PassThrough;\n    const outStream = new PassThroughStream();\n    getFileStream(context, filePath, options)\n        .then(stream => {\n        stream.pipe(outStream);\n    })\n        .catch(err => {\n        outStream.emit(\"error\", err);\n    });\n    return outStream;\n}\nexport function createWriteStream(context, filePath, options = {}, callback = NOOP) {\n    const PassThroughStream = Stream.PassThrough;\n    const writeStream = new PassThroughStream();\n    const headers = {};\n    if (options.overwrite === false) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data: writeStream,\n        maxRedirects: 0\n    }, context, options);\n    request(requestOptions, context)\n        .then(response => handleResponseCode(context, response))\n        .then(response => {\n        // Fire callback asynchronously to avoid errors\n        setTimeout(() => {\n            callback(response);\n        }, 0);\n    })\n        .catch(err => {\n        writeStream.emit(\"error\", err);\n    });\n    return writeStream;\n}\nasync function getFileStream(context, filePath, options = {}) {\n    const headers = {};\n    if (typeof options.range === \"object\" && typeof options.range.start === \"number\") {\n        let rangeHeader = `bytes=${options.range.start}-`;\n        if (typeof options.range.end === \"number\") {\n            rangeHeader = `${rangeHeader}${options.range.end}`;\n        }\n        headers.Range = rangeHeader;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (headers.Range && response.status !== 206) {\n        const responseError = new Error(`Invalid response code for partial request: ${response.status}`);\n        responseError.status = response.status;\n        throw responseError;\n    }\n    if (options.callback) {\n        setTimeout(() => {\n            options.callback(response);\n        }, 0);\n    }\n    // @ts-ignore\n    return response.body;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function customRequest(context, remotePath, requestOptions) {\n    if (!requestOptions.url) {\n        requestOptions.url = joinURL(context.remoteURL, encodePath(remotePath));\n    }\n    const finalOptions = prepareRequestOptions(requestOptions, context, {});\n    const response = await request(finalOptions, context);\n    handleResponseCode(context, response);\n    return response;\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function deleteFile(context, filename, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"DELETE\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import pathPosix from \"path-posix\";\nimport { joinURL, normaliseHREF } from \"../tools/url.js\";\nimport { encodePath, makePathAbsolute, normalisePath } from \"../tools/path.js\";\nimport { parseXML, prepareFileFromProps } from \"../tools/dav.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processGlobFilter, processResponsePayload } from \"../response.js\";\nexport async function getDirectoryContents(context, remotePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(remotePath), \"/\"),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: options.deep ? \"infinity\" : \"1\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    if (!responseData) {\n        throw new Error(\"Failed parsing directory contents: Empty response\");\n    }\n    const davResp = await parseXML(responseData, context.parsing);\n    const _remotePath = makePathAbsolute(remotePath);\n    const remoteBasePath = makePathAbsolute(context.remoteBasePath || context.remotePath);\n    let files = getDirectoryFiles(davResp, remoteBasePath, _remotePath, options.details, options.includeSelf);\n    if (options.glob) {\n        files = processGlobFilter(files, options.glob);\n    }\n    return processResponsePayload(response, files, options.details);\n}\nfunction getDirectoryFiles(result, serverremoteBasePath, requestPath, isDetailed = false, includeSelf = false) {\n    const serverBase = pathPosix.join(serverremoteBasePath, \"/\");\n    // Extract the response items (directory contents)\n    const { multistatus: { response: responseItems } } = result;\n    // Map all items to a consistent output structure (results)\n    const nodes = responseItems.map(item => {\n        // HREF is the file path (in full) - The href is already XML entities decoded (e.g. foo&bar is reverted to foo&bar)\n        const href = normaliseHREF(item.href);\n        // Each item should contain a stat object\n        const { propstat: { prop: props } } = item;\n        // Process the true full filename (minus the base server path)\n        const filename = serverBase === \"/\"\n            ? decodeURIComponent(normalisePath(href))\n            : normalisePath(pathPosix.relative(decodeURIComponent(serverBase), decodeURIComponent(href)));\n        return prepareFileFromProps(props, filename, isDetailed);\n    });\n    // If specified, also return the current directory\n    if (includeSelf) {\n        return nodes;\n    }\n    // Else, filter out the item pointing to the current directory (not needed)\n    return nodes.filter(item => item.basename &&\n        (item.type === \"file\" || item.filename !== requestPath.replace(/\\/$/, \"\")));\n}\n","import { getStat } from \"./stat.js\";\nexport async function exists(context, remotePath, options = {}) {\n    try {\n        await getStat(context, remotePath, options);\n        return true;\n    }\n    catch (err) {\n        if (err.status === 404) {\n            return false;\n        }\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function getDAVCompliance(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"OPTIONS\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        throw error;\n    }\n    const davHeader = response.headers.get(\"DAV\") ?? \"\";\n    const compliance = davHeader.split(\",\").map(item => item.trim());\n    const server = response.headers.get(\"Server\") ?? \"\";\n    return {\n        compliance,\n        server\n    };\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nconst TRANSFORM_RETAIN_FORMAT = (v) => v;\nexport async function getFileContents(context, filePath, options = {}) {\n    const { format = \"binary\" } = options;\n    if (format !== \"binary\" && format !== \"text\") {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidOutputFormat\n            }\n        }, `Invalid output format: ${format}`);\n    }\n    return format === \"text\"\n        ? getFileContentsString(context, filePath, options)\n        : getFileContentsBuffer(context, filePath, options);\n}\nasync function getFileContentsBuffer(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\"\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    let body;\n    if (isWeb() || isReactNative()) {\n        body = await response.arrayBuffer();\n    }\n    else {\n        body = Buffer.from(await response.arrayBuffer());\n    }\n    return processResponsePayload(response, body, options.details);\n}\nasync function getFileContentsString(context, filePath, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"GET\",\n        headers: {\n            Accept: \"text/plain\"\n        },\n        transformResponse: [TRANSFORM_RETAIN_FORMAT]\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const body = await response.text();\n    return processResponsePayload(response, body, options.details);\n}\nexport function getFileDownloadLink(context, filePath) {\n    let url = joinURL(context.remoteURL, encodePath(filePath));\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { prepareRequestOptions, request } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nimport { parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { parseQuota } from \"../tools/quota.js\";\nexport async function getQuota(context, options = {}) {\n    const path = options.path || \"/\";\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, path),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const quota = parseQuota(result);\n    return processResponsePayload(response, quota, options.details);\n}\n","import nestedProp from \"nested-property\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { generateLockXML, parseGenericResponse } from \"../tools/xml.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { createErrorFromResponse, handleResponseCode } from \"../response.js\";\nconst DEFAULT_TIMEOUT = \"Infinite, Second-4100000000\";\nexport async function lock(context, path, options = {}) {\n    const { refreshToken, timeout = DEFAULT_TIMEOUT } = options;\n    const headers = {\n        Accept: \"text/plain,application/xml\",\n        Timeout: timeout\n    };\n    if (refreshToken) {\n        headers.If = refreshToken;\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"LOCK\",\n        headers,\n        data: generateLockXML(context.contactHref)\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const lockPayload = parseGenericResponse(responseData);\n    const token = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.locktoken.href\");\n    const serverTimeout = nestedProp.get(lockPayload, \"prop.lockdiscovery.activelock.timeout\");\n    if (!token) {\n        const err = createErrorFromResponse(response, \"No lock token received: \");\n        throw err;\n    }\n    return {\n        token,\n        serverTimeout\n    };\n}\nexport async function unlock(context, path, token, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(path)),\n        method: \"UNLOCK\",\n        headers: {\n            \"Lock-Token\": token\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    if (response.status !== 204 && response.status !== 200) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n}\n","import { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nexport async function moveFile(context, filename, destination, options = {}) {\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"MOVE\",\n        headers: {\n            Destination: joinURL(context.remoteURL, encodePath(destination)),\n            /**\n             * From RFC4918 section 10.6: If the overwrite header is not included in a COPY or MOVE request,\n             * then the resource MUST treat the request as if it has an overwrite header of value \"T\".\n             *\n             * Meaning the overwrite header is always set to \"T\" EXCEPT the option is explicitly set to false.\n             */\n            Overwrite: options.overwrite === false ? \"F\" : \"T\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { getDAVCompliance } from \"./getDAVCompliance.js\";\nimport { ErrorCode } from \"../types.js\";\nexport async function partialUpdateFileContents(context, filePath, start, end, data, options = {}) {\n    const compliance = await getDAVCompliance(context, filePath, options);\n    if (compliance.compliance.includes(\"sabredav-partialupdate\")) {\n        return await partialUpdateFileContentsSabredav(context, filePath, start, end, data, options);\n    }\n    if (compliance.server.includes(\"Apache\") &&\n        compliance.compliance.includes(\"\")) {\n        return await partialUpdateFileContentsApache(context, filePath, start, end, data, options);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.NotSupported\n        }\n    }, \"Not supported\");\n}\nasync function partialUpdateFileContentsSabredav(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        // Actually, SabreDAV support negative start value,\n        // Do not support here for compatibility with Apache-style way\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/x-sabredav-partialupdate\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"X-Update-Range\": `bytes=${start}-${end}`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PATCH\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\nasync function partialUpdateFileContentsApache(context, filePath, start, end, data, options = {}) {\n    if (start > end || start < 0) {\n        throw new Layerr({\n            info: {\n                code: ErrorCode.InvalidUpdateRange\n            }\n        }, `Invalid update range ${start} for partial update`);\n    }\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\",\n        \"Content-Length\": `${end - start + 1}`,\n        \"Content-Range\": `bytes ${start}-${end}/*`\n    };\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n}\n","import { Layerr } from \"layerr\";\nimport Stream from \"stream\";\nimport { fromBase64 } from \"../tools/encode.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { calculateDataLength } from \"../tools/size.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode } from \"../response.js\";\nimport { AuthType, ErrorCode } from \"../types.js\";\nexport async function putFileContents(context, filePath, data, options = {}) {\n    const { contentLength = true, overwrite = true } = options;\n    const headers = {\n        \"Content-Type\": \"application/octet-stream\"\n    };\n    if (!isWeb() &&\n        !isReactNative() &&\n        typeof Stream !== \"undefined\" &&\n        typeof Stream?.Readable !== \"undefined\" &&\n        data instanceof Stream.Readable) {\n        // Skip, no content-length\n    }\n    else if (contentLength === false) {\n        // Skip, disabled\n    }\n    else if (typeof contentLength === \"number\") {\n        headers[\"Content-Length\"] = `${contentLength}`;\n    }\n    else {\n        headers[\"Content-Length\"] = `${calculateDataLength(data)}`;\n    }\n    if (!overwrite) {\n        headers[\"If-None-Match\"] = \"*\";\n    }\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filePath)),\n        method: \"PUT\",\n        headers,\n        data\n    }, context, options);\n    const response = await request(requestOptions, context);\n    try {\n        handleResponseCode(context, response);\n    }\n    catch (err) {\n        const error = err;\n        if (error.status === 412 && !overwrite) {\n            return false;\n        }\n        else {\n            throw error;\n        }\n    }\n    return true;\n}\nexport function getFileUploadLink(context, filePath) {\n    let url = `${joinURL(context.remoteURL, encodePath(filePath))}?Content-Type=application/octet-stream`;\n    const protocol = /^https:/i.test(url) ? \"https\" : \"http\";\n    switch (context.authType) {\n        case AuthType.None:\n            // Do nothing\n            break;\n        case AuthType.Password: {\n            const authPart = context.headers.Authorization.replace(/^Basic /i, \"\").trim();\n            const authContents = fromBase64(authPart);\n            url = url.replace(/^https?:\\/\\//, `${protocol}://${authContents}@`);\n            break;\n        }\n        default:\n            throw new Layerr({\n                info: {\n                    code: ErrorCode.LinkUnsupportedAuthType\n                }\n            }, `Unsupported auth type for file link: ${context.authType}`);\n    }\n    return url;\n}\n","import { parseSearch, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getSearch(context, searchArbiter, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(searchArbiter)),\n        method: \"SEARCH\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            // Ensure a Content-Type header is set was this is required by e.g. sabre/dav\n            \"Content-Type\": context.headers[\"Content-Type\"] || \"application/xml; charset=utf-8\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseText = await response.text();\n    const responseData = await parseXML(responseText, context.parsing);\n    const results = parseSearch(responseData, searchArbiter, isDetailed);\n    return processResponsePayload(response, results, isDetailed);\n}\n","import { parseStat, parseXML } from \"../tools/dav.js\";\nimport { joinURL } from \"../tools/url.js\";\nimport { encodePath } from \"../tools/path.js\";\nimport { request, prepareRequestOptions } from \"../request.js\";\nimport { handleResponseCode, processResponsePayload } from \"../response.js\";\nexport async function getStat(context, filename, options = {}) {\n    const { details: isDetailed = false } = options;\n    const requestOptions = prepareRequestOptions({\n        url: joinURL(context.remoteURL, encodePath(filename)),\n        method: \"PROPFIND\",\n        headers: {\n            Accept: \"text/plain,application/xml\",\n            Depth: \"0\"\n        }\n    }, context, options);\n    const response = await request(requestOptions, context);\n    handleResponseCode(context, response);\n    const responseData = await response.text();\n    const result = await parseXML(responseData, context.parsing);\n    const stat = parseStat(result, filename, isDetailed);\n    return processResponsePayload(response, stat, isDetailed);\n}\n","import { Agent as HTTPAgent } from \"http\";\nimport { Agent as HTTPSAgent } from \"https\";\nimport { fetch } from \"@buttercup/fetch\";\nimport { getPatcher } from \"./compat/patcher.js\";\nimport { isReactNative, isWeb } from \"./compat/env.js\";\nimport { generateDigestAuthHeader, parseDigestAuth, responseIndicatesDigestAuth } from \"./auth/digest.js\";\nimport { cloneShallow, merge } from \"./tools/merge.js\";\nimport { mergeHeaders } from \"./tools/headers.js\";\nimport { requestDataToFetchBody } from \"./tools/body.js\";\nimport { AuthType } from \"./types.js\";\nimport { setupAuth } from \"./auth/index.js\";\nfunction getFetchOptions(requestOptions) {\n    let headers = {};\n    // Handle standard options\n    const opts = {\n        method: requestOptions.method\n    };\n    if (requestOptions.headers) {\n        headers = mergeHeaders(headers, requestOptions.headers);\n    }\n    if (typeof requestOptions.data !== \"undefined\") {\n        const [body, newHeaders] = requestDataToFetchBody(requestOptions.data);\n        opts.body = body;\n        headers = mergeHeaders(headers, newHeaders);\n    }\n    if (requestOptions.signal) {\n        opts.signal = requestOptions.signal;\n    }\n    if (requestOptions.withCredentials) {\n        opts.credentials = \"include\";\n    }\n    // Check for node-specific options\n    if (!isWeb() && !isReactNative()) {\n        if (requestOptions.httpAgent || requestOptions.httpsAgent) {\n            opts.agent = (parsedURL) => {\n                if (parsedURL.protocol === \"http:\") {\n                    return requestOptions.httpAgent || new HTTPAgent();\n                }\n                return requestOptions.httpsAgent || new HTTPSAgent();\n            };\n        }\n    }\n    // Attach headers\n    opts.headers = headers;\n    return opts;\n}\nexport function prepareRequestOptions(requestOptions, context, userOptions) {\n    const finalOptions = cloneShallow(requestOptions);\n    finalOptions.headers = mergeHeaders(context.headers, finalOptions.headers || {}, userOptions.headers || {});\n    if (typeof userOptions.data !== \"undefined\") {\n        finalOptions.data = userOptions.data;\n    }\n    if (userOptions.signal) {\n        finalOptions.signal = userOptions.signal;\n    }\n    if (context.httpAgent) {\n        finalOptions.httpAgent = context.httpAgent;\n    }\n    if (context.httpsAgent) {\n        finalOptions.httpsAgent = context.httpsAgent;\n    }\n    if (context.digest) {\n        finalOptions._digest = context.digest;\n    }\n    if (typeof context.withCredentials === \"boolean\") {\n        finalOptions.withCredentials = context.withCredentials;\n    }\n    return finalOptions;\n}\nexport async function request(requestOptions, context) {\n    if (context.authType === AuthType.Auto) {\n        return requestAuto(requestOptions, context);\n    }\n    if (requestOptions._digest) {\n        return requestDigest(requestOptions);\n    }\n    return requestStandard(requestOptions);\n}\nasync function requestAuto(requestOptions, context) {\n    const response = await requestStandard(requestOptions);\n    if (response.ok) {\n        context.authType = AuthType.Password;\n        return response;\n    }\n    if (response.status == 401 && responseIndicatesDigestAuth(response)) {\n        context.authType = AuthType.Digest;\n        setupAuth(context, context.username, context.password, undefined, undefined);\n        requestOptions._digest = context.digest;\n        return requestDigest(requestOptions);\n    }\n    return response;\n}\nasync function requestDigest(requestOptions) {\n    // Remove client's digest authentication object from request options\n    const _digest = requestOptions._digest;\n    delete requestOptions._digest;\n    // If client is already using digest authentication, include the digest authorization header\n    if (_digest.hasDigestAuth) {\n        requestOptions = merge(requestOptions, {\n            headers: {\n                Authorization: generateDigestAuthHeader(requestOptions, _digest)\n            }\n        });\n    }\n    // Perform digest request + check\n    const response = await requestStandard(requestOptions);\n    if (response.status == 401) {\n        _digest.hasDigestAuth = parseDigestAuth(response, _digest);\n        if (_digest.hasDigestAuth) {\n            requestOptions = merge(requestOptions, {\n                headers: {\n                    Authorization: generateDigestAuthHeader(requestOptions, _digest)\n                }\n            });\n            const response2 = await requestStandard(requestOptions);\n            if (response2.status == 401) {\n                _digest.hasDigestAuth = false;\n            }\n            else {\n                _digest.nc++;\n            }\n            return response2;\n        }\n    }\n    else {\n        _digest.nc++;\n    }\n    return response;\n}\nfunction requestStandard(requestOptions) {\n    const patcher = getPatcher();\n    return patcher.patchInline(\"request\", (options) => patcher.patchInline(\"fetch\", fetch, options.url, getFetchOptions(options)), requestOptions);\n}\n","import { minimatch } from \"minimatch\";\nimport { convertResponseHeaders } from \"./tools/headers.js\";\nexport function createErrorFromResponse(response, prefix = \"\") {\n    const err = new Error(`${prefix}Invalid response: ${response.status} ${response.statusText}`);\n    err.status = response.status;\n    err.response = response;\n    return err;\n}\nexport function handleResponseCode(context, response) {\n    const { status } = response;\n    if (status === 401 && context.digest)\n        return response;\n    if (status >= 400) {\n        const err = createErrorFromResponse(response);\n        throw err;\n    }\n    return response;\n}\nexport function processGlobFilter(files, glob) {\n    return files.filter(file => minimatch(file.filename, glob, { matchBase: true }));\n}\n/**\n * Process a response payload (eg. from `customRequest`) and\n *  prepare it for further processing. Exposed for custom\n *  request handling.\n * @param response The response for a request\n * @param data The data returned\n * @param isDetailed Whether or not a detailed result is\n *  requested\n * @returns The response data, or a detailed response object\n *  if required\n */\nexport function processResponsePayload(response, data, isDetailed = false) {\n    return isDetailed\n        ? {\n            data,\n            headers: response.headers ? convertResponseHeaders(response.headers) : {},\n            status: response.status,\n            statusText: response.statusText\n        }\n        : data;\n}\n","import Stream from \"stream\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { isReactNative, isWeb } from \"../compat/env.js\";\nexport function requestDataToFetchBody(data) {\n    if (!isWeb() && !isReactNative() && data instanceof Stream.Readable) {\n        // @ts-ignore\n        return [data, {}];\n    }\n    if (typeof data === \"string\") {\n        return [data, {}];\n    }\n    else if (isBuffer(data)) {\n        return [data, {}];\n    }\n    else if (isArrayBuffer(data)) {\n        return [data, {}];\n    }\n    else if (data && typeof data === \"object\") {\n        return [\n            JSON.stringify(data),\n            {\n                \"content-type\": \"application/json\"\n            }\n        ];\n    }\n    throw new Error(`Unable to convert request body: Unexpected body type: ${typeof data}`);\n}\n","import md5 from \"md5\";\nexport function ha1Compute(algorithm, user, realm, pass, nonce, cnonce, ha1) {\n    const ha1Hash = ha1 || md5(`${user}:${realm}:${pass}`);\n    if (algorithm && algorithm.toLowerCase() === \"md5-sess\") {\n        return md5(`${ha1Hash}:${nonce}:${cnonce}`);\n    }\n    return ha1Hash;\n}\n","import path from \"path-posix\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport nestedProp from \"nested-property\";\nimport { encodePath, normalisePath } from \"./path.js\";\nvar PropertyType;\n(function (PropertyType) {\n    PropertyType[\"Array\"] = \"array\";\n    PropertyType[\"Object\"] = \"object\";\n    PropertyType[\"Original\"] = \"original\";\n})(PropertyType || (PropertyType = {}));\nfunction getParser({ attributeNamePrefix, attributeParsers, tagParsers }) {\n    return new XMLParser({\n        allowBooleanAttributes: true,\n        attributeNamePrefix,\n        textNodeName: \"text\",\n        ignoreAttributes: false,\n        removeNSPrefix: true,\n        numberParseOptions: {\n            hex: true,\n            leadingZeros: false\n        },\n        attributeValueProcessor(_, attrValue, jPath) {\n            for (const processor of attributeParsers) {\n                try {\n                    const value = processor(jPath, attrValue);\n                    if (value !== attrValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return attrValue;\n        },\n        tagValueProcessor(tagName, tagValue, jPath) {\n            for (const processor of tagParsers) {\n                try {\n                    const value = processor(jPath, tagValue);\n                    if (value !== tagValue) {\n                        return value;\n                    }\n                }\n                catch (error) {\n                    // skipping this invalid parser\n                }\n            }\n            return tagValue;\n        }\n    });\n}\n/**\n * Tag parser for the displayname prop.\n * Ensure that the displayname is not parsed and always handled as is.\n * @param path The jPath of the tag\n * @param value The text value of the tag\n */\nexport function displaynameTagParser(path, value) {\n    if (path.endsWith(\"propstat.prop.displayname\")) {\n        // Do not parse the displayname, because this causes e.g. '2024.10' to result in number 2024.1\n        return;\n    }\n    return value;\n}\nfunction getPropertyOfType(obj, prop, type = PropertyType.Original) {\n    const val = nestedProp.get(obj, prop);\n    if (type === \"array\" && Array.isArray(val) === false) {\n        return [val];\n    }\n    else if (type === \"object\" && Array.isArray(val)) {\n        return val[0];\n    }\n    return val;\n}\nfunction normaliseResponse(response) {\n    const output = Object.assign({}, response);\n    // Only either status OR propstat is allowed\n    if (output.status) {\n        nestedProp.set(output, \"status\", getPropertyOfType(output, \"status\", PropertyType.Object));\n    }\n    else {\n        nestedProp.set(output, \"propstat\", getPropertyOfType(output, \"propstat\", PropertyType.Object));\n        nestedProp.set(output, \"propstat.prop\", getPropertyOfType(output, \"propstat.prop\", PropertyType.Object));\n    }\n    return output;\n}\nfunction normaliseResult(result) {\n    const { multistatus } = result;\n    if (multistatus === \"\") {\n        return {\n            multistatus: {\n                response: []\n            }\n        };\n    }\n    if (!multistatus) {\n        throw new Error(\"Invalid response: No root multistatus found\");\n    }\n    const output = {\n        multistatus: Array.isArray(multistatus) ? multistatus[0] : multistatus\n    };\n    nestedProp.set(output, \"multistatus.response\", getPropertyOfType(output, \"multistatus.response\", PropertyType.Array));\n    nestedProp.set(output, \"multistatus.response\", nestedProp.get(output, \"multistatus.response\").map(response => normaliseResponse(response)));\n    return output;\n}\n/**\n * Parse an XML response from a WebDAV service,\n *  converting it to an internal DAV result\n * @param xml The raw XML string\n * @param context The current client context\n * @returns A parsed and processed DAV result\n */\nexport function parseXML(xml, context) {\n    // backwards compatibility as this method is exported from the package\n    context = context ?? {\n        attributeNamePrefix: \"@\",\n        attributeParsers: [],\n        tagParsers: [displaynameTagParser]\n    };\n    return new Promise(resolve => {\n        const result = getParser(context).parse(xml);\n        resolve(normaliseResult(result));\n    });\n}\n/**\n * Get a file stat result from given DAV properties\n * @param props DAV properties\n * @param filename The filename for the file stat\n * @param isDetailed Whether or not the raw props of the resource should be returned\n * @returns A file stat result\n */\nexport function prepareFileFromProps(props, filename, isDetailed = false) {\n    // Last modified time, raw size, item type and mime\n    const { getlastmodified: lastMod = null, getcontentlength: rawSize = \"0\", resourcetype: resourceType = null, getcontenttype: mimeType = null, getetag: etag = null } = props;\n    const type = resourceType &&\n        typeof resourceType === \"object\" &&\n        typeof resourceType.collection !== \"undefined\"\n        ? \"directory\"\n        : \"file\";\n    const stat = {\n        filename,\n        basename: path.basename(filename),\n        lastmod: lastMod,\n        size: parseInt(rawSize, 10),\n        type,\n        etag: typeof etag === \"string\" ? etag.replace(/\"/g, \"\") : null\n    };\n    if (type === \"file\") {\n        stat.mime = mimeType && typeof mimeType === \"string\" ? mimeType.split(\";\")[0] : \"\";\n    }\n    if (isDetailed) {\n        // The XML parser tries to interpret values, but the display name is required to be a string\n        if (typeof props.displayname !== \"undefined\") {\n            props.displayname = String(props.displayname);\n        }\n        stat.props = props;\n    }\n    return stat;\n}\n/**\n * Parse a DAV result for file stats\n * @param result The resulting DAV response\n * @param filename The filename that was stat'd\n * @param isDetailed Whether or not the raw props of\n *  the resource should be returned\n * @returns A file stat result\n */\nexport function parseStat(result, filename, isDetailed = false) {\n    let responseItem = null;\n    try {\n        // should be a propstat response, if not the if below will throw an error\n        if (result.multistatus.response[0].propstat) {\n            responseItem = result.multistatus.response[0];\n        }\n    }\n    catch (e) {\n        /* ignore */\n    }\n    if (!responseItem) {\n        throw new Error(\"Failed getting item stat: bad response\");\n    }\n    const { propstat: { prop: props, status: statusLine } } = responseItem;\n    // As defined in https://tools.ietf.org/html/rfc2068#section-6.1\n    const [_, statusCodeStr, statusText] = statusLine.split(\" \", 3);\n    const statusCode = parseInt(statusCodeStr, 10);\n    if (statusCode >= 400) {\n        const err = new Error(`Invalid response: ${statusCode} ${statusText}`);\n        err.status = statusCode;\n        throw err;\n    }\n    const filePath = normalisePath(filename);\n    return prepareFileFromProps(props, filePath, isDetailed);\n}\n/**\n * Parse a DAV result for a search request\n *\n * @param result The resulting DAV response\n * @param searchArbiter The collection path that was searched\n * @param isDetailed Whether or not the raw props of the resource should be returned\n */\nexport function parseSearch(result, searchArbiter, isDetailed) {\n    const response = {\n        truncated: false,\n        results: []\n    };\n    response.truncated = result.multistatus.response.some(v => {\n        return ((v.status || v.propstat?.status).split(\" \", 3)?.[1] === \"507\" &&\n            v.href.replace(/\\/$/, \"\").endsWith(encodePath(searchArbiter).replace(/\\/$/, \"\")));\n    });\n    result.multistatus.response.forEach(result => {\n        if (result.propstat === undefined) {\n            return;\n        }\n        const filename = result.href.split(\"/\").map(decodeURIComponent).join(\"/\");\n        response.results.push(prepareFileFromProps(result.propstat.prop, filename, isDetailed));\n    });\n    return response;\n}\n/**\n * Translate a disk quota indicator to a recognised\n *  value (includes \"unlimited\" and \"unknown\")\n * @param value The quota indicator, eg. \"-3\"\n * @returns The value in bytes, or another indicator\n */\nexport function translateDiskSpace(value) {\n    switch (String(value)) {\n        case \"-3\":\n            return \"unlimited\";\n        case \"-2\":\n        /* falls-through */\n        case \"-1\":\n            // -1 is non-computed\n            return \"unknown\";\n        default:\n            return parseInt(String(value), 10);\n    }\n}\n","import base64 from \"base-64\";\nimport { decodeHTML } from \"entities\";\nimport { isWeb } from \"../compat/env.js\";\nexport function decodeHTMLEntities(text) {\n    if (isWeb()) {\n        const txt = document.createElement(\"textarea\");\n        txt.innerHTML = text;\n        return txt.value;\n    }\n    return decodeHTML(text);\n}\nexport function fromBase64(text) {\n    return base64.decode(text);\n}\nexport function toBase64(text) {\n    return base64.encode(text);\n}\n","export function convertResponseHeaders(headers) {\n    const output = {};\n    for (const key of headers.keys()) {\n        output[key] = headers.get(key);\n    }\n    return output;\n}\nexport function mergeHeaders(...headerPayloads) {\n    if (headerPayloads.length === 0)\n        return {};\n    const headerKeys = {};\n    return headerPayloads.reduce((output, headers) => {\n        Object.keys(headers).forEach(header => {\n            const lowerHeader = header.toLowerCase();\n            if (headerKeys.hasOwnProperty(lowerHeader)) {\n                output[headerKeys[lowerHeader]] = headers[header];\n            }\n            else {\n                headerKeys[lowerHeader] = header;\n                output[header] = headers[header];\n            }\n        });\n        return output;\n    }, {});\n}\n","export function cloneShallow(obj) {\n    return isPlainObject(obj)\n        ? Object.assign({}, obj)\n        : Object.setPrototypeOf(Object.assign({}, obj), Object.getPrototypeOf(obj));\n}\nfunction isPlainObject(obj) {\n    if (typeof obj !== \"object\" ||\n        obj === null ||\n        Object.prototype.toString.call(obj) != \"[object Object]\") {\n        // Not an object\n        return false;\n    }\n    if (Object.getPrototypeOf(obj) === null) {\n        return true;\n    }\n    let proto = obj;\n    // Find the prototype\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(obj) === proto;\n}\nexport function merge(...args) {\n    let output = null, items = [...args];\n    while (items.length > 0) {\n        const nextItem = items.shift();\n        if (!output) {\n            output = cloneShallow(nextItem);\n        }\n        else {\n            output = mergeObjects(output, nextItem);\n        }\n    }\n    return output;\n}\nfunction mergeObjects(obj1, obj2) {\n    const output = cloneShallow(obj1);\n    Object.keys(obj2).forEach(key => {\n        if (!output.hasOwnProperty(key)) {\n            output[key] = obj2[key];\n            return;\n        }\n        if (Array.isArray(obj2[key])) {\n            output[key] = Array.isArray(output[key])\n                ? [...output[key], ...obj2[key]]\n                : [...obj2[key]];\n        }\n        else if (typeof obj2[key] === \"object\" && !!obj2[key]) {\n            output[key] =\n                typeof output[key] === \"object\" && !!output[key]\n                    ? mergeObjects(output[key], obj2[key])\n                    : cloneShallow(obj2[key]);\n        }\n        else {\n            output[key] = obj2[key];\n        }\n    });\n    return output;\n}\n","import { Layerr } from \"layerr\";\nimport path from \"path-posix\";\nconst SEP_PATH_POSIX = \"__PATH_SEPARATOR_POSIX__\";\nconst SEP_PATH_WINDOWS = \"__PATH_SEPARATOR_WINDOWS__\";\nexport function encodePath(filePath) {\n    try {\n        const replaced = filePath.replace(/\\//g, SEP_PATH_POSIX).replace(/\\\\\\\\/g, SEP_PATH_WINDOWS);\n        const formatted = encodeURIComponent(replaced);\n        return formatted.split(SEP_PATH_WINDOWS).join(\"\\\\\\\\\").split(SEP_PATH_POSIX).join(\"/\");\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed encoding path\");\n    }\n}\nexport function getAllDirectories(directory) {\n    if (!directory || directory === \"/\")\n        return [];\n    let currentPath = directory;\n    const output = [];\n    do {\n        output.push(currentPath);\n        currentPath = path.dirname(currentPath);\n    } while (currentPath && currentPath !== \"/\");\n    return output;\n}\nexport function makePathAbsolute(pathStr) {\n    return pathStr.startsWith(\"/\") ? pathStr : \"/\" + pathStr;\n}\nexport function normalisePath(pathStr) {\n    let normalisedPath = pathStr;\n    if (normalisedPath[0] !== \"/\") {\n        normalisedPath = \"/\" + normalisedPath;\n    }\n    if (/^.+\\/$/.test(normalisedPath)) {\n        normalisedPath = normalisedPath.substr(0, normalisedPath.length - 1);\n    }\n    return normalisedPath;\n}\n","import { translateDiskSpace } from \"./dav.js\";\nexport function parseQuota(result) {\n    try {\n        const [responseItem] = result.multistatus.response;\n        const { propstat: { prop: { \"quota-used-bytes\": quotaUsed, \"quota-available-bytes\": quotaAvail } } } = responseItem;\n        return typeof quotaUsed !== \"undefined\" && typeof quotaAvail !== \"undefined\"\n            ? {\n                // As it could be both a string or a number ensure we are working with a number\n                used: parseInt(String(quotaUsed), 10),\n                available: translateDiskSpace(quotaAvail)\n            }\n            : null;\n    }\n    catch (err) {\n        /* ignore */\n    }\n    return null;\n}\n","import { Layerr } from \"layerr\";\nimport { byteLength } from \"byte-length\";\nimport { isArrayBuffer } from \"../compat/arrayBuffer.js\";\nimport { isBuffer } from \"../compat/buffer.js\";\nimport { ErrorCode } from \"../types.js\";\nexport function calculateDataLength(data) {\n    if (isArrayBuffer(data)) {\n        return data.byteLength;\n    }\n    else if (isBuffer(data)) {\n        return data.length;\n    }\n    else if (typeof data === \"string\") {\n        return byteLength(data);\n    }\n    throw new Layerr({\n        info: {\n            code: ErrorCode.DataTypeNoLength\n        }\n    }, \"Cannot calculate data length: Invalid type\");\n}\n","import URL from \"url-parse\";\nimport { Layerr } from \"layerr\";\nimport _joinURL from \"url-join\";\nimport { normalisePath } from \"./path.js\";\nexport function extractURLPath(fullURL) {\n    const url = new URL(fullURL);\n    let urlPath = url.pathname;\n    if (urlPath.length <= 0) {\n        urlPath = \"/\";\n    }\n    return normalisePath(urlPath);\n}\nexport function joinURL(...parts) {\n    return _joinURL(parts.reduce((output, nextPart, partIndex) => {\n        if (partIndex === 0 ||\n            nextPart !== \"/\" ||\n            (nextPart === \"/\" && output[output.length - 1] !== \"/\")) {\n            output.push(nextPart);\n        }\n        return output;\n    }, []));\n}\nexport function normaliseHREF(href) {\n    try {\n        const normalisedHref = href.replace(/^https?:\\/\\/[^\\/]+/, \"\");\n        return normalisedHref;\n    }\n    catch (err) {\n        throw new Layerr(err, \"Failed normalising HREF\");\n    }\n}\n","import { XMLParser, XMLBuilder } from \"fast-xml-parser\";\nexport function generateLockXML(ownerHREF) {\n    return getBuilder().build(namespace({\n        lockinfo: {\n            \"@_xmlns:d\": \"DAV:\",\n            lockscope: {\n                exclusive: {}\n            },\n            locktype: {\n                write: {}\n            },\n            owner: {\n                href: ownerHREF\n            }\n        }\n    }, \"d\"));\n}\nfunction getBuilder() {\n    return new XMLBuilder({\n        attributeNamePrefix: \"@_\",\n        format: true,\n        ignoreAttributes: false,\n        suppressEmptyNode: true\n    });\n}\nfunction getParser() {\n    return new XMLParser({\n        removeNSPrefix: true,\n        parseAttributeValue: true,\n        parseTagValue: true\n    });\n}\nfunction namespace(obj, ns) {\n    const copy = { ...obj };\n    for (const key in copy) {\n        if (!copy.hasOwnProperty(key)) {\n            continue;\n        }\n        if (copy[key] && typeof copy[key] === \"object\" && key.indexOf(\":\") === -1) {\n            copy[`${ns}:${key}`] = namespace(copy[key], ns);\n            delete copy[key];\n        }\n        else if (/^@_/.test(key) === false) {\n            copy[`${ns}:${key}`] = copy[key];\n            delete copy[key];\n        }\n    }\n    return copy;\n}\nexport function parseGenericResponse(xml) {\n    return getParser().parse(xml);\n}\n","export { Request, Response } from \"@buttercup/fetch\";\nexport var AuthType;\n(function (AuthType) {\n    AuthType[\"Auto\"] = \"auto\";\n    AuthType[\"Digest\"] = \"digest\";\n    AuthType[\"None\"] = \"none\";\n    AuthType[\"Password\"] = \"password\";\n    AuthType[\"Token\"] = \"token\";\n})(AuthType || (AuthType = {}));\nexport var ErrorCode;\n(function (ErrorCode) {\n    ErrorCode[\"DataTypeNoLength\"] = \"data-type-no-length\";\n    ErrorCode[\"InvalidAuthType\"] = \"invalid-auth-type\";\n    ErrorCode[\"InvalidOutputFormat\"] = \"invalid-output-format\";\n    ErrorCode[\"LinkUnsupportedAuthType\"] = \"link-unsupported-auth\";\n    ErrorCode[\"InvalidUpdateRange\"] = \"invalid-update-range\";\n    ErrorCode[\"NotSupported\"] = \"not-supported\";\n})(ErrorCode || (ErrorCode = {}));\n","// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134\nvar _a;\nconst decodeMap = new Map([\n    [0, 65533],\n    // C1 Unicode control character reference replacements\n    [128, 8364],\n    [130, 8218],\n    [131, 402],\n    [132, 8222],\n    [133, 8230],\n    [134, 8224],\n    [135, 8225],\n    [136, 710],\n    [137, 8240],\n    [138, 352],\n    [139, 8249],\n    [140, 338],\n    [142, 381],\n    [145, 8216],\n    [146, 8217],\n    [147, 8220],\n    [148, 8221],\n    [149, 8226],\n    [150, 8211],\n    [151, 8212],\n    [152, 732],\n    [153, 8482],\n    [154, 353],\n    [155, 8250],\n    [156, 339],\n    [158, 382],\n    [159, 376],\n]);\n/**\n * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point.\n */\nexport const fromCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins\n(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) {\n    let output = \"\";\n    if (codePoint > 65535) {\n        codePoint -= 65536;\n        output += String.fromCharCode(((codePoint >>> 10) & 1023) | 55296);\n        codePoint = 56320 | (codePoint & 1023);\n    }\n    output += String.fromCharCode(codePoint);\n    return output;\n};\n/**\n * Replace the given code point with a replacement character if it is a\n * surrogate or is outside the valid range. Otherwise return the code\n * point unchanged.\n */\nexport function replaceCodePoint(codePoint) {\n    var _a;\n    if ((codePoint >= 55296 && codePoint <= 57343) ||\n        codePoint > 1114111) {\n        return 65533;\n    }\n    return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint;\n}\n/**\n * Replace the code point if relevant, then convert it to a string.\n *\n * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead.\n * @param codePoint The code point to decode.\n * @returns The decoded code point.\n */\nexport function decodeCodePoint(codePoint) {\n    return fromCodePoint(replaceCodePoint(codePoint));\n}\n//# sourceMappingURL=decode-codepoint.js.map","import { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nimport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nimport { replaceCodePoint, fromCodePoint } from \"./decode-codepoint.js\";\nvar CharCodes;\n(function (CharCodes) {\n    CharCodes[CharCodes[\"NUM\"] = 35] = \"NUM\";\n    CharCodes[CharCodes[\"SEMI\"] = 59] = \"SEMI\";\n    CharCodes[CharCodes[\"EQUALS\"] = 61] = \"EQUALS\";\n    CharCodes[CharCodes[\"ZERO\"] = 48] = \"ZERO\";\n    CharCodes[CharCodes[\"NINE\"] = 57] = \"NINE\";\n    CharCodes[CharCodes[\"LOWER_A\"] = 97] = \"LOWER_A\";\n    CharCodes[CharCodes[\"LOWER_F\"] = 102] = \"LOWER_F\";\n    CharCodes[CharCodes[\"LOWER_X\"] = 120] = \"LOWER_X\";\n    CharCodes[CharCodes[\"LOWER_Z\"] = 122] = \"LOWER_Z\";\n    CharCodes[CharCodes[\"UPPER_A\"] = 65] = \"UPPER_A\";\n    CharCodes[CharCodes[\"UPPER_F\"] = 70] = \"UPPER_F\";\n    CharCodes[CharCodes[\"UPPER_Z\"] = 90] = \"UPPER_Z\";\n})(CharCodes || (CharCodes = {}));\n/** Bit that needs to be set to convert an upper case ASCII character to lower case */\nconst TO_LOWER_BIT = 32;\nexport var BinTrieFlags;\n(function (BinTrieFlags) {\n    BinTrieFlags[BinTrieFlags[\"VALUE_LENGTH\"] = 49152] = \"VALUE_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"BRANCH_LENGTH\"] = 16256] = \"BRANCH_LENGTH\";\n    BinTrieFlags[BinTrieFlags[\"JUMP_TABLE\"] = 127] = \"JUMP_TABLE\";\n})(BinTrieFlags || (BinTrieFlags = {}));\nfunction isNumber(code) {\n    return code >= CharCodes.ZERO && code <= CharCodes.NINE;\n}\nfunction isHexadecimalCharacter(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F));\n}\nfunction isAsciiAlphaNumeric(code) {\n    return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) ||\n        (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) ||\n        isNumber(code));\n}\n/**\n * Checks if the given character is a valid end character for an entity in an attribute.\n *\n * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n */\nfunction isEntityInAttributeInvalidEnd(code) {\n    return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code);\n}\nvar EntityDecoderState;\n(function (EntityDecoderState) {\n    EntityDecoderState[EntityDecoderState[\"EntityStart\"] = 0] = \"EntityStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericStart\"] = 1] = \"NumericStart\";\n    EntityDecoderState[EntityDecoderState[\"NumericDecimal\"] = 2] = \"NumericDecimal\";\n    EntityDecoderState[EntityDecoderState[\"NumericHex\"] = 3] = \"NumericHex\";\n    EntityDecoderState[EntityDecoderState[\"NamedEntity\"] = 4] = \"NamedEntity\";\n})(EntityDecoderState || (EntityDecoderState = {}));\nexport var DecodingMode;\n(function (DecodingMode) {\n    /** Entities in text nodes that can end with any character. */\n    DecodingMode[DecodingMode[\"Legacy\"] = 0] = \"Legacy\";\n    /** Only allow entities terminated with a semicolon. */\n    DecodingMode[DecodingMode[\"Strict\"] = 1] = \"Strict\";\n    /** Entities in attributes have limitations on ending characters. */\n    DecodingMode[DecodingMode[\"Attribute\"] = 2] = \"Attribute\";\n})(DecodingMode || (DecodingMode = {}));\n/**\n * Token decoder with support of writing partial entities.\n */\nexport class EntityDecoder {\n    constructor(\n    /** The tree used to decode entities. */\n    decodeTree, \n    /**\n     * The function that is called when a codepoint is decoded.\n     *\n     * For multi-byte named entities, this will be called multiple times,\n     * with the second codepoint, and the same `consumed` value.\n     *\n     * @param codepoint The decoded codepoint.\n     * @param consumed The number of bytes consumed by the decoder.\n     */\n    emitCodePoint, \n    /** An object that is used to produce errors. */\n    errors) {\n        this.decodeTree = decodeTree;\n        this.emitCodePoint = emitCodePoint;\n        this.errors = errors;\n        /** The current state of the decoder. */\n        this.state = EntityDecoderState.EntityStart;\n        /** Characters that were consumed while parsing an entity. */\n        this.consumed = 1;\n        /**\n         * The result of the entity.\n         *\n         * Either the result index of a numeric entity, or the codepoint of a\n         * numeric entity.\n         */\n        this.result = 0;\n        /** The current index in the decode tree. */\n        this.treeIndex = 0;\n        /** The number of characters that were consumed in excess. */\n        this.excess = 1;\n        /** The mode in which the decoder is operating. */\n        this.decodeMode = DecodingMode.Strict;\n    }\n    /** Resets the instance to make it reusable. */\n    startEntity(decodeMode) {\n        this.decodeMode = decodeMode;\n        this.state = EntityDecoderState.EntityStart;\n        this.result = 0;\n        this.treeIndex = 0;\n        this.excess = 1;\n        this.consumed = 1;\n    }\n    /**\n     * Write an entity to the decoder. This can be called multiple times with partial entities.\n     * If the entity is incomplete, the decoder will return -1.\n     *\n     * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the\n     * entity is incomplete, and resume when the next string is written.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The offset at which the entity begins. Should be 0 if this is not the first call.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    write(input, offset) {\n        switch (this.state) {\n            case EntityDecoderState.EntityStart: {\n                if (input.charCodeAt(offset) === CharCodes.NUM) {\n                    this.state = EntityDecoderState.NumericStart;\n                    this.consumed += 1;\n                    return this.stateNumericStart(input, offset + 1);\n                }\n                this.state = EntityDecoderState.NamedEntity;\n                return this.stateNamedEntity(input, offset);\n            }\n            case EntityDecoderState.NumericStart: {\n                return this.stateNumericStart(input, offset);\n            }\n            case EntityDecoderState.NumericDecimal: {\n                return this.stateNumericDecimal(input, offset);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.stateNumericHex(input, offset);\n            }\n            case EntityDecoderState.NamedEntity: {\n                return this.stateNamedEntity(input, offset);\n            }\n        }\n    }\n    /**\n     * Switches between the numeric decimal and hexadecimal states.\n     *\n     * Equivalent to the `Numeric character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericStart(input, offset) {\n        if (offset >= input.length) {\n            return -1;\n        }\n        if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) {\n            this.state = EntityDecoderState.NumericHex;\n            this.consumed += 1;\n            return this.stateNumericHex(input, offset + 1);\n        }\n        this.state = EntityDecoderState.NumericDecimal;\n        return this.stateNumericDecimal(input, offset);\n    }\n    addToNumericResult(input, start, end, base) {\n        if (start !== end) {\n            const digitCount = end - start;\n            this.result =\n                this.result * Math.pow(base, digitCount) +\n                    Number.parseInt(input.substr(start, digitCount), base);\n            this.consumed += digitCount;\n        }\n    }\n    /**\n     * Parses a hexadecimal numeric entity.\n     *\n     * Equivalent to the `Hexademical character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericHex(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char) || isHexadecimalCharacter(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 16);\n                return this.emitNumericEntity(char, 3);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 16);\n        return -1;\n    }\n    /**\n     * Parses a decimal numeric entity.\n     *\n     * Equivalent to the `Decimal character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNumericDecimal(input, offset) {\n        const startIndex = offset;\n        while (offset < input.length) {\n            const char = input.charCodeAt(offset);\n            if (isNumber(char)) {\n                offset += 1;\n            }\n            else {\n                this.addToNumericResult(input, startIndex, offset, 10);\n                return this.emitNumericEntity(char, 2);\n            }\n        }\n        this.addToNumericResult(input, startIndex, offset, 10);\n        return -1;\n    }\n    /**\n     * Validate and emit a numeric entity.\n     *\n     * Implements the logic from the `Hexademical character reference start\n     * state` and `Numeric character reference end state` in the HTML spec.\n     *\n     * @param lastCp The last code point of the entity. Used to see if the\n     *               entity was terminated with a semicolon.\n     * @param expectedLength The minimum number of characters that should be\n     *                       consumed. Used to validate that at least one digit\n     *                       was consumed.\n     * @returns The number of characters that were consumed.\n     */\n    emitNumericEntity(lastCp, expectedLength) {\n        var _a;\n        // Ensure we consumed at least one digit.\n        if (this.consumed <= expectedLength) {\n            (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n            return 0;\n        }\n        // Figure out if this is a legit end of the entity\n        if (lastCp === CharCodes.SEMI) {\n            this.consumed += 1;\n        }\n        else if (this.decodeMode === DecodingMode.Strict) {\n            return 0;\n        }\n        this.emitCodePoint(replaceCodePoint(this.result), this.consumed);\n        if (this.errors) {\n            if (lastCp !== CharCodes.SEMI) {\n                this.errors.missingSemicolonAfterCharacterReference();\n            }\n            this.errors.validateNumericCharacterReference(this.result);\n        }\n        return this.consumed;\n    }\n    /**\n     * Parses a named entity.\n     *\n     * Equivalent to the `Named character reference state` in the HTML spec.\n     *\n     * @param input The string containing the entity (or a continuation of the entity).\n     * @param offset The current offset.\n     * @returns The number of characters that were consumed, or -1 if the entity is incomplete.\n     */\n    stateNamedEntity(input, offset) {\n        const { decodeTree } = this;\n        let current = decodeTree[this.treeIndex];\n        // The mask is the number of bytes of the value, including the current byte.\n        let valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n        for (; offset < input.length; offset++, this.excess++) {\n            const char = input.charCodeAt(offset);\n            this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char);\n            if (this.treeIndex < 0) {\n                return this.result === 0 ||\n                    // If we are parsing an attribute\n                    (this.decodeMode === DecodingMode.Attribute &&\n                        // We shouldn't have consumed any characters after the entity,\n                        (valueLength === 0 ||\n                            // And there should be no invalid characters.\n                            isEntityInAttributeInvalidEnd(char)))\n                    ? 0\n                    : this.emitNotTerminatedNamedEntity();\n            }\n            current = decodeTree[this.treeIndex];\n            valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14;\n            // If the branch is a value, store it and continue\n            if (valueLength !== 0) {\n                // If the entity is terminated by a semicolon, we are done.\n                if (char === CharCodes.SEMI) {\n                    return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess);\n                }\n                // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it.\n                if (this.decodeMode !== DecodingMode.Strict) {\n                    this.result = this.treeIndex;\n                    this.consumed += this.excess;\n                    this.excess = 0;\n                }\n            }\n        }\n        return -1;\n    }\n    /**\n     * Emit a named entity that was not terminated with a semicolon.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNotTerminatedNamedEntity() {\n        var _a;\n        const { result, decodeTree } = this;\n        const valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14;\n        this.emitNamedEntityData(result, valueLength, this.consumed);\n        (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference();\n        return this.consumed;\n    }\n    /**\n     * Emit a named entity.\n     *\n     * @param result The index of the entity in the decode tree.\n     * @param valueLength The number of bytes in the entity.\n     * @param consumed The number of characters consumed.\n     *\n     * @returns The number of characters consumed.\n     */\n    emitNamedEntityData(result, valueLength, consumed) {\n        const { decodeTree } = this;\n        this.emitCodePoint(valueLength === 1\n            ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH\n            : decodeTree[result + 1], consumed);\n        if (valueLength === 3) {\n            // For multi-byte values, we need to emit the second byte.\n            this.emitCodePoint(decodeTree[result + 2], consumed);\n        }\n        return consumed;\n    }\n    /**\n     * Signal to the parser that the end of the input was reached.\n     *\n     * Remaining data will be emitted and relevant errors will be produced.\n     *\n     * @returns The number of characters consumed.\n     */\n    end() {\n        var _a;\n        switch (this.state) {\n            case EntityDecoderState.NamedEntity: {\n                // Emit a named entity if we have one.\n                return this.result !== 0 &&\n                    (this.decodeMode !== DecodingMode.Attribute ||\n                        this.result === this.treeIndex)\n                    ? this.emitNotTerminatedNamedEntity()\n                    : 0;\n            }\n            // Otherwise, emit a numeric entity if we have one.\n            case EntityDecoderState.NumericDecimal: {\n                return this.emitNumericEntity(0, 2);\n            }\n            case EntityDecoderState.NumericHex: {\n                return this.emitNumericEntity(0, 3);\n            }\n            case EntityDecoderState.NumericStart: {\n                (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed);\n                return 0;\n            }\n            case EntityDecoderState.EntityStart: {\n                // Return 0 if we have no entity.\n                return 0;\n            }\n        }\n    }\n}\n/**\n * Creates a function that decodes entities in a string.\n *\n * @param decodeTree The decode tree.\n * @returns A function that decodes entities in a string.\n */\nfunction getDecoder(decodeTree) {\n    let returnValue = \"\";\n    const decoder = new EntityDecoder(decodeTree, (data) => (returnValue += fromCodePoint(data)));\n    return function decodeWithTrie(input, decodeMode) {\n        let lastIndex = 0;\n        let offset = 0;\n        while ((offset = input.indexOf(\"&\", offset)) >= 0) {\n            returnValue += input.slice(lastIndex, offset);\n            decoder.startEntity(decodeMode);\n            const length = decoder.write(input, \n            // Skip the \"&\"\n            offset + 1);\n            if (length < 0) {\n                lastIndex = offset + decoder.end();\n                break;\n            }\n            lastIndex = offset + length;\n            // If `length` is 0, skip the current `&` and continue.\n            offset = length === 0 ? lastIndex + 1 : lastIndex;\n        }\n        const result = returnValue + input.slice(lastIndex);\n        // Make sure we don't keep a reference to the final string.\n        returnValue = \"\";\n        return result;\n    };\n}\n/**\n * Determines the branch of the current node that is taken given the current\n * character. This function is used to traverse the trie.\n *\n * @param decodeTree The trie.\n * @param current The current node.\n * @param nodeIdx The index right after the current node and its value.\n * @param char The current character.\n * @returns The index of the next node, or -1 if no branch is taken.\n */\nexport function determineBranch(decodeTree, current, nodeIndex, char) {\n    const branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7;\n    const jumpOffset = current & BinTrieFlags.JUMP_TABLE;\n    // Case 1: Single branch encoded in jump offset\n    if (branchCount === 0) {\n        return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1;\n    }\n    // Case 2: Multiple branches encoded in jump table\n    if (jumpOffset) {\n        const value = char - jumpOffset;\n        return value < 0 || value >= branchCount\n            ? -1\n            : decodeTree[nodeIndex + value] - 1;\n    }\n    // Case 3: Multiple branches encoded in dictionary\n    // Binary search for the character.\n    let lo = nodeIndex;\n    let hi = lo + branchCount - 1;\n    while (lo <= hi) {\n        const mid = (lo + hi) >>> 1;\n        const midValue = decodeTree[mid];\n        if (midValue < char) {\n            lo = mid + 1;\n        }\n        else if (midValue > char) {\n            hi = mid - 1;\n        }\n        else {\n            return decodeTree[mid + branchCount];\n        }\n    }\n    return -1;\n}\nconst htmlDecoder = /* #__PURE__ */ getDecoder(htmlDecodeTree);\nconst xmlDecoder = /* #__PURE__ */ getDecoder(xmlDecodeTree);\n/**\n * Decodes an HTML string.\n *\n * @param htmlString The string to decode.\n * @param mode The decoding mode.\n * @returns The decoded string.\n */\nexport function decodeHTML(htmlString, mode = DecodingMode.Legacy) {\n    return htmlDecoder(htmlString, mode);\n}\n/**\n * Decodes an HTML string in an attribute.\n *\n * @param htmlAttribute The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLAttribute(htmlAttribute) {\n    return htmlDecoder(htmlAttribute, DecodingMode.Attribute);\n}\n/**\n * Decodes an HTML string, requiring all entities to be terminated by a semicolon.\n *\n * @param htmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeHTMLStrict(htmlString) {\n    return htmlDecoder(htmlString, DecodingMode.Strict);\n}\n/**\n * Decodes an XML string, requiring all entities to be terminated by a semicolon.\n *\n * @param xmlString The string to decode.\n * @returns The decoded string.\n */\nexport function decodeXML(xmlString) {\n    return xmlDecoder(xmlString, DecodingMode.Strict);\n}\n// Re-export for use by eg. htmlparser2\nexport { htmlDecodeTree } from \"./generated/decode-data-html.js\";\nexport { xmlDecodeTree } from \"./generated/decode-data-xml.js\";\nexport { decodeCodePoint, replaceCodePoint, fromCodePoint, } from \"./decode-codepoint.js\";\n//# sourceMappingURL=decode.js.map","export const xmlReplacer = /[\"$&'<>\\u0080-\\uFFFF]/g;\nconst xmlCodeMap = new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [39, \"'\"],\n    [60, \"<\"],\n    [62, \">\"],\n]);\n// For compatibility with node < 4, we wrap `codePointAt`\nexport const getCodePoint = \n// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\nString.prototype.codePointAt == null\n    ? (c, index) => (c.charCodeAt(index) & 64512) === 55296\n        ? (c.charCodeAt(index) - 55296) * 1024 +\n            c.charCodeAt(index + 1) -\n            56320 +\n            65536\n        : c.charCodeAt(index)\n    : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n        (input, index) => input.codePointAt(index);\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using XML entities.\n *\n * If a character has no equivalent entity, a\n * numeric hexadecimal reference (eg. `ü`) will be used.\n */\nexport function encodeXML(input) {\n    let returnValue = \"\";\n    let lastIndex = 0;\n    let match;\n    while ((match = xmlReplacer.exec(input)) !== null) {\n        const { index } = match;\n        const char = input.charCodeAt(index);\n        const next = xmlCodeMap.get(char);\n        if (next === undefined) {\n            returnValue += `${input.substring(lastIndex, index)}&#x${getCodePoint(input, index).toString(16)};`;\n            // Increase by 1 if we have a surrogate pair\n            lastIndex = xmlReplacer.lastIndex += Number((char & 64512) === 55296);\n        }\n        else {\n            returnValue += input.substring(lastIndex, index) + next;\n            lastIndex = index + 1;\n        }\n    }\n    return returnValue + input.substr(lastIndex);\n}\n/**\n * Encodes all non-ASCII characters, as well as characters not valid in XML\n * documents using numeric hexadecimal reference (eg. `ü`).\n *\n * Have a look at `escapeUTF8` if you want a more concise output at the expense\n * of reduced transportability.\n *\n * @param data String to escape.\n */\nexport const escape = encodeXML;\n/**\n * Creates a function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n *\n * @param regex Regular expression to match characters to escape.\n * @param map Map of characters to escape to their entities.\n *\n * @returns Function that escapes all characters matched by the given regular\n * expression using the given map of characters to escape to their entities.\n */\nfunction getEscaper(regex, map) {\n    return function escape(data) {\n        let match;\n        let lastIndex = 0;\n        let result = \"\";\n        while ((match = regex.exec(data))) {\n            if (lastIndex !== match.index) {\n                result += data.substring(lastIndex, match.index);\n            }\n            // We know that this character will be in the map.\n            result += map.get(match[0].charCodeAt(0));\n            // Every match will be of length 1\n            lastIndex = match.index + 1;\n        }\n        return result + data.substring(lastIndex);\n    };\n}\n/**\n * Encodes all characters not valid in XML documents using XML entities.\n *\n * Note that the output will be character-set dependent.\n *\n * @param data String to escape.\n */\nexport const escapeUTF8 = /* #__PURE__ */ getEscaper(/[\"&'<>]/g, xmlCodeMap);\n/**\n * Encodes all characters that have to be escaped in HTML attributes,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeAttribute = \n/* #__PURE__ */ getEscaper(/[\"&\\u00A0]/g, new Map([\n    [34, \""\"],\n    [38, \"&\"],\n    [160, \" \"],\n]));\n/**\n * Encodes all characters that have to be escaped in HTML text,\n * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n *\n * @param data String to escape.\n */\nexport const escapeText = /* #__PURE__ */ getEscaper(/[&<>\\u00A0]/g, new Map([\n    [38, \"&\"],\n    [60, \"<\"],\n    [62, \">\"],\n    [160, \" \"],\n]));\n//# sourceMappingURL=escape.js.map","import { decodeXML, decodeHTML, DecodingMode } from \"./decode.js\";\nimport { encodeHTML, encodeNonAsciiHTML } from \"./encode.js\";\nimport { encodeXML, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\n/** The level of entities to support. */\nexport var EntityLevel;\n(function (EntityLevel) {\n    /** Support only XML entities. */\n    EntityLevel[EntityLevel[\"XML\"] = 0] = \"XML\";\n    /** Support HTML entities, which are a superset of XML entities. */\n    EntityLevel[EntityLevel[\"HTML\"] = 1] = \"HTML\";\n})(EntityLevel || (EntityLevel = {}));\nexport var EncodingMode;\n(function (EncodingMode) {\n    /**\n     * The output is UTF-8 encoded. Only characters that need escaping within\n     * XML will be escaped.\n     */\n    EncodingMode[EncodingMode[\"UTF8\"] = 0] = \"UTF8\";\n    /**\n     * The output consists only of ASCII characters. Characters that need\n     * escaping within HTML, and characters that aren't ASCII characters will\n     * be escaped.\n     */\n    EncodingMode[EncodingMode[\"ASCII\"] = 1] = \"ASCII\";\n    /**\n     * Encode all characters that have an equivalent entity, as well as all\n     * characters that are not ASCII characters.\n     */\n    EncodingMode[EncodingMode[\"Extensive\"] = 2] = \"Extensive\";\n    /**\n     * Encode all characters that have to be escaped in HTML attributes,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Attribute\"] = 3] = \"Attribute\";\n    /**\n     * Encode all characters that have to be escaped in HTML text,\n     * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}.\n     */\n    EncodingMode[EncodingMode[\"Text\"] = 4] = \"Text\";\n})(EncodingMode || (EncodingMode = {}));\n/**\n * Decodes a string with entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n */\nexport function decode(input, options = EntityLevel.XML) {\n    const level = typeof options === \"number\" ? options : options.level;\n    if (level === EntityLevel.HTML) {\n        const mode = typeof options === \"object\" ? options.mode : undefined;\n        return decodeHTML(input, mode);\n    }\n    return decodeXML(input);\n}\n/**\n * Decodes a string with entities. Does not allow missing trailing semicolons for entities.\n *\n * @param input String to decode.\n * @param options Decoding options.\n * @deprecated Use `decode` with the `mode` set to `Strict`.\n */\nexport function decodeStrict(input, options = EntityLevel.XML) {\n    var _a;\n    const normalizedOptions = typeof options === \"number\" ? { level: options } : options;\n    (_a = normalizedOptions.mode) !== null && _a !== void 0 ? _a : (normalizedOptions.mode = DecodingMode.Strict);\n    return decode(input, normalizedOptions);\n}\n/**\n * Encodes a string with entities.\n *\n * @param input String to encode.\n * @param options Encoding options.\n */\nexport function encode(input, options = EntityLevel.XML) {\n    const { mode = EncodingMode.Extensive, level = EntityLevel.XML } = typeof options === \"number\" ? { level: options } : options;\n    switch (mode) {\n        case EncodingMode.UTF8: {\n            return escapeUTF8(input);\n        }\n        case EncodingMode.Attribute: {\n            return escapeAttribute(input);\n        }\n        case EncodingMode.Text: {\n            return escapeText(input);\n        }\n        case EncodingMode.ASCII: {\n            return level === EntityLevel.HTML\n                ? encodeNonAsciiHTML(input)\n                : encodeXML(input);\n        }\n        // eslint-disable-next-line unicorn/no-useless-switch-case\n        case EncodingMode.Extensive:\n        default: {\n            return level === EntityLevel.HTML\n                ? encodeHTML(input)\n                : encodeXML(input);\n        }\n    }\n}\nexport { encodeXML, escape, escapeUTF8, escapeAttribute, escapeText, } from \"./escape.js\";\nexport { encodeHTML, encodeNonAsciiHTML, \n// Legacy aliases (deprecated)\nencodeHTML as encodeHTML4, encodeHTML as encodeHTML5, } from \"./encode.js\";\nexport { EntityDecoder, DecodingMode, decodeXML, decodeHTML, decodeHTMLStrict, decodeHTMLAttribute, \n// Legacy aliases (deprecated)\ndecodeHTML as decodeHTML4, decodeHTML as decodeHTML5, decodeHTMLStrict as decodeHTML4Strict, decodeHTMLStrict as decodeHTML5Strict, decodeXML as decodeXMLStrict, } from \"./decode.js\";\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n    if (typeof pattern !== 'string') {\n        throw new TypeError('invalid pattern');\n    }\n    if (pattern.length > MAX_PATTERN_LENGTH) {\n        throw new TypeError('pattern is too long');\n    }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\nconst adoptionMap = new Map([\n    ['!', ['@']],\n    ['?', ['?', '@']],\n    ['@', ['@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@']],\n]);\nconst adoptionWithSpaceMap = new Map([\n    ['!', ['?']],\n    ['@', ['?']],\n    ['+', ['?', '*']],\n]);\nconst adoptionAnyMap = new Map([\n    ['!', ['?', '@']],\n    ['?', ['?', '@']],\n    ['@', ['?', '@']],\n    ['*', ['*', '+', '?', '@']],\n    ['+', ['+', '@', '?', '*']],\n]);\nconst usurpMap = new Map([\n    ['!', new Map([['!', '@']])],\n    ['?', new Map([['*', '*'], ['+', '*']])],\n    ['@', new Map([['!', '!'], ['?', '?'], ['@', '@'], ['*', '*'], ['+', '+']])],\n    ['+', new Map([['?', '*'], ['*', '*']])],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nexport class AST {\n    type;\n    #root;\n    #hasMagic;\n    #uflag = false;\n    #parts = [];\n    #parent;\n    #parentIndex;\n    #negs;\n    #filledNegs = false;\n    #options;\n    #toString;\n    // set to true if it's an extglob with no children\n    // (which really means one child of '')\n    #emptyExt = false;\n    constructor(type, parent, options = {}) {\n        this.type = type;\n        // extglobs are inherently magical\n        if (type)\n            this.#hasMagic = true;\n        this.#parent = parent;\n        this.#root = this.#parent ? this.#parent.#root : this;\n        this.#options = this.#root === this ? options : this.#root.#options;\n        this.#negs = this.#root === this ? [] : this.#root.#negs;\n        if (type === '!' && !this.#root.#filledNegs)\n            this.#negs.push(this);\n        this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n    }\n    get hasMagic() {\n        /* c8 ignore start */\n        if (this.#hasMagic !== undefined)\n            return this.#hasMagic;\n        /* c8 ignore stop */\n        for (const p of this.#parts) {\n            if (typeof p === 'string')\n                continue;\n            if (p.type || p.hasMagic)\n                return (this.#hasMagic = true);\n        }\n        // note: will be undefined until we generate the regexp src and find out\n        return this.#hasMagic;\n    }\n    // reconstructs the pattern\n    toString() {\n        if (this.#toString !== undefined)\n            return this.#toString;\n        if (!this.type) {\n            return (this.#toString = this.#parts.map(p => String(p)).join(''));\n        }\n        else {\n            return (this.#toString =\n                this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');\n        }\n    }\n    #fillNegs() {\n        /* c8 ignore start */\n        if (this !== this.#root)\n            throw new Error('should only call on root');\n        if (this.#filledNegs)\n            return this;\n        /* c8 ignore stop */\n        // call toString() once to fill this out\n        this.toString();\n        this.#filledNegs = true;\n        let n;\n        while ((n = this.#negs.pop())) {\n            if (n.type !== '!')\n                continue;\n            // walk up the tree, appending everthing that comes AFTER parentIndex\n            let p = n;\n            let pp = p.#parent;\n            while (pp) {\n                for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n                    for (const part of n.#parts) {\n                        /* c8 ignore start */\n                        if (typeof part === 'string') {\n                            throw new Error('string part in extglob AST??');\n                        }\n                        /* c8 ignore stop */\n                        part.copyIn(pp.#parts[i]);\n                    }\n                }\n                p = pp;\n                pp = p.#parent;\n            }\n        }\n        return this;\n    }\n    push(...parts) {\n        for (const p of parts) {\n            if (p === '')\n                continue;\n            /* c8 ignore start */\n            if (typeof p !== 'string' && !(p instanceof _a && p.#parent === this)) {\n                throw new Error('invalid part: ' + p);\n            }\n            /* c8 ignore stop */\n            this.#parts.push(p);\n        }\n    }\n    toJSON() {\n        const ret = this.type === null\n            ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n            : [this.type, ...this.#parts.map(p => p.toJSON())];\n        if (this.isStart() && !this.type)\n            ret.unshift([]);\n        if (this.isEnd() &&\n            (this === this.#root ||\n                (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n            ret.push({});\n        }\n        return ret;\n    }\n    isStart() {\n        if (this.#root === this)\n            return true;\n        // if (this.type) return !!this.#parent?.isStart()\n        if (!this.#parent?.isStart())\n            return false;\n        if (this.#parentIndex === 0)\n            return true;\n        // if everything AHEAD of this is a negation, then it's still the \"start\"\n        const p = this.#parent;\n        for (let i = 0; i < this.#parentIndex; i++) {\n            const pp = p.#parts[i];\n            if (!(pp instanceof _a && pp.type === '!')) {\n                return false;\n            }\n        }\n        return true;\n    }\n    isEnd() {\n        if (this.#root === this)\n            return true;\n        if (this.#parent?.type === '!')\n            return true;\n        if (!this.#parent?.isEnd())\n            return false;\n        if (!this.type)\n            return this.#parent?.isEnd();\n        // if not root, it'll always have a parent\n        /* c8 ignore start */\n        const pl = this.#parent ? this.#parent.#parts.length : 0;\n        /* c8 ignore stop */\n        return this.#parentIndex === pl - 1;\n    }\n    copyIn(part) {\n        if (typeof part === 'string')\n            this.push(part);\n        else\n            this.push(part.clone(this));\n    }\n    clone(parent) {\n        const c = new _a(this.type, parent);\n        for (const p of this.#parts) {\n            c.copyIn(p);\n        }\n        return c;\n    }\n    static #parseAST(str, ast, pos, opt, extDepth) {\n        const maxDepth = opt.maxExtglobRecursion ?? 2;\n        let escaping = false;\n        let inBrace = false;\n        let braceStart = -1;\n        let braceNeg = false;\n        if (ast.type === null) {\n            // outside of a extglob, append until we find a start\n            let i = pos;\n            let acc = '';\n            while (i < str.length) {\n                const c = str.charAt(i++);\n                // still accumulate escapes at this point, but we do ignore\n                // starts that are escaped\n                if (escaping || c === '\\\\') {\n                    escaping = !escaping;\n                    acc += c;\n                    continue;\n                }\n                if (inBrace) {\n                    if (i === braceStart + 1) {\n                        if (c === '^' || c === '!') {\n                            braceNeg = true;\n                        }\n                    }\n                    else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                        inBrace = false;\n                    }\n                    acc += c;\n                    continue;\n                }\n                else if (c === '[') {\n                    inBrace = true;\n                    braceStart = i;\n                    braceNeg = false;\n                    acc += c;\n                    continue;\n                }\n                const doRecurse = !opt.noext &&\n                    isExtglobType(c) &&\n                    str.charAt(i) === '(' &&\n                    extDepth <= maxDepth;\n                if (doRecurse) {\n                    ast.push(acc);\n                    acc = '';\n                    const ext = new _a(c, ast);\n                    i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n                    ast.push(ext);\n                    continue;\n                }\n                acc += c;\n            }\n            ast.push(acc);\n            return i;\n        }\n        // some kind of extglob, pos is at the (\n        // find the next | or )\n        let i = pos + 1;\n        let part = new _a(null, ast);\n        const parts = [];\n        let acc = '';\n        while (i < str.length) {\n            const c = str.charAt(i++);\n            // still accumulate escapes at this point, but we do ignore\n            // starts that are escaped\n            if (escaping || c === '\\\\') {\n                escaping = !escaping;\n                acc += c;\n                continue;\n            }\n            if (inBrace) {\n                if (i === braceStart + 1) {\n                    if (c === '^' || c === '!') {\n                        braceNeg = true;\n                    }\n                }\n                else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n                    inBrace = false;\n                }\n                acc += c;\n                continue;\n            }\n            else if (c === '[') {\n                inBrace = true;\n                braceStart = i;\n                braceNeg = false;\n                acc += c;\n                continue;\n            }\n            const doRecurse = isExtglobType(c) &&\n                str.charAt(i) === '(' &&\n                /* c8 ignore start - the maxDepth is sufficient here */\n                (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n            /* c8 ignore stop */\n            if (doRecurse) {\n                const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n                part.push(acc);\n                acc = '';\n                const ext = new _a(c, part);\n                part.push(ext);\n                i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n                continue;\n            }\n            if (c === '|') {\n                part.push(acc);\n                acc = '';\n                parts.push(part);\n                part = new _a(null, ast);\n                continue;\n            }\n            if (c === ')') {\n                if (acc === '' && ast.#parts.length === 0) {\n                    ast.#emptyExt = true;\n                }\n                part.push(acc);\n                acc = '';\n                ast.push(...parts, part);\n                return i;\n            }\n            acc += c;\n        }\n        // unfinished extglob\n        // if we got here, it was a malformed extglob! not an extglob, but\n        // maybe something else in there.\n        ast.type = null;\n        ast.#hasMagic = undefined;\n        ast.#parts = [str.substring(pos - 1)];\n        return i;\n    }\n    #canAdoptWithSpace(child) {\n        return this.#canAdopt(child, adoptionWithSpaceMap);\n    }\n    #canAdopt(child, map = adoptionMap) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canAdoptType(gc.type, map);\n    }\n    #canAdoptType(c, map = adoptionAnyMap) {\n        return !!map.get(this.type)?.includes(c);\n    }\n    #adoptWithSpace(child, index) {\n        const gc = child.#parts[0];\n        const blank = new _a(null, gc, this.options);\n        blank.#parts.push('');\n        gc.push(blank);\n        this.#adopt(child, index);\n    }\n    #adopt(child, index) {\n        const gc = child.#parts[0];\n        this.#parts.splice(index, 1, ...gc.#parts);\n        for (const p of gc.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.#toString = undefined;\n    }\n    #canUsurpType(c) {\n        const m = usurpMap.get(this.type);\n        return !!(m?.has(c));\n    }\n    #canUsurp(child) {\n        if (!child ||\n            typeof child !== 'object' ||\n            child.type !== null ||\n            child.#parts.length !== 1 ||\n            this.type === null ||\n            this.#parts.length !== 1) {\n            return false;\n        }\n        const gc = child.#parts[0];\n        if (!gc || typeof gc !== 'object' || gc.type === null) {\n            return false;\n        }\n        return this.#canUsurpType(gc.type);\n    }\n    #usurp(child) {\n        const m = usurpMap.get(this.type);\n        const gc = child.#parts[0];\n        const nt = m?.get(gc.type);\n        /* c8 ignore start - impossible */\n        if (!nt)\n            return false;\n        /* c8 ignore stop */\n        this.#parts = gc.#parts;\n        for (const p of this.#parts) {\n            if (typeof p === 'object')\n                p.#parent = this;\n        }\n        this.type = nt;\n        this.#toString = undefined;\n        this.#emptyExt = false;\n    }\n    #flatten() {\n        if (!isExtglobAST(this)) {\n            for (const p of this.#parts) {\n                if (typeof p === 'object')\n                    p.#flatten();\n            }\n        }\n        else {\n            let iterations = 0;\n            let done = false;\n            do {\n                done = true;\n                for (let i = 0; i < this.#parts.length; i++) {\n                    const c = this.#parts[i];\n                    if (typeof c === 'object') {\n                        c.#flatten();\n                        if (this.#canAdopt(c)) {\n                            done = false;\n                            this.#adopt(c, i);\n                        }\n                        else if (this.#canAdoptWithSpace(c)) {\n                            done = false;\n                            this.#adoptWithSpace(c, i);\n                        }\n                        else if (this.#canUsurp(c)) {\n                            done = false;\n                            this.#usurp(c);\n                        }\n                    }\n                }\n            } while (!done && ++iterations < 10);\n        }\n        this.#toString = undefined;\n    }\n    static fromGlob(pattern, options = {}) {\n        const ast = new _a(null, undefined, options);\n        _a.#parseAST(pattern, ast, 0, options, 0);\n        return ast;\n    }\n    // returns the regular expression if there's magic, or the unescaped\n    // string if not.\n    toMMPattern() {\n        // should only be called on root\n        /* c8 ignore start */\n        if (this !== this.#root)\n            return this.#root.toMMPattern();\n        /* c8 ignore stop */\n        const glob = this.toString();\n        const [re, body, hasMagic, uflag] = this.toRegExpSource();\n        // if we're in nocase mode, and not nocaseMagicOnly, then we do\n        // still need a regular expression if we have to case-insensitively\n        // match capital/lowercase characters.\n        const anyMagic = hasMagic ||\n            this.#hasMagic ||\n            (this.#options.nocase &&\n                !this.#options.nocaseMagicOnly &&\n                glob.toUpperCase() !== glob.toLowerCase());\n        if (!anyMagic) {\n            return body;\n        }\n        const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n        return Object.assign(new RegExp(`^${re}$`, flags), {\n            _src: re,\n            _glob: glob,\n        });\n    }\n    get options() {\n        return this.#options;\n    }\n    // returns the string match, the regexp source, whether there's magic\n    // in the regexp (so a regular expression is required) and whether or\n    // not the uflag is needed for the regular expression (for posix classes)\n    // TODO: instead of injecting the start/end at this point, just return\n    // the BODY of the regexp, along with the start/end portions suitable\n    // for binding the start/end in either a joined full-path makeRe context\n    // (where we bind to (^|/), or a standalone matchPart context (where\n    // we bind to ^, and not /).  Otherwise slashes get duped!\n    //\n    // In part-matching mode, the start is:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n    // - if dots allowed or not possible: ^\n    // - if dots possible and not allowed: ^(?!\\.)\n    // end is:\n    // - if not isEnd(): nothing\n    // - else: $\n    //\n    // In full-path matching mode, we put the slash at the START of the\n    // pattern, so start is:\n    // - if first pattern: same as part-matching mode\n    // - if not isStart(): nothing\n    // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n    // - if dots allowed or not possible: /\n    // - if dots possible and not allowed: /(?!\\.)\n    // end is:\n    // - if last pattern, same as part-matching mode\n    // - else nothing\n    //\n    // Always put the (?:$|/) on negated tails, though, because that has to be\n    // there to bind the end of the negated pattern portion, and it's easier to\n    // just stick it in now rather than try to inject it later in the middle of\n    // the pattern.\n    //\n    // We can just always return the same end, and leave it up to the caller\n    // to know whether it's going to be used joined or in parts.\n    // And, if the start is adjusted slightly, can do the same there:\n    // - if not isStart: nothing\n    // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n    // - if dots allowed or not possible: (?:/|^)\n    // - if dots possible and not allowed: (?:/|^)(?!\\.)\n    //\n    // But it's better to have a simpler binding without a conditional, for\n    // performance, so probably better to return both start options.\n    //\n    // Then the caller just ignores the end if it's not the first pattern,\n    // and the start always gets applied.\n    //\n    // But that's always going to be $ if it's the ending pattern, or nothing,\n    // so the caller can just attach $ at the end of the pattern when building.\n    //\n    // So the todo is:\n    // - better detect what kind of start is needed\n    // - return both flavors of starting pattern\n    // - attach $ at the end of the pattern when creating the actual RegExp\n    //\n    // Ah, but wait, no, that all only applies to the root when the first pattern\n    // is not an extglob. If the first pattern IS an extglob, then we need all\n    // that dot prevention biz to live in the extglob portions, because eg\n    // +(*|.x*) can match .xy but not .yx.\n    //\n    // So, return the two flavors if it's #root and the first child is not an\n    // AST, otherwise leave it to the child AST to handle it, and there,\n    // use the (?:^|/) style of start binding.\n    //\n    // Even simplified further:\n    // - Since the start for a join is eg /(?!\\.) and the start for a part\n    // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n    // or start or whatever) and prepend ^ or / at the Regexp construction.\n    toRegExpSource(allowDot) {\n        const dot = allowDot ?? !!this.#options.dot;\n        if (this.#root === this) {\n            this.#flatten();\n            this.#fillNegs();\n        }\n        if (!isExtglobAST(this)) {\n            const noEmpty = this.isStart() && this.isEnd();\n            const src = this.#parts\n                .map(p => {\n                const [re, _, hasMagic, uflag] = typeof p === 'string'\n                    ? _a.#parseGlob(p, this.#hasMagic, noEmpty)\n                    : p.toRegExpSource(allowDot);\n                this.#hasMagic = this.#hasMagic || hasMagic;\n                this.#uflag = this.#uflag || uflag;\n                return re;\n            })\n                .join('');\n            let start = '';\n            if (this.isStart()) {\n                if (typeof this.#parts[0] === 'string') {\n                    // this is the string that will match the start of the pattern,\n                    // so we need to protect against dots and such.\n                    // '.' and '..' cannot match unless the pattern is that exactly,\n                    // even if it starts with . or dot:true is set.\n                    const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n                    if (!dotTravAllowed) {\n                        const aps = addPatternStart;\n                        // check if we have a possibility of matching . or ..,\n                        // and prevent that.\n                        const needNoTrav = \n                        // dots are allowed, and the pattern starts with [ or .\n                        (dot && aps.has(src.charAt(0))) ||\n                            // the pattern starts with \\., and then [ or .\n                            (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n                            // the pattern starts with \\.\\., and then [ or .\n                            (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n                        // no need to prevent dots if it can't match a dot, or if a\n                        // sub-pattern will be preventing it anyway.\n                        const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n                        start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';\n                    }\n                }\n            }\n            // append the \"end of path portion\" pattern to negation tails\n            let end = '';\n            if (this.isEnd() &&\n                this.#root.#filledNegs &&\n                this.#parent?.type === '!') {\n                end = '(?:$|\\\\/)';\n            }\n            const final = start + src + end;\n            return [\n                final,\n                unescape(src),\n                (this.#hasMagic = !!this.#hasMagic),\n                this.#uflag,\n            ];\n        }\n        // We need to calculate the body *twice* if it's a repeat pattern\n        // at the start, once in nodot mode, then again in dot mode, so a\n        // pattern like *(?) can match 'x.y'\n        const repeated = this.type === '*' || this.type === '+';\n        // some kind of extglob\n        const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n        let body = this.#partsToRegExp(dot);\n        if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n            // invalid extglob, has to at least be *something* present, if it's\n            // the entire path portion.\n            const s = this.toString();\n            const me = this;\n            me.#parts = [s];\n            me.type = null;\n            me.#hasMagic = undefined;\n            return [s, unescape(this.toString()), false, false];\n        }\n        // XXX abstract out this map method\n        let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot\n            ? ''\n            : this.#partsToRegExp(true);\n        if (bodyDotAllowed === body) {\n            bodyDotAllowed = '';\n        }\n        if (bodyDotAllowed) {\n            body = `(?:${body})(?:${bodyDotAllowed})*?`;\n        }\n        // an empty !() is exactly equivalent to a starNoEmpty\n        let final = '';\n        if (this.type === '!' && this.#emptyExt) {\n            final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n        }\n        else {\n            const close = this.type === '!'\n                ? // !() must match something,but !(x) can match ''\n                    '))' +\n                        (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n                        star +\n                        ')'\n                : this.type === '@'\n                    ? ')'\n                    : this.type === '?'\n                        ? ')?'\n                        : this.type === '+' && bodyDotAllowed\n                            ? ')'\n                            : this.type === '*' && bodyDotAllowed\n                                ? `)?`\n                                : `)${this.type}`;\n            final = start + body + close;\n        }\n        return [\n            final,\n            unescape(body),\n            (this.#hasMagic = !!this.#hasMagic),\n            this.#uflag,\n        ];\n    }\n    #partsToRegExp(dot) {\n        return this.#parts\n            .map(p => {\n            // extglob ASTs should only contain parent ASTs\n            /* c8 ignore start */\n            if (typeof p === 'string') {\n                throw new Error('string type in extglob ast??');\n            }\n            /* c8 ignore stop */\n            // can ignore hasMagic, because extglobs are already always magic\n            const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n            this.#uflag = this.#uflag || uflag;\n            return re;\n        })\n            .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n            .join('|');\n    }\n    static #parseGlob(glob, hasMagic, noEmpty = false) {\n        let escaping = false;\n        let re = '';\n        let uflag = false;\n        // multiple stars that aren't globstars coalesce into one *\n        let inStar = false;\n        for (let i = 0; i < glob.length; i++) {\n            const c = glob.charAt(i);\n            if (escaping) {\n                escaping = false;\n                re += (reSpecials.has(c) ? '\\\\' : '') + c;\n                inStar = false;\n                continue;\n            }\n            if (c === '\\\\') {\n                if (i === glob.length - 1) {\n                    re += '\\\\\\\\';\n                }\n                else {\n                    escaping = true;\n                }\n                continue;\n            }\n            if (c === '[') {\n                const [src, needUflag, consumed, magic] = parseClass(glob, i);\n                if (consumed) {\n                    re += src;\n                    uflag = uflag || needUflag;\n                    i += consumed - 1;\n                    hasMagic = hasMagic || magic;\n                    inStar = false;\n                    continue;\n                }\n            }\n            if (c === '*') {\n                if (inStar)\n                    continue;\n                inStar = true;\n                re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n                hasMagic = true;\n                continue;\n            }\n            else {\n                inStar = false;\n            }\n            if (c === '?') {\n                re += qmark;\n                hasMagic = true;\n                continue;\n            }\n            re += regExpEscape(c);\n        }\n        return [re, unescape(glob), !!hasMagic, uflag];\n    }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { : [, /u flag required, negated]\nconst posixClasses = {\n    '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n    '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n    '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n    '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n    '[:cntrl:]': ['\\\\p{Cc}', true],\n    '[:digit:]': ['\\\\p{Nd}', true],\n    '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n    '[:lower:]': ['\\\\p{Ll}', true],\n    '[:print:]': ['\\\\p{C}', true],\n    '[:punct:]': ['\\\\p{P}', true],\n    '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n    '[:upper:]': ['\\\\p{Lu}', true],\n    '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n    '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n    const pos = position;\n    /* c8 ignore start */\n    if (glob.charAt(pos) !== '[') {\n        throw new Error('not in a brace expression');\n    }\n    /* c8 ignore stop */\n    const ranges = [];\n    const negs = [];\n    let i = pos + 1;\n    let sawStart = false;\n    let uflag = false;\n    let escaping = false;\n    let negate = false;\n    let endPos = pos;\n    let rangeStart = '';\n    WHILE: while (i < glob.length) {\n        const c = glob.charAt(i);\n        if ((c === '!' || c === '^') && i === pos + 1) {\n            negate = true;\n            i++;\n            continue;\n        }\n        if (c === ']' && sawStart && !escaping) {\n            endPos = i + 1;\n            break;\n        }\n        sawStart = true;\n        if (c === '\\\\') {\n            if (!escaping) {\n                escaping = true;\n                i++;\n                continue;\n            }\n            // escaped \\ char, fall through and treat like normal char\n        }\n        if (c === '[' && !escaping) {\n            // either a posix class, a collation equivalent, or just a [\n            for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n                if (glob.startsWith(cls, i)) {\n                    // invalid, [a-[] is fine, but not [a-[:alpha]]\n                    if (rangeStart) {\n                        return ['$.', false, glob.length - pos, true];\n                    }\n                    i += cls.length;\n                    if (neg)\n                        negs.push(unip);\n                    else\n                        ranges.push(unip);\n                    uflag = uflag || u;\n                    continue WHILE;\n                }\n            }\n        }\n        // now it's just a normal character, effectively\n        escaping = false;\n        if (rangeStart) {\n            // throw this range away if it's not valid, but others\n            // can still match.\n            if (c > rangeStart) {\n                ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n            }\n            else if (c === rangeStart) {\n                ranges.push(braceEscape(c));\n            }\n            rangeStart = '';\n            i++;\n            continue;\n        }\n        // now might be the start of a range.\n        // can be either c-d or c-] or c] or c] at this point\n        if (glob.startsWith('-]', i + 1)) {\n            ranges.push(braceEscape(c + '-'));\n            i += 2;\n            continue;\n        }\n        if (glob.startsWith('-', i + 1)) {\n            rangeStart = c;\n            i += 2;\n            continue;\n        }\n        // not the start of a range, just a single character\n        ranges.push(braceEscape(c));\n        i++;\n    }\n    if (endPos < i) {\n        // didn't see the end of the class, not a valid class,\n        // but might still be valid as a literal match.\n        return ['', false, 0, false];\n    }\n    // if we got no ranges and no negates, then we have a range that\n    // cannot possibly match anything, and that poisons the whole glob\n    if (!ranges.length && !negs.length) {\n        return ['$.', false, glob.length - pos, true];\n    }\n    // if we got one positive range, and it's a single character, then that's\n    // not actually a magic pattern, it's just that one literal character.\n    // we should not treat that as \"magic\", we should just return the literal\n    // character. [_] is a perfectly valid way to escape glob magic chars.\n    if (negs.length === 0 &&\n        ranges.length === 1 &&\n        /^\\\\?.$/.test(ranges[0]) &&\n        !negate) {\n        const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n        return [regexpEscape(r), false, endPos - pos, false];\n    }\n    const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n    const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n    const comb = ranges.length && negs.length\n        ? '(' + sranges + '|' + snegs + ')'\n        : ranges.length\n            ? sranges\n            : snegs;\n    return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    // don't need to escape +@! because we escape the parens\n    // that make those magic, and escaping ! as [!] isn't valid,\n    // because [!]] is a valid glob class meaning not ']'.\n    return windowsPathsNoEscape\n        ? s.replace(/[?*()[\\]]/g, '[$&]')\n        : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import expand from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // shortcut: comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n        return false;\n    }\n    return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n    ext = ext.toLowerCase();\n    return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    if (!ext)\n        return noext;\n    ext = ext.toLowerCase();\n    return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExtDot([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n    const noext = qmarksTestNoExt([$0]);\n    return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n    const len = $0.length;\n    return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n        process.platform\n    : 'posix');\nconst path = {\n    win32: { sep: '\\\\' },\n    posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n    if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n        return minimatch;\n    }\n    const orig = minimatch;\n    const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n    return Object.assign(m, {\n        Minimatch: class Minimatch extends orig.Minimatch {\n            constructor(pattern, options = {}) {\n                super(pattern, ext(def, options));\n            }\n            static defaults(options) {\n                return orig.defaults(ext(def, options)).Minimatch;\n            }\n        },\n        AST: class AST extends orig.AST {\n            /* c8 ignore start */\n            constructor(type, parent, options = {}) {\n                super(type, parent, ext(def, options));\n            }\n            /* c8 ignore stop */\n            static fromGlob(pattern, options = {}) {\n                return orig.AST.fromGlob(pattern, ext(def, options));\n            }\n        },\n        unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n        escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n        filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n        defaults: (options) => orig.defaults(ext(def, options)),\n        makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n        braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n        match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n        sep: orig.sep,\n        GLOBSTAR: GLOBSTAR,\n    });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n    assertValidPattern(pattern);\n    // Thanks to Yeting Li  for\n    // improving this regexp to avoid a ReDOS vulnerability.\n    if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n        // shortcut. no need to expand.\n        return [pattern];\n    }\n    return expand(pattern);\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n    const mm = new Minimatch(pattern, options);\n    list = list.filter(f => mm.match(f));\n    if (mm.options.nonull && !list.length) {\n        list.push(pattern);\n    }\n    return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n    options;\n    set;\n    pattern;\n    windowsPathsNoEscape;\n    nonegate;\n    negate;\n    comment;\n    empty;\n    preserveMultipleSlashes;\n    partial;\n    globSet;\n    globParts;\n    nocase;\n    isWindows;\n    platform;\n    windowsNoMagicRoot;\n    maxGlobstarRecursion;\n    regexp;\n    constructor(pattern, options = {}) {\n        assertValidPattern(pattern);\n        options = options || {};\n        this.options = options;\n        this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n        this.pattern = pattern;\n        this.platform = options.platform || defaultPlatform;\n        this.isWindows = this.platform === 'win32';\n        this.windowsPathsNoEscape =\n            !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;\n        if (this.windowsPathsNoEscape) {\n            this.pattern = this.pattern.replace(/\\\\/g, '/');\n        }\n        this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n        this.regexp = null;\n        this.negate = false;\n        this.nonegate = !!options.nonegate;\n        this.comment = false;\n        this.empty = false;\n        this.partial = !!options.partial;\n        this.nocase = !!this.options.nocase;\n        this.windowsNoMagicRoot =\n            options.windowsNoMagicRoot !== undefined\n                ? options.windowsNoMagicRoot\n                : !!(this.isWindows && this.nocase);\n        this.globSet = [];\n        this.globParts = [];\n        this.set = [];\n        // make the set of regexps etc.\n        this.make();\n    }\n    hasMagic() {\n        if (this.options.magicalBraces && this.set.length > 1) {\n            return true;\n        }\n        for (const pattern of this.set) {\n            for (const part of pattern) {\n                if (typeof part !== 'string')\n                    return true;\n            }\n        }\n        return false;\n    }\n    debug(..._) { }\n    make() {\n        const pattern = this.pattern;\n        const options = this.options;\n        // empty patterns and comments match nothing.\n        if (!options.nocomment && pattern.charAt(0) === '#') {\n            this.comment = true;\n            return;\n        }\n        if (!pattern) {\n            this.empty = true;\n            return;\n        }\n        // step 1: figure out negation, etc.\n        this.parseNegate();\n        // step 2: expand braces\n        this.globSet = [...new Set(this.braceExpand())];\n        if (options.debug) {\n            this.debug = (...args) => console.error(...args);\n        }\n        this.debug(this.pattern, this.globSet);\n        // step 3: now we have a set, so turn each one into a series of\n        // path-portion matching patterns.\n        // These will be regexps, except in the case of \"**\", which is\n        // set to the GLOBSTAR object for globstar behavior,\n        // and will not contain any / characters\n        //\n        // First, we preprocess to make the glob pattern sets a bit simpler\n        // and deduped.  There are some perf-killing patterns that can cause\n        // problems with a glob walk, but we can simplify them down a bit.\n        const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n        this.globParts = this.preprocess(rawGlobParts);\n        this.debug(this.pattern, this.globParts);\n        // glob --> regexps\n        let set = this.globParts.map((s, _, __) => {\n            if (this.isWindows && this.windowsNoMagicRoot) {\n                // check if it's a drive or unc path.\n                const isUNC = s[0] === '' &&\n                    s[1] === '' &&\n                    (s[2] === '?' || !globMagic.test(s[2])) &&\n                    !globMagic.test(s[3]);\n                const isDrive = /^[a-z]:/i.test(s[0]);\n                if (isUNC) {\n                    return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];\n                }\n                else if (isDrive) {\n                    return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n                }\n            }\n            return s.map(ss => this.parse(ss));\n        });\n        this.debug(this.pattern, set);\n        // filter out everything that didn't compile properly.\n        this.set = set.filter(s => s.indexOf(false) === -1);\n        // do not treat the ? in UNC paths as magic\n        if (this.isWindows) {\n            for (let i = 0; i < this.set.length; i++) {\n                const p = this.set[i];\n                if (p[0] === '' &&\n                    p[1] === '' &&\n                    this.globParts[i][2] === '?' &&\n                    typeof p[3] === 'string' &&\n                    /^[a-z]:$/i.test(p[3])) {\n                    p[2] = '?';\n                }\n            }\n        }\n        this.debug(this.pattern, this.set);\n    }\n    // various transforms to equivalent pattern sets that are\n    // faster to process in a filesystem walk.  The goal is to\n    // eliminate what we can, and push all ** patterns as far\n    // to the right as possible, even if it increases the number\n    // of patterns that we have to process.\n    preprocess(globParts) {\n        // if we're not in globstar mode, then turn all ** into *\n        if (this.options.noglobstar) {\n            for (let i = 0; i < globParts.length; i++) {\n                for (let j = 0; j < globParts[i].length; j++) {\n                    if (globParts[i][j] === '**') {\n                        globParts[i][j] = '*';\n                    }\n                }\n            }\n        }\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            // aggressive optimization for the purpose of fs walking\n            globParts = this.firstPhasePreProcess(globParts);\n            globParts = this.secondPhasePreProcess(globParts);\n        }\n        else if (optimizationLevel >= 1) {\n            // just basic optimizations to remove some .. parts\n            globParts = this.levelOneOptimize(globParts);\n        }\n        else {\n            // just collapse multiple ** portions into one\n            globParts = this.adjascentGlobstarOptimize(globParts);\n        }\n        return globParts;\n    }\n    // just get rid of adjascent ** portions\n    adjascentGlobstarOptimize(globParts) {\n        return globParts.map(parts => {\n            let gs = -1;\n            while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n                let i = gs;\n                while (parts[i + 1] === '**') {\n                    i++;\n                }\n                if (i !== gs) {\n                    parts.splice(gs, i - gs);\n                }\n            }\n            return parts;\n        });\n    }\n    // get rid of adjascent ** and resolve .. portions\n    levelOneOptimize(globParts) {\n        return globParts.map(parts => {\n            parts = parts.reduce((set, part) => {\n                const prev = set[set.length - 1];\n                if (part === '**' && prev === '**') {\n                    return set;\n                }\n                if (part === '..') {\n                    if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n                        set.pop();\n                        return set;\n                    }\n                }\n                set.push(part);\n                return set;\n            }, []);\n            return parts.length === 0 ? [''] : parts;\n        });\n    }\n    levelTwoFileOptimize(parts) {\n        if (!Array.isArray(parts)) {\n            parts = this.slashSplit(parts);\n        }\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
// -> 
/\n            if (!this.preserveMultipleSlashes) {\n                for (let i = 1; i < parts.length - 1; i++) {\n                    const p = parts[i];\n                    // don't squeeze out UNC patterns\n                    if (i === 1 && p === '' && parts[0] === '')\n                        continue;\n                    if (p === '.' || p === '') {\n                        didSomething = true;\n                        parts.splice(i, 1);\n                        i--;\n                    }\n                }\n                if (parts[0] === '.' &&\n                    parts.length === 2 &&\n                    (parts[1] === '.' || parts[1] === '')) {\n                    didSomething = true;\n                    parts.pop();\n                }\n            }\n            // 
/

/../ ->

/\n            let dd = 0;\n            while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                const p = parts[dd - 1];\n                if (p && p !== '.' && p !== '..' && p !== '**') {\n                    didSomething = true;\n                    parts.splice(dd - 1, 2);\n                    dd -= 2;\n                }\n            }\n        } while (didSomething);\n        return parts.length === 0 ? [''] : parts;\n    }\n    // First phase: single-pattern processing\n    // 
 is 1 or more portions\n    //  is 1 or more portions\n    // 

is any portion other than ., .., '', or **\n // is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n //

/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n //

// -> 
/\n    // 
/

/../ ->

/\n    // **/**/ -> **/\n    //\n    // **/*/ -> */**/ <== not valid because ** doesn't follow\n    // this WOULD be allowed if ** did follow symlinks, or * didn't\n    firstPhasePreProcess(globParts) {\n        let didSomething = false;\n        do {\n            didSomething = false;\n            // 
/**/../

/

/ -> {

/../

/

/,

/**/

/

/}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n //

/**/**/ -> 
/**/\n                        gss++;\n                    }\n                    // eg, if gs is 2 and gss is 4, that means we have 3 **\n                    // parts, and can remove 2 of them.\n                    if (gss > gs) {\n                        parts.splice(gs + 1, gss - gs);\n                    }\n                    let next = parts[gs + 1];\n                    const p = parts[gs + 2];\n                    const p2 = parts[gs + 3];\n                    if (next !== '..')\n                        continue;\n                    if (!p ||\n                        p === '.' ||\n                        p === '..' ||\n                        !p2 ||\n                        p2 === '.' ||\n                        p2 === '..') {\n                        continue;\n                    }\n                    didSomething = true;\n                    // edit parts in place, and push the new one\n                    parts.splice(gs, 1);\n                    const other = parts.slice(0);\n                    other[gs] = '**';\n                    globParts.push(other);\n                    gs--;\n                }\n                // 
// -> 
/\n                if (!this.preserveMultipleSlashes) {\n                    for (let i = 1; i < parts.length - 1; i++) {\n                        const p = parts[i];\n                        // don't squeeze out UNC patterns\n                        if (i === 1 && p === '' && parts[0] === '')\n                            continue;\n                        if (p === '.' || p === '') {\n                            didSomething = true;\n                            parts.splice(i, 1);\n                            i--;\n                        }\n                    }\n                    if (parts[0] === '.' &&\n                        parts.length === 2 &&\n                        (parts[1] === '.' || parts[1] === '')) {\n                        didSomething = true;\n                        parts.pop();\n                    }\n                }\n                // 
/

/../ ->

/\n                let dd = 0;\n                while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n                    const p = parts[dd - 1];\n                    if (p && p !== '.' && p !== '..' && p !== '**') {\n                        didSomething = true;\n                        const needDot = dd === 1 && parts[dd + 1] === '**';\n                        const splin = needDot ? ['.'] : [];\n                        parts.splice(dd - 1, 2, ...splin);\n                        if (parts.length === 0)\n                            parts.push('');\n                        dd -= 2;\n                    }\n                }\n            }\n        } while (didSomething);\n        return globParts;\n    }\n    // second phase: multi-pattern dedupes\n    // {
/*/,
/

/} ->

/*/\n    // {
/,
/} -> 
/\n    // {
/**/,
/} -> 
/**/\n    //\n    // {
/**/,
/**/

/} ->

/**/\n    // ^-- not valid because ** doens't follow symlinks\n    secondPhasePreProcess(globParts) {\n        for (let i = 0; i < globParts.length - 1; i++) {\n            for (let j = i + 1; j < globParts.length; j++) {\n                const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n                if (matched) {\n                    globParts[i] = [];\n                    globParts[j] = matched;\n                    break;\n                }\n            }\n        }\n        return globParts.filter(gs => gs.length);\n    }\n    partsMatch(a, b, emptyGSMatch = false) {\n        let ai = 0;\n        let bi = 0;\n        let result = [];\n        let which = '';\n        while (ai < a.length && bi < b.length) {\n            if (a[ai] === b[bi]) {\n                result.push(which === 'b' ? b[bi] : a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n                result.push(a[ai]);\n                ai++;\n            }\n            else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n                result.push(b[bi]);\n                bi++;\n            }\n            else if (a[ai] === '*' &&\n                b[bi] &&\n                (this.options.dot || !b[bi].startsWith('.')) &&\n                b[bi] !== '**') {\n                if (which === 'b')\n                    return false;\n                which = 'a';\n                result.push(a[ai]);\n                ai++;\n                bi++;\n            }\n            else if (b[bi] === '*' &&\n                a[ai] &&\n                (this.options.dot || !a[ai].startsWith('.')) &&\n                a[ai] !== '**') {\n                if (which === 'a')\n                    return false;\n                which = 'b';\n                result.push(b[bi]);\n                ai++;\n                bi++;\n            }\n            else {\n                return false;\n            }\n        }\n        // if we fall out of the loop, it means they two are identical\n        // as long as their lengths match\n        return a.length === b.length && result;\n    }\n    parseNegate() {\n        if (this.nonegate)\n            return;\n        const pattern = this.pattern;\n        let negate = false;\n        let negateOffset = 0;\n        for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n            negate = !negate;\n            negateOffset++;\n        }\n        if (negateOffset)\n            this.pattern = pattern.slice(negateOffset);\n        this.negate = negate;\n    }\n    // set partial to true to test if, for example,\n    // \"/a/b\" matches the start of \"/*/b/*/d\"\n    // Partial means, if you run out of file before you run\n    // out of pattern, then that's fine, as long as all\n    // the parts match.\n    matchOne(file, pattern, partial = false) {\n        let fileStartIndex = 0;\n        let patternStartIndex = 0;\n        // UNC paths like //?/X:/... can match X:/... and vice versa\n        // Drive letters in absolute drive or unc paths are always compared\n        // case-insensitively.\n        if (this.isWindows) {\n            const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n            const fileUNC = !fileDrive &&\n                file[0] === '' &&\n                file[1] === '' &&\n                file[2] === '?' &&\n                /^[a-z]:$/i.test(file[3]);\n            const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n            const patternUNC = !patternDrive &&\n                pattern[0] === '' &&\n                pattern[1] === '' &&\n                pattern[2] === '?' &&\n                typeof pattern[3] === 'string' &&\n                /^[a-z]:$/i.test(pattern[3]);\n            const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;\n            const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;\n            if (typeof fdi === 'number' && typeof pdi === 'number') {\n                const [fd, pd] = [\n                    file[fdi],\n                    pattern[pdi],\n                ];\n                if (fd.toLowerCase() === pd.toLowerCase()) {\n                    pattern[pdi] = fd;\n                    patternStartIndex = pdi;\n                    fileStartIndex = fdi;\n                }\n            }\n        }\n        // resolve and reduce . and .. portions in the file as well.\n        // dont' need to do the second phase, because it's only one string[]\n        const { optimizationLevel = 1 } = this.options;\n        if (optimizationLevel >= 2) {\n            file = this.levelTwoFileOptimize(file);\n        }\n        if (pattern.includes(GLOBSTAR)) {\n            return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n        }\n        return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n    }\n    #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n        const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n        const lastgs = pattern.lastIndexOf(GLOBSTAR);\n        const [head, body, tail] = partial ? [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1),\n            [],\n        ] : [\n            pattern.slice(patternIndex, firstgs),\n            pattern.slice(firstgs + 1, lastgs),\n            pattern.slice(lastgs + 1),\n        ];\n        if (head.length) {\n            const fileHead = file.slice(fileIndex, fileIndex + head.length);\n            if (!this.#matchOne(fileHead, head, partial, 0, 0))\n                return false;\n            fileIndex += head.length;\n        }\n        let fileTailMatch = 0;\n        if (tail.length) {\n            if (tail.length + fileIndex > file.length)\n                return false;\n            let tailStart = file.length - tail.length;\n            if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n                fileTailMatch = tail.length;\n            }\n            else {\n                if (file[file.length - 1] !== '' ||\n                    fileIndex + tail.length === file.length) {\n                    return false;\n                }\n                tailStart--;\n                if (!this.#matchOne(file, tail, partial, tailStart, 0))\n                    return false;\n                fileTailMatch = tail.length + 1;\n            }\n        }\n        if (!body.length) {\n            let sawSome = !!fileTailMatch;\n            for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n                const f = String(file[i]);\n                sawSome = true;\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return partial || sawSome;\n        }\n        const bodySegments = [[[], 0]];\n        let currentBody = bodySegments[0];\n        let nonGsParts = 0;\n        const nonGsPartsSums = [0];\n        for (const b of body) {\n            if (b === GLOBSTAR) {\n                nonGsPartsSums.push(nonGsParts);\n                currentBody = [[], 0];\n                bodySegments.push(currentBody);\n            }\n            else {\n                currentBody[0].push(b);\n                nonGsParts++;\n            }\n        }\n        let i = bodySegments.length - 1;\n        const fileLength = file.length - fileTailMatch;\n        for (const b of bodySegments) {\n            b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n        }\n        return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n    }\n    #matchGlobStarBodySections(file, bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n        const bs = bodySegments[bodyIndex];\n        if (!bs) {\n            for (let i = fileIndex; i < file.length; i++) {\n                sawTail = true;\n                const f = file[i];\n                if (f === '.' || f === '..' ||\n                    (!this.options.dot && f.startsWith('.'))) {\n                    return false;\n                }\n            }\n            return sawTail;\n        }\n        const [body, after] = bs;\n        while (fileIndex <= after) {\n            const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n            if (m && globStarDepth < this.maxGlobstarRecursion) {\n                const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n                if (sub !== false)\n                    return sub;\n            }\n            const f = file[fileIndex];\n            if (f === '.' || f === '..' ||\n                (!this.options.dot && f.startsWith('.'))) {\n                return false;\n            }\n            fileIndex++;\n        }\n        return partial || null;\n    }\n    #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n        let fi;\n        let pi;\n        let pl;\n        let fl;\n        for (fi = fileIndex, pi = patternIndex,\n            fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n            this.debug('matchOne loop');\n            let p = pattern[pi];\n            let f = file[fi];\n            this.debug(pattern, p, f);\n            /* c8 ignore start */\n            if (p === false || p === GLOBSTAR)\n                return false;\n            /* c8 ignore stop */\n            let hit;\n            if (typeof p === 'string') {\n                hit = f === p;\n                this.debug('string match', p, f, hit);\n            }\n            else {\n                hit = p.test(f);\n                this.debug('pattern match', p, f, hit);\n            }\n            if (!hit)\n                return false;\n        }\n        if (fi === fl && pi === pl) {\n            return true;\n        }\n        else if (fi === fl) {\n            return partial;\n        }\n        else if (pi === pl) {\n            return fi === fl - 1 && file[fi] === '';\n            /* c8 ignore start */\n        }\n        else {\n            throw new Error('wtf?');\n        }\n        /* c8 ignore stop */\n    }\n    braceExpand() {\n        return braceExpand(this.pattern, this.options);\n    }\n    parse(pattern) {\n        assertValidPattern(pattern);\n        const options = this.options;\n        // shortcuts\n        if (pattern === '**')\n            return GLOBSTAR;\n        if (pattern === '')\n            return '';\n        // far and away, the most common glob pattern parts are\n        // *, *.*, and *.  Add a fast check method for those.\n        let m;\n        let fastTest = null;\n        if ((m = pattern.match(starRE))) {\n            fastTest = options.dot ? starTestDot : starTest;\n        }\n        else if ((m = pattern.match(starDotExtRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? starDotExtTestNocaseDot\n                    : starDotExtTestNocase\n                : options.dot\n                    ? starDotExtTestDot\n                    : starDotExtTest)(m[1]);\n        }\n        else if ((m = pattern.match(qmarksRE))) {\n            fastTest = (options.nocase\n                ? options.dot\n                    ? qmarksTestNocaseDot\n                    : qmarksTestNocase\n                : options.dot\n                    ? qmarksTestDot\n                    : qmarksTest)(m);\n        }\n        else if ((m = pattern.match(starDotStarRE))) {\n            fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n        }\n        else if ((m = pattern.match(dotStarRE))) {\n            fastTest = dotStarTest;\n        }\n        const re = AST.fromGlob(pattern, this.options).toMMPattern();\n        if (fastTest && typeof re === 'object') {\n            // Avoids overriding in frozen environments\n            Reflect.defineProperty(re, 'test', { value: fastTest });\n        }\n        return re;\n    }\n    makeRe() {\n        if (this.regexp || this.regexp === false)\n            return this.regexp;\n        // at this point, this.set is a 2d array of partial\n        // pattern strings, or \"**\".\n        //\n        // It's better to use .match().  This function shouldn't\n        // be used, really, but it's pretty convenient sometimes,\n        // when you just want to work with a regex.\n        const set = this.set;\n        if (!set.length) {\n            this.regexp = false;\n            return this.regexp;\n        }\n        const options = this.options;\n        const twoStar = options.noglobstar\n            ? star\n            : options.dot\n                ? twoStarDot\n                : twoStarNoDot;\n        const flags = new Set(options.nocase ? ['i'] : []);\n        // regexpify non-globstar patterns\n        // if ** is only item, then we just do one twoStar\n        // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n        // if ** is last, append (\\/twoStar|) to previous\n        // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n        // then filter out GLOBSTAR symbols\n        let re = set\n            .map(pattern => {\n            const pp = pattern.map(p => {\n                if (p instanceof RegExp) {\n                    for (const f of p.flags.split(''))\n                        flags.add(f);\n                }\n                return typeof p === 'string'\n                    ? regExpEscape(p)\n                    : p === GLOBSTAR\n                        ? GLOBSTAR\n                        : p._src;\n            });\n            pp.forEach((p, i) => {\n                const next = pp[i + 1];\n                const prev = pp[i - 1];\n                if (p !== GLOBSTAR || prev === GLOBSTAR) {\n                    return;\n                }\n                if (prev === undefined) {\n                    if (next !== undefined && next !== GLOBSTAR) {\n                        pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n                    }\n                    else {\n                        pp[i] = twoStar;\n                    }\n                }\n                else if (next === undefined) {\n                    pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?';\n                }\n                else if (next !== GLOBSTAR) {\n                    pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n                    pp[i + 1] = GLOBSTAR;\n                }\n            });\n            return pp.filter(p => p !== GLOBSTAR).join('/');\n        })\n            .join('|');\n        // need to wrap in parens if we had more than one thing with |,\n        // otherwise only the first will be anchored to ^ and the last to $\n        const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n        // must match entire pattern\n        // ending in a * or ** will make it less strict.\n        re = '^' + open + re + close + '$';\n        // can match anything, as long as it's not this.\n        if (this.negate)\n            re = '^(?!' + re + ').+$';\n        try {\n            this.regexp = new RegExp(re, [...flags].join(''));\n            /* c8 ignore start */\n        }\n        catch (ex) {\n            // should be impossible\n            this.regexp = false;\n        }\n        /* c8 ignore stop */\n        return this.regexp;\n    }\n    slashSplit(p) {\n        // if p starts with // on windows, we preserve that\n        // so that UNC paths aren't broken.  Otherwise, any number of\n        // / characters are coalesced into one, unless\n        // preserveMultipleSlashes is set to true.\n        if (this.preserveMultipleSlashes) {\n            return p.split('/');\n        }\n        else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n            // add an extra '' for the one we lose\n            return ['', ...p.split(/\\/+/)];\n        }\n        else {\n            return p.split(/\\/+/);\n        }\n    }\n    match(f, partial = this.partial) {\n        this.debug('match', f, this.pattern);\n        // short-circuit in the case of busted things.\n        // comments, etc.\n        if (this.comment) {\n            return false;\n        }\n        if (this.empty) {\n            return f === '';\n        }\n        if (f === '/' && partial) {\n            return true;\n        }\n        const options = this.options;\n        // windows: need to use /, not \\\n        if (this.isWindows) {\n            f = f.split('\\\\').join('/');\n        }\n        // treat the test path as a set of pathparts.\n        const ff = this.slashSplit(f);\n        this.debug(this.pattern, 'split', ff);\n        // just ONE of the pattern sets in this.set needs to match\n        // in order for it to be valid.  If negating, then just one\n        // match means that we have failed.\n        // Either way, return on the first hit.\n        const set = this.set;\n        this.debug(this.pattern, 'set', set);\n        // Find the basename of the path by looking for the last non-empty segment\n        let filename = ff[ff.length - 1];\n        if (!filename) {\n            for (let i = ff.length - 2; !filename && i >= 0; i--) {\n                filename = ff[i];\n            }\n        }\n        for (let i = 0; i < set.length; i++) {\n            const pattern = set[i];\n            let file = ff;\n            if (options.matchBase && pattern.length === 1) {\n                file = [filename];\n            }\n            const hit = this.matchOne(file, pattern, partial);\n            if (hit) {\n                if (options.flipNegate) {\n                    return true;\n                }\n                return !this.negate;\n            }\n        }\n        // didn't get any hits.  this is success if it's a negative\n        // pattern, failure otherwise.\n        if (options.flipNegate) {\n            return false;\n        }\n        return this.negate;\n    }\n    static defaults(def) {\n        return minimatch.defaults(def).Minimatch;\n    }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {\n    return windowsPathsNoEscape\n        ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n        : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1140\":\"490e17ed9c8948d5a9e8\",\"2221\":\"428c2ff62c4b8b3c97fc\",\"3556\":\"57d00a12b4953e229068\",\"4508\":\"bd9a6bf4d650882814a8\",\"4906\":\"75718b28aced26adc4af\",\"5448\":\"71cfe268d6f1213c4735\",\"5528\":\"fa22a350943490669cfb\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"ebcb6885c1fc8c461988\",\"7039\":\"be7eefcb933f99fc5b1f\",\"7859\":\"740587c0c8c350dad157\",\"7910\":\"de857920f8beb5205bbc\",\"8124\":\"75a422293ae2add34a10\",\"8815\":\"9a5c507c75429c9c04e4\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2122;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t2122: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(80609)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","client","createClient","getRootPath","setHeaders","token","requesttoken","onRequestTokenUpdate","getRequestToken","generateRemoteUrl","ActivityTabPluginView","ActivityTabPluginInstance","Vue","use","PiniaVuePlugin","__webpack_nonce__","getCSPNonce","tagName","loadState","undefined","window","OCA","Activity","registerSidebarAction","addEventListener","mount","async","el","node","reload","pinia","createPinia","default","ActivityCommentAction","extend","propsData","reloadCallback","resourceId","fileid","logger","info","unmount","$destroy","registerSidebarEntries","limit","offset","data","comments","getComments","resourceType","debug","CommentView","CommentsViewObject","map","comment","_CommentsViewInstance","timestamp","moment","props","creationDateTime","toDate","getTime","element","this","registerSidebarFilter","activity","type","registerSidebarTab","id","displayName","t","iconSvgInline","order","onInit","FilesSidebarTab","mixin","webComponent","wrap","Object","defineProperty","prototype","value","get","customElements","define","DEFAULT_LIMIT","options","resourcePath","join","datetime","toISOString","response","customRequest","method","responseData","text","stat","result","isDetailed","multistatus","responseItems","item","propstat","prop","prepareFileFromProps","toString","getDirectoryFiles","parseXML","processResponsePayload","balanced","a","b","str","RegExp","maybeMatch","r","range","start","end","pre","slice","body","length","post","reg","m","match","begs","beg","left","right","ai","indexOf","bi","i","push","pop","module","exports","freeGlobal","global","InvalidCharacterError","message","Error","name","error","TABLE","REGEX_SPACE_CHARACTERS","base64","input","String","test","c","buffer","padding","output","position","charCodeAt","charAt","replace","bitStorage","bitCounter","fromCharCode","substr","expand","split","escSlash","escOpen","escClose","escComma","escPeriod","escapeBraces","unescapeBraces","Math","random","numeric","parseInt","parseCommaParts","parts","p","postParts","shift","apply","embrace","isPadded","lte","y","gte","isTop","expansions","k","expansion","n","N","isNumericSequence","isAlphaSequence","isSequence","isOptions","x","width","max","incr","abs","pad","some","need","z","Array","j","len","code","bind","$apply","$call","$reflectApply","call","actualApply","arguments","Function","$TypeError","$actualApply","args","Reflect","setFunctionLength","$defineProperty","callBindBasic","applyBind","originalFunction","func","adjustedLength","GetIntrinsic","$indexOf","allowMissing","intrinsic","$SyntaxError","gopd","obj","property","nonEnumerable","nonWritable","nonConfigurable","loose","desc","configurable","enumerable","writable","hasProtoAccessor","callBind","gOPD","__proto__","e","$Object","$getPrototypeOf","getPrototypeOf","EvalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError","isCallable","toStr","hasOwnProperty","list","iterator","thisArg","receiver","array","forEachArray","string","forEachString","object","forEachObject","concatty","arr","that","target","bound","arrLike","slicy","boundLength","boundArgs","joiny","Empty","implementation","cached","$Error","$EvalError","$RangeError","$ReferenceError","$URIError","floor","min","pow","round","sign","$Function","getEvalledConstructor","expressionSyntax","$gOPD","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","hasSymbols","getProto","$ObjectGPO","$ReflectGPO","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Symbol","Atomics","BigInt","BigInt64Array","BigUint64Array","Boolean","DataView","Date","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","Float16Array","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","isFinite","isNaN","JSON","Map","Number","parseFloat","Promise","Proxy","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","WeakRef","WeakSet","errorProto","doEval","fn","gen","LEGACY_ALIASES","hasOwn","$concat","concat","$spliceApply","splice","$replace","$strSlice","$exec","exec","rePropName","reEscapeChar","getBaseIntrinsic","alias","intrinsicName","first","last","number","quote","subString","stringToPath","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","part","reflectGetProto","originalGetProto","getDunderProto","O","getOwnPropertyDescriptor","hasPropertyDescriptors","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","getOwnPropertySymbols","sym","symObj","_","keys","getOwnPropertyNames","syms","propertyIsEnumerable","descriptor","toStringTag","$hasOwn","http","url","https","key","validateParams","params","parse","protocol","request","cb","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","badArrayLike","isCallableMarker","fnToStr","reflectApply","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","isIE68","isDDA","document","all","strClass","isFnRegex","safeRegexTest","getGeneratorFunction","GeneratorFunction","isRegexMarker","throwRegexMarker","badStringifier","valueOf","toPrimitive","whichTypedArray","$isNaN","_typeof","constructor","_wrapNativeSuper","Class","_cache","has","set","Wrapper","_construct","_getPrototypeOf","create","_setPrototypeOf","Parent","construct","sham","_isNativeReflectConstruct","instance","o","setPrototypeOf","ObjectPrototypeMutationError","_Error","_this","Constructor","_classCallCheck","self","_assertThisInitialized","_possibleConstructorReturn","subClass","superClass","_inherits","traverse","path","callback","segments","_loop","idx","currentSegment","v","isArray","index","remainingSegments","pathToHere","_ret","isLastSegment","currentObject","currentProperty","nextPropIsNumber","isInteger","nextPropIsArrayWildcard","err","own","isIn","objectInPath","pathExists","validPath","hasMap","mapSizeDescriptor","mapSize","mapForEach","forEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","objectToString","functionToString","$match","$slice","$toUpperCase","toUpperCase","$toLowerCase","toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","quotes","single","quoteREs","wrapQuotes","s","defaultStyle","opts","style","quoteStyle","quoteChar","canTrustToString","isRegExp","inspect_","depth","seen","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","from","noIndent","newOpts","f","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","nodeName","getAttribute","attrs","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","globalThis","isDate","ys","isPlainObject","protoTag","stringTag","tag","l","remaining","trailer","quoteRE","lastIndex","lowbyte","size","entries","lineJoiner","isArr","symMap","util","normalizeArray","allowAboveRoot","res","splitPathRe","posix","posixSplitPath","filename","resolve","resolvedPath","resolvedAbsolute","process","cwd","normalize","isAbsolute","trailingSlash","segment","relative","to","trim","fromParts","toParts","samePartsLength","outputParts","_makeLong","dirname","root","dir","basename","ext","extname","format","pathObject","isObject","sep","pathString","allParts","delimiter","nodeType","punycode","maxInt","regexPunycode","regexNonASCII","regexSeparators","errors","stringFromCharCode","mapDomain","ucs2decode","extra","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","baseMinusTMin","decode","out","basic","oldi","w","baseMinusT","inputLength","bias","lastIndexOf","encode","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","stringify","formats","utils","defaults","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictDepth","strictNullHandling","throwOnLimitExceeded","$0","numberStr","parseArrayValue","val","currentArrayLength","parseKeys","givenKey","valuesParsed","child","parent","segmentContent","splitKeyIntoSegments","chain","parentKey","leaf","isOverflow","combine","cleanRoot","decodedRoot","isValidArrayIndex","markOverflow","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","pos","maybeMap","encodedVal","existing","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","defaultFormat","addQueryPrefix","arrayFormat","commaRoundTrip","encodeDotInKeys","encoder","encodeValuesOnly","filter","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","sort","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","values","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","overflowChannel","maxIndex","getMaxIndex","setMaxIndex","hexTable","arrayToObject","source","assign","reduce","acc","newIndex","queue","refs","compacted","compactQueue","defaultDecoder","strWithoutPlus","unescape","defaultEncoder","kind","escape","mapped","nextIndex","sourceKeys","combined","mergeTarget","targetItem","keyNum","pairs","query","parser","port","isRegex","regex","hasDescriptors","functionLengthIsConfigurable","functionLengthIsWritable","listGetNode","isDelete","curr","next","$o","channel","assert","deletedNode","objects","listDelete","listGet","listHas","listSet","$Map","$mapGet","$mapSet","$mapHas","$mapDelete","$mapSize","$m","getSideChannelMap","$WeakMap","$weakMapGet","$weakMapSet","$weakMapHas","$weakMapDelete","$wm","getSideChannelList","makeChannel","$channelData","ClientRequest","statusCodes","defaultProtocol","location","search","host","hostname","headers","req","on","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","xhr","getXHR","XMLHttpRequest","open","XDomainRequest","checkTypeSupport","responseType","isFunction","fetch","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","capability","inherits","stream","rStates","readyStates","preferBinary","Writable","_opts","_body","_headers","auth","setHeader","Buffer","useFetch","mode","_mode","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","header","removeHeader","_destroyed","timeout","setTimeout","headersObj","Blob","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","emit","abort","credentials","withCredentials","then","_fetchResponse","_resetTimers","_connect","reason","_xhr","nextTick","ontimeout","setRequestHeader","_response","onreadystatechange","readyState","LOADING","DONE","_onXHRProgress","onprogress","onerror","send","status","statusValid","_write","chunk","encoding","done","clearTimeout","destroy","once","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","Readable","rawHeaders","trailers","rawTrailers","statusCode","statusMessage","statusText","write","reject","_resumeFetch","close","pipeTo","catch","reader","getReader","read","_pos","responseURL","getAllResponseHeaders","matches","_charset","mimeType","charsetMatch","_read","responseText","newData","alloc","MSStreamReader","byteLength","onload","readAsArrayBuffer","codes","createErrorType","Base","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","expected","thing","actual","determiner","msg","this_len","substring","endsWith","arg","objectKeys","Duplex","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","Transform","_transform","ReadableState","EElistenerCount","emitter","listeners","Stream","OurUint8Array","debugUtil","debuglog","StringDecoder","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","_require$codes","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","readableAddChunk","addToFront","skipChunkCheck","er","state","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","unshift","_undestroy","undestroy","isPaused","setEncoding","enc","head","content","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","listenerCount","resume","nReadingNextTick","resume_","fromList","ret","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipe","dest","pipeOpts","src","endFn","stdout","stderr","unpipe","onunpipe","unpipeInfo","hasUnpiped","removeListener","onclose","onfinish","ondrain","ondata","cleanedUp","needDrain","pipeOnDrain","pause","event","prependListener","_events","dests","ev","addListener","removeAllListeners","asyncIterator","_fromList","iterable","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","rs","needTransform","writeencoding","transform","flush","_flush","prefinish","err2","CorkedRequest","entry","finish","corkReq","pendingcb","onCorkedFinish","corkedRequestsFree","WritableState","realHasInstance","internalUtil","deprecate","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","final","_final","doWrite","onwriteDrain","holder","count","allBuffers","isBuf","callFinal","rState","current","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","_defineProperty","prim","hint","_toPrimitive","_toPropertyKey","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","iter","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","promise","lastPromise","wrapForNext","_this2","_Object$create","ownKeys","enumerableOnly","symbols","_objectSpread","getOwnPropertyDescriptors","defineProperties","_defineProperties","copyBuffer","copy","tail","protoProps","allocUnsafe","hasStrings","_getString","_getBuffer","nb","buf","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","noop","eos","called","_len","_key","onlegacyfinish","writableEnded","readableEnded","onrequest","isRequest","ERR_MISSING_ARGS","streams","popCallback","destroys","closed","destroyer","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","required","qs","controlOrWhitespace","CRHTLF","slashes","protocolre","windowsDriveLetter","trimLeft","rules","address","isSpecial","NaN","ignore","hash","lolcation","loc","finaldestination","Url","pathname","href","scheme","extractProtocol","rest","forwardSlashes","otherSlashes","slashesCount","extracted","instruction","instructions","up","username","password","origin","char","ins","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","u","queryIndex","splitter","uSplit","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","toASCII","h","ae","esc","qm","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","fill","readUInt8","isArgumentsObject","isGeneratorFunction","isTypedArray","uncurryThis","BigIntSupported","SymbolSupported","ObjectToString","numberValue","stringValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isPromise","isArrayBufferView","isView","isUint8Array","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isFloat32Array","isFloat64Array","isBigInt64Array","isBigUint64Array","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","isBoxedPrimitive","isAnyArrayBuffer","descriptors","formatRegExp","isNull","noDeprecation","warned","throwDeprecation","traceDeprecation","console","trace","debugs","debugEnvRegex","env","NODE_DEBUG","debugEnv","ctx","stylize","stylizeNoColor","colors","showHidden","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","recurseTimes","primitive","simple","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","cur","reduceToSingleString","line","ar","re","d","pid","types","isNullOrUndefined","isNativeError","isPrimitive","months","log","time","getHours","getMinutes","getSeconds","getDate","getMonth","add","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","original","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","availableTypedArrays","g","typedArrays","cache","typedArray","superProto","found","getter","trySlices","tryTypedArrays","possibleNames","WorkerGlobalScope","Headers","Request","Response","defaultOptions","attributeNamePrefix","attributesGroupName","textNodeName","ignoreAttributes","cdataPropName","indentBy","suppressEmptyNode","suppressUnpairedNode","suppressBooleanAttributes","tagValueProcessor","attributeValueProcessor","attrName","preserveOrder","commentPropName","unpairedTags","entities","processEntities","stopNodes","oneListGroup","maxNestedTags","jPath","Builder","startsWith","stopNodeExpressions","isAttribute","ignoreAttributesFn","attrPrefixLen","processTextOrObjNode","indentate","tagEndChar","newLine","level","matcher","attrValues","extractAttributes","checkStopNode","rawContent","buildRawContent","attrStr","buildAttributesForStopNode","buildObjectNode","j2x","buildTextValNode","jObj","arrayNodeName","getDepth","isCurrentStopNode","attr","buildAttrPairStr","newval","replaceEntitiesValue","isStopNode","textValue","closeTag","arrLen","listTagVal","listTagAttr","Ks","L","hasAttrs","attrGroup","attrKey","nestedContent","nestedAttrs","cleanKey","tagEndExp","piClosingChar","entity","getIgnoreAttributesFn","pattern","toXml","jArray","indentation","arrToStr","xmlStr","isPreviousElementTag","tagObj","propName","extractAttributeValues","tagText","attStr","attr_to_str","tempInd","piTextNodeName","newIdentation","tagStart","tagValue","getRawContent","includes","attrMap","attr_to_str_raw","attrVal","nameStartChar","regexName","getAllMatches","allmatches","startIndex","isName","isExist","DANGEROUS_PROPERTY_NAMES","criticalProperties","allowBooleanAttributes","validate","xmlData","tags","tagFound","reachedRoot","readPI","isWhiteSpace","getErrorObject","getLineNumberForPosition","tagStartPos","readCommentAndCDATA","closingTag","validateTagName","readAttributeStr","attrStrStart","isValid","validateAttributeString","tagClosed","otg","openPos","col","afterAmp","validateAmpersand","tagname","angleBracketsCount","startChar","validAttrStrRegxp","attrNames","getPositionFromMatch","validateAttrName","validateNumberAmpersand","lineNumber","lines","DocTypeReader","suppressValidationErr","readDocType","entityCount","hasBody","exp","hasSeq","entityName","readEntityExp","enabled","maxEntityCount","escaped","regx","readElementExp","readNotationExp","skipWhitespace","validateEntityName","entityValue","readIdentifierVal","maxEntitySize","notationName","identifierType","publicIdentifier","systemIdentifier","identifierVal","elementName","contentModel","readAttlistExp","attributeName","attributeType","allowedNotations","notation","validTypes","defaultValue","seq","defaultOnDangerousProperty","removeNSPrefix","parseTagValue","parseAttributeValue","trimValues","numberParseOptions","hex","leadingZeros","eNotation","alwaysCreateTextNode","htmlEntities","ignoreDeclaration","ignorePiTags","transformTagName","transformAttributeName","updateTag","captureMetaData","strictReservedNames","onDangerousProperty","validatePropertyName","propertyName","optionName","normalized","dangerous","normalizeProcessEntities","maxExpansionDepth","maxTotalExpansions","maxExpandedLength","allowedTags","tagFilter","buildOptions","built","propertyNameOptions","extractRawAttributes","prefixedAttrs","rawAttrs","extractNamespace","rawTagName","colonIndex","ns","OrderedObjParser","currentNode","tagsNodeStack","docTypeEntities","lastEntities","ampEntity","fromCodePoint","addExternalEntities","parseXml","parseTextData","resolveNameSpace","buildAttributesMap","isItStopNode","readStopNodeData","saveTextToParentTag","addChild","entityExpansionCount","currentExpandedLength","isCurrentNodeStopNode","stopNodeExp","externalEntities","entKeys","ent","dontTrim","hasAttributes","isLeafNode","escapeEntities","jPathOrMatcher","parseValue","attrsRegx","rawAttrsForMatcher","oldVal","parsedVal","updateCurrent","jPathStr","aName","sanitizeName","newVal","attrCollection","xmlObj","textData","reset","docTypeReader","closeIndex","findClosingIndex","lastTagName","getCurrentTag","tagData","readTagExp","childNode","tagExp","attrExpPresent","endIndex","context","lastTag","isSelfClosing","namespace","tagContent","entityConfig","lengthBefore","parentNode","errMsg","closingIndex","closingChar","attrBoundary","ch","tagExpWithClosingIndex","separatorIndex","trimStart","openTagCount","shouldParse","newTagName","XMLParser","validationOption","orderedObjParser","orderedResult","addEntity","getMetaDataSymbol","METADATA_SYMBOL","stripAttributePrefix","prettify","compress","compressedObj","isLeaf","isLeafTag","assignAttributes","atrrName","rawAttrName","propCount","XmlNode","sequence","methods","HOT_PATCHER_TYPE","NOOP","createNewItem","HotPatcher","_configuration","registry","getEmptyAction","__type__","configuration","newAction","control","allowTargetOverrides","foreignKey","execute","isPatched","patch","patchInline","plugin","restore","setFinal","assertError","getGlobalName","Layerr","errorOptionsOrMessage","messageText","shortMessage","super","_info","captureStackTrace","ctor","constructorOpt","_cause","fullStack","stack","parseArguments","Expression","separator","_parse","_hasDeepWildcard","seg","_hasAttributeCondition","_hasPositionSelector","currentPart","_parseSegment","bracketContent","withoutBrackets","bracketMatch","tagAndPosition","nsIndex","positionMatch","tagPart","posPart","eqIndex","attrValue","nthMatch","positionValue","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","Matcher","siblingStacks","currentLevel","siblings","siblingKey","getCurrentNamespace","getAttrValue","hasAttr","getPosition","getCounter","getIndex","includeNamespace","toArray","expression","_matchWithDeepWildcard","_matchSimple","isCurrentNode","_matchSegment","pathIdx","segIdx","nextSeg","actualValue","snapshot","hexRegex","numRegex","consider","decimalPoint","infinity","toNumber","trimmedStr","skipLike","numStr","parse_int","eNotationRegx","eChar","eAdjacentToLeadingZeros","resolveEnotation","numTrimmedByZeros","decimalAdjacentToLeadingZeros","parsedStr","isPositive","handleInfinity","urlJoin","strArray","resultArray","component","generateBasicAuthHeader","createDigestContext","ha1","nc","algorithm","hasDigestAuth","generateDigestAuthHeader","digest","uri","qop","ncString","realm","nonce","cnonce","ha2","digestResponse","authValues","opaque","authHeader","parseDigestAuth","_digest","responseIndicatesDigestAuth","uid","NONCE_CHARS","makeNonce","setupAuth","oauthToken","authType","Auto","Authorization","Digest","None","Password","Token","InvalidAuthType","generateTokenAuthHeader","token_type","access_token","hasArrayBuffer","objToString","isReactNative","TARGET","isWeb","__patcher","getPatcher","DEFAULT_CONTACT_HREF","remoteURL","authTypeRaw","remoteBasePath","contactHref","httpAgent","httpsAgent","parsing","attributeParsers","tagParsers","remotePath","copyFile","destination","createDirectory","createReadStream","createWriteStream","requestOptions","deleteFile","exists","getDirectoryContents","getFileContents","getFileDownloadLink","getFileUploadLink","getHeaders","getQuota","lock","moveFile","destinationFilename","putFileContents","partialUpdateFileContents","filePath","getDAVCompliance","unlock","registerAttributeParser","registerTagParser","Destination","Overwrite","overwrite","Depth","shallow","dirPath","recursive","paths","creating","testPath","createDirectoryRecursively","outStream","PassThroughStream","rangeHeader","Range","responseError","getFileStream","writeStream","maxRedirects","finalOptions","Accept","deep","davResp","_remotePath","files","serverremoteBasePath","requestPath","includeSelf","serverBase","nodes","details","glob","compliance","server","TRANSFORM_RETAIN_FORMAT","InvalidOutputFormat","transformResponse","getFileContentsString","arrayBuffer","getFileContentsBuffer","authPart","authContents","LinkUnsupportedAuthType","quota","DEFAULT_TIMEOUT","refreshToken","Timeout","If","lockPayload","serverTimeout","InvalidUpdateRange","partialUpdateFileContentsSabredav","partialUpdateFileContentsApache","NotSupported","contentLength","getSearch","searchArbiter","results","getStat","prepareRequestOptions","userOptions","requestStandard","ok","requestDigest","requestAuto","response2","patcher","newHeaders","agent","parsedURL","getFetchOptions","createErrorFromResponse","handleResponseCode","processGlobFilter","matchBase","requestDataToFetchBody","ha1Compute","user","pass","ha1Hash","PropertyType","displaynameTagParser","getPropertyOfType","Original","xml","normaliseResponse","normaliseResult","processor","getParser","getlastmodified","lastMod","getcontentlength","rawSize","resourcetype","getcontenttype","getetag","etag","collection","lastmod","mime","displayname","parseStat","responseItem","statusLine","statusCodeStr","parseSearch","truncated","translateDiskSpace","fromBase64","toBase64","convertResponseHeaders","mergeHeaders","headerPayloads","headerKeys","lowerHeader","cloneShallow","items","nextItem","mergeObjects","obj1","obj2","SEP_PATH_POSIX","SEP_PATH_WINDOWS","encodePath","replaced","getAllDirectories","directory","currentPath","makePathAbsolute","pathStr","normalisePath","normalisedPath","parseQuota","quotaUsed","quotaAvail","used","available","calculateDataLength","DataTypeNoLength","extractURLPath","fullURL","urlPath","joinURL","nextPart","partIndex","normaliseHREF","generateLockXML","ownerHREF","lockinfo","lockscope","exclusive","locktype","owner","parseGenericResponse","AuthType","ErrorCode","CharCodes","BinTrieFlags","EntityDecoderState","DecodingMode","codePointAt","EntityLevel","EncodingMode","assertValidPattern","_a","isExtglobType","isExtglobAST","adoptionMap","adoptionWithSpaceMap","adoptionAnyMap","usurpMap","startNoDot","addPatternStart","justDots","reSpecials","regExpEscape","qmark","star","starNoEmpty","AST","hasMagic","pp","copyIn","toJSON","isStart","isEnd","pl","clone","ast","opt","extDepth","maxExtglobRecursion","escaping","inBrace","braceStart","braceNeg","noext","depthAdd","gc","blank","nt","iterations","fromGlob","toMMPattern","uflag","toRegExpSource","nocase","nocaseMagicOnly","flags","_src","_glob","allowDot","dot","noEmpty","aps","needNoTrav","needNoDot","repeated","me","bodyDotAllowed","_hasMagic","inStar","needUflag","consumed","magic","posixClasses","braceEscape","rangesToString","ranges","parseClass","negs","sawStart","negate","endPos","rangeStart","WHILE","cls","unip","neg","sranges","snegs","windowsPathsNoEscape","minimatch","nocomment","Minimatch","starDotExtRE","starDotExtTest","starDotExtTestDot","starDotExtTestNocase","starDotExtTestNocaseDot","starDotStarRE","starDotStarTest","starDotStarTestDot","dotStarRE","dotStarTest","starRE","starTest","starTestDot","qmarksRE","qmarksTestNocase","qmarksTestNoExt","qmarksTestNocaseDot","qmarksTestNoExtDot","qmarksTestDot","qmarksTest","defaultPlatform","__MINIMATCH_TESTING_PLATFORM__","platform","GLOBSTAR","def","orig","makeRe","braceExpand","nobrace","mm","nonull","globMagic","nonegate","empty","preserveMultipleSlashes","partial","globSet","globParts","isWindows","windowsNoMagicRoot","maxGlobstarRecursion","regexp","allowWindowsEscape","make","magicalBraces","parseNegate","rawGlobParts","slashSplit","preprocess","__","isUNC","isDrive","ss","noglobstar","optimizationLevel","firstPhasePreProcess","secondPhasePreProcess","levelOneOptimize","adjascentGlobstarOptimize","gs","levelTwoFileOptimize","didSomething","dd","gss","p2","other","splin","matched","partsMatch","emptyGSMatch","which","negateOffset","matchOne","fileStartIndex","patternStartIndex","fileDrive","fileUNC","patternDrive","fdi","pdi","fd","pd","fileIndex","patternIndex","firstgs","lastgs","fileHead","fileTailMatch","tailStart","sawSome","bodySegments","currentBody","nonGsParts","nonGsPartsSums","fileLength","bodyIndex","globStarDepth","sawTail","bs","after","sub","fi","pi","fl","hit","fastTest","twoStar","ex","ff","flipNegate","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","__esModule","definition","chunkId","promises","script","needAttach","scripts","getElementsByTagName","createElement","setAttribute","onScriptComplete","doneFns","removeChild","appendChild","nmd","children","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file