@libp2p/circuit-relay-v2 1.1.1-e1f0b307c → 1.1.1-e9b6a242a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. package/dist/index.min.js +1 -1
  2. package/package.json +10 -10
package/dist/index.min.js CHANGED
@@ -4,7 +4,7 @@
4
4
  `));let t=this.idBlock.tagClass===3?`[${this.idBlock.tagNumber}]`:this.constructor.NAME;return e.length?`${t} :
5
5
  ${e.join(`
6
6
  `)}`:`${t} :`}};Xc=Kt;T.Constructed=Xc;Kt.NAME="CONSTRUCTED";var rs=class extends Ie{fromBER(e,t,n){return t}toBER(e){return et}};rs.override="EndOfContentValueBlock";var Jc,ns=class extends ve{constructor(e={}){super(e,rs),this.idBlock.tagClass=1,this.idBlock.tagNumber=0}};Jc=ns;T.EndOfContent=Jc;ns.NAME=un;var Qc,qt=class extends ve{constructor(e={}){super(e,Ie),this.idBlock.tagClass=1,this.idBlock.tagNumber=5}fromBER(e,t,n){return this.lenBlock.length>0&&this.warnings.push("Non-zero length of value block for Null type"),this.idBlock.error.length||(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length||(this.blockLength+=this.lenBlock.blockLength),this.blockLength+=n,t+n>e.byteLength?(this.error="End of input reached before message was fully decoded (inconsistent offset and length values)",-1):t+n}toBER(e,t){let n=new ArrayBuffer(2);if(!e){let s=new Uint8Array(n);s[0]=5,s[1]=0}return t&&t.write(n),n}onAsciiEncoding(){return`${this.constructor.NAME}`}};Qc=qt;T.Null=Qc;qt.NAME="NULL";var ss=class extends _t(Ie){constructor({value:e,...t}={}){super(t),t.valueHex?this.valueHexView=G.BufferSourceConverter.toUint8Array(t.valueHex):this.valueHexView=new Uint8Array(1),e&&(this.value=e)}get value(){for(let e of this.valueHexView)if(e>0)return!0;return!1}set value(e){this.valueHexView[0]=e?255:0}fromBER(e,t,n){let s=G.BufferSourceConverter.toUint8Array(e);return Bt(this,s,t,n)?(this.valueHexView=s.subarray(t,t+n),n>1&&this.warnings.push("Boolean value encoded in more then 1 octet"),this.isHexOnly=!0,So.call(this),this.blockLength=n,t+n):-1}toBER(){return this.valueHexView.slice()}toJSON(){return{...super.toJSON(),value:this.value}}};ss.NAME="BooleanValueBlock";var el,is=class extends ve{constructor(e={}){super(e,ss),this.idBlock.tagClass=1,this.idBlock.tagNumber=1}getValue(){return this.valueBlock.value}setValue(e){this.valueBlock.value=e}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.getValue}`}};el=is;T.Boolean=el;is.NAME="BOOLEAN";var os=class extends _t(ct){constructor({isConstructed:e=!1,...t}={}){super(t),this.isConstructed=e}fromBER(e,t,n){let s=0;if(this.isConstructed){if(this.isHexOnly=!1,s=ct.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let i=0;i<this.value.length;i++){let o=this.value[i].constructor.NAME;if(o===un){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, OCTET STRING may consists of OCTET STRINGs only",-1}if(o!==jc)return this.error="OCTET STRING may consists of OCTET STRINGs only",-1}}else this.isHexOnly=!0,s=super.fromBER(e,t,n),this.blockLength=n;return s}toBER(e,t){return this.isConstructed?ct.prototype.toBER.call(this,e,t):e?new ArrayBuffer(this.valueHexView.byteLength):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),isConstructed:this.isConstructed}}};os.NAME="OctetStringValueBlock";var tl,At=class r extends ve{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},os),this.idBlock.tagClass=1,this.idBlock.tagNumber=4}fromBER(e,t,n){if(this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,n===0)return this.idBlock.error.length===0&&(this.blockLength+=this.idBlock.blockLength),this.lenBlock.error.length===0&&(this.blockLength+=this.lenBlock.blockLength),t;if(!this.valueBlock.isConstructed){let i=(e instanceof ArrayBuffer?new Uint8Array(e):e).subarray(t,t+n);try{if(i.byteLength){let o=Us(i,0,i.byteLength);o.offset!==-1&&o.offset===n&&(this.valueBlock.value=[o.result])}}catch{}}return super.fromBER(e,t,n)}onAsciiEncoding(){return this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length?Kt.prototype.onAsciiEncoding.call(this):`${this.constructor.NAME} : ${G.Convert.ToHex(this.valueBlock.valueHexView)}`}getValue(){if(!this.idBlock.isConstructed)return this.valueBlock.valueHexView.slice().buffer;let e=[];for(let t of this.valueBlock.value)t instanceof r&&e.push(t.valueBlock.valueHexView);return G.BufferSourceConverter.concat(e)}};tl=At;T.OctetString=tl;At.NAME=jc;var as=class extends _t(ct){constructor({unusedBits:e=0,isConstructed:t=!1,...n}={}){super(n),this.unusedBits=e,this.isConstructed=t,this.blockLength=this.valueHexView.byteLength}fromBER(e,t,n){if(!n)return t;let s=-1;if(this.isConstructed){if(s=ct.prototype.fromBER.call(this,e,t,n),s===-1)return s;for(let a of this.value){let c=a.constructor.NAME;if(c===un){if(this.isIndefiniteForm)break;return this.error="EndOfContent is unexpected, BIT STRING may consists of BIT STRINGs only",-1}if(c!==Wc)return this.error="BIT STRING may consists of BIT STRINGs only",-1;let h=a.valueBlock;if(this.unusedBits>0&&h.unusedBits>0)return this.error='Using of "unused bits" inside constructive BIT STRING allowed for least one only',-1;this.unusedBits=h.unusedBits}return s}let i=G.BufferSourceConverter.toUint8Array(e);if(!Bt(this,i,t,n))return-1;let o=i.subarray(t,t+n);if(this.unusedBits=o[0],this.unusedBits>7)return this.error="Unused bits for BitString must be in range 0-7",-1;if(!this.unusedBits){let a=o.subarray(1);try{if(a.byteLength){let c=Us(a,0,a.byteLength);c.offset!==-1&&c.offset===n-1&&(this.value=[c.result])}}catch{}}return this.valueHexView=o.subarray(1),this.blockLength=o.length,t+n}toBER(e,t){if(this.isConstructed)return ct.prototype.toBER.call(this,e,t);if(e)return new ArrayBuffer(this.valueHexView.byteLength+1);if(!this.valueHexView.byteLength)return et;let n=new Uint8Array(this.valueHexView.length+1);return n[0]=this.unusedBits,n.set(this.valueHexView,1),n.buffer}toJSON(){return{...super.toJSON(),unusedBits:this.unusedBits,isConstructed:this.isConstructed}}};as.NAME="BitStringValueBlock";var rl,Dr=class extends ve{constructor({idBlock:e={},lenBlock:t={},...n}={}){var s,i;(s=n.isConstructed)!==null&&s!==void 0||(n.isConstructed=!!(!((i=n.value)===null||i===void 0)&&i.length)),super({idBlock:{isConstructed:n.isConstructed,...e},lenBlock:{...t,isIndefiniteForm:!!n.isIndefiniteForm},...n},as),this.idBlock.tagClass=1,this.idBlock.tagNumber=3}fromBER(e,t,n){return this.valueBlock.isConstructed=this.idBlock.isConstructed,this.valueBlock.isIndefiniteForm=this.lenBlock.isIndefiniteForm,super.fromBER(e,t,n)}onAsciiEncoding(){if(this.valueBlock.isConstructed||this.valueBlock.value&&this.valueBlock.value.length)return Kt.prototype.onAsciiEncoding.call(this);{let e=[],t=this.valueBlock.valueHexView;for(let s of t)e.push(s.toString(2).padStart(8,"0"));let n=e.join("");return`${this.constructor.NAME} : ${n.substring(0,n.length-this.valueBlock.unusedBits)}`}}};rl=Dr;T.BitString=rl;Dr.NAME=Wc;var nl;function Yd(r,e){let t=new Uint8Array([0]),n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,h=0,f=c<o?o:c,l=0;for(let m=f;m>=0;m--,l++){switch(!0){case l<a.length:h=i[o-l]+a[c-l]+t[0];break;default:h=i[o-l]+t[0]}switch(t[0]=h/10,!0){case l>=i.length:i=Yn(new Uint8Array([h%10]),i);break;default:i[o-l]=h%10}}return t[0]>0&&(i=Yn(t,i)),i}function Gc(r){if(r>=cn.length)for(let e=cn.length;e<=r;e++){let t=new Uint8Array([0]),n=cn[e-1].slice(0);for(let s=n.length-1;s>=0;s--){let i=new Uint8Array([(n[s]<<1)+t[0]]);t[0]=i[0]/10,n[s]=i[0]%10}t[0]>0&&(n=Yn(t,n)),cn.push(n)}return cn[r]}function Zd(r,e){let t=0,n=new Uint8Array(r),s=new Uint8Array(e),i=n.slice(0),o=i.length-1,a=s.slice(0),c=a.length-1,h,f=0;for(let l=c;l>=0;l--,f++)switch(h=i[o-f]-a[c-f]-t,!0){case h<0:t=1,i[o-f]=h+10;break;default:t=0,i[o-f]=h}if(t>0)for(let l=o-c+1;l>=0;l--,f++)if(h=i[o-f]-t,h<0)t=1,i[o-f]=h+10;else{t=0,i[o-f]=h;break}return i.slice()}var fn=class extends _t(Ie){constructor({value:e,...t}={}){super(t),this._valueDec=0,t.valueHex&&this.setValueHex(),e!==void 0&&(this.valueDec=e)}setValueHex(){this.valueHexView.length>=4?(this.warnings.push("Too big Integer for decoding, hex only"),this.isHexOnly=!0,this._valueDec=0):(this.isHexOnly=!1,this.valueHexView.length>0&&(this._valueDec=So.call(this)))}set valueDec(e){this._valueDec=e,this.isHexOnly=!1,this.valueHexView=new Uint8Array(qc(e))}get valueDec(){return this._valueDec}fromDER(e,t,n,s=0){let i=this.fromBER(e,t,n);if(i===-1)return i;let o=this.valueHexView;return o[0]===0&&o[1]&128?this.valueHexView=o.subarray(1):s!==0&&o.length<s&&(s-o.length>1&&(s=o.length+1),this.valueHexView=o.subarray(s-o.length)),i}toDER(e=!1){let t=this.valueHexView;switch(!0){case(t[0]&128)!==0:{let n=new Uint8Array(this.valueHexView.length+1);n[0]=0,n.set(t,1),this.valueHexView=n}break;case(t[0]===0&&(t[1]&128)===0):this.valueHexView=this.valueHexView.subarray(1);break}return this.toBER(e)}fromBER(e,t,n){let s=super.fromBER(e,t,n);return s===-1||this.setValueHex(),s}toBER(e){return e?new ArrayBuffer(this.valueHexView.length):this.valueHexView.slice().buffer}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}toString(){let e=this.valueHexView.length*8-1,t=new Uint8Array(this.valueHexView.length*8/3),n=0,s,i=this.valueHexView,o="",a=!1;for(let c=i.byteLength-1;c>=0;c--){s=i[c];for(let h=0;h<8;h++){if((s&1)===1)switch(n){case e:t=Zd(Gc(n),t),o="-";break;default:t=Yd(t,Gc(n))}n++,s>>=1}}for(let c=0;c<t.length;c++)t[c]&&(a=!0),a&&(o+=$c.charAt(t[c]));return a===!1&&(o+=$c.charAt(0)),o}};nl=fn;fn.NAME="IntegerValueBlock";Object.defineProperty(nl.prototype,"valueHex",{set:function(r){this.valueHexView=new Uint8Array(r),this.setValueHex()},get:function(){return this.valueHexView.slice().buffer}});var sl,fe=class r extends ve{constructor(e={}){super(e,fn),this.idBlock.tagClass=1,this.idBlock.tagNumber=2}toBigInt(){return Zn(),BigInt(this.valueBlock.toString())}static fromBigInt(e){Zn();let t=BigInt(e),n=new ln,s=t.toString(16).replace(/^-/,""),i=new Uint8Array(G.Convert.FromHex(s));if(t<0){let a=new Uint8Array(i.length+(i[0]&128?1:0));a[0]|=128;let h=BigInt(`0x${G.Convert.ToHex(a)}`)+t,f=G.BufferSourceConverter.toUint8Array(G.Convert.FromHex(h.toString(16)));f[0]|=128,n.write(f)}else i[0]&128&&n.write(new Uint8Array([0])),n.write(i);return new r({valueHex:n.final()})}convertToDER(){let e=new r({valueHex:this.valueBlock.valueHexView});return e.valueBlock.toDER(),e}convertFromDER(){return new r({valueHex:this.valueBlock.valueHexView[0]===0?this.valueBlock.valueHexView.subarray(1):this.valueBlock.valueHexView})}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()}`}};sl=fe;T.Integer=sl;fe.NAME="INTEGER";var il,cs=class extends fe{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=10}};il=cs;T.Enumerated=il;cs.NAME="ENUMERATED";var hn=class extends _t(Ie){constructor({valueDec:e=-1,isFirstSid:t=!1,...n}={}){super(n),this.valueDec=e,this.isFirstSid=t}fromBER(e,t,n){if(!n)return t;let s=G.BufferSourceConverter.toUint8Array(e);if(!Bt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=or(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}set valueBigInt(e){Zn();let t=BigInt(e).toString(2);for(;t.length%7;)t="0"+t;let n=new Uint8Array(t.length/7);for(let s=0;s<n.length;s++)n[s]=parseInt(t.slice(s*7,s*7+7),2)+(s+1<n.length?128:0);this.fromBER(n.buffer,0,n.length)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Ft(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",et;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n}toString(){let e="";if(this.isHexOnly)e=G.Convert.ToHex(this.valueHexView);else if(this.isFirstSid){let t=this.valueDec;this.valueDec<=39?e="0.":this.valueDec<=79?(e="1.",t-=40):(e="2.",t-=80),e+=t.toString()}else e=this.valueDec.toString();return e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec,isFirstSid:this.isFirstSid}}};hn.NAME="sidBlock";var ls=class extends Ie{constructor({value:e=Or,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new hn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.value.length===0&&(i.isFirstSid=!0),this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e){let t=[];for(let n=0;n<this.value.length;n++){let s=this.value[n].toBER(e);if(s.byteLength===0)return this.error=this.value[n].error,et;t.push(s)}return Bo(t)}fromString(e){this.value=[];let t=0,n=0,s="",i=!1;do if(n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1,i){let o=this.value[0],a=0;switch(o.valueDec){case 0:break;case 1:a=40;break;case 2:a=80;break;default:this.value=[];return}let c=parseInt(s,10);if(isNaN(c))return;o.valueDec=c+a,i=!1}else{let o=new hn;if(s>Number.MAX_SAFE_INTEGER){Zn();let a=BigInt(s);o.valueBigInt=a}else if(o.valueDec=parseInt(s,10),isNaN(o.valueDec))return;this.value.length||(o.isFirstSid=!0,i=!0),this.value.push(o)}while(n!==-1)}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t?(s=`{${s}}`,this.value[n].isFirstSid?e=`2.{${s} - 80}`:e+=s):e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};ls.NAME="ObjectIdentifierValueBlock";var ol,Qe=class extends ve{constructor(e={}){super(e,ls),this.idBlock.tagClass=1,this.idBlock.tagNumber=6}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};ol=Qe;T.ObjectIdentifier=ol;Qe.NAME="OBJECT IDENTIFIER";var dn=class extends _t(Et){constructor({valueDec:e=0,...t}={}){super(t),this.valueDec=e}fromBER(e,t,n){if(n===0)return t;let s=G.BufferSourceConverter.toUint8Array(e);if(!Bt(this,s,t,n))return-1;let i=s.subarray(t,t+n);this.valueHexView=new Uint8Array(n);for(let a=0;a<n&&(this.valueHexView[a]=i[a]&127,this.blockLength++,!!(i[a]&128));a++);let o=new Uint8Array(this.blockLength);for(let a=0;a<this.blockLength;a++)o[a]=this.valueHexView[a];return this.valueHexView=o,i[this.blockLength-1]&128?(this.error="End of input reached before message was fully decoded",-1):(this.valueHexView[0]===0&&this.warnings.push("Needlessly long format of SID encoding"),this.blockLength<=8?this.valueDec=or(this.valueHexView,7):(this.isHexOnly=!0,this.warnings.push("Too big SID for decoding, hex only")),t+this.blockLength)}toBER(e){if(this.isHexOnly){if(e)return new ArrayBuffer(this.valueHexView.byteLength);let s=this.valueHexView,i=new Uint8Array(this.blockLength);for(let o=0;o<this.blockLength-1;o++)i[o]=s[o]|128;return i[this.blockLength-1]=s[this.blockLength-1],i.buffer}let t=Ft(this.valueDec,7);if(t.byteLength===0)return this.error="Error during encoding SID value",et;let n=new Uint8Array(t.byteLength);if(!e){let s=new Uint8Array(t),i=t.byteLength-1;for(let o=0;o<i;o++)n[o]=s[o]|128;n[i]=s[i]}return n.buffer}toString(){let e="";return this.isHexOnly?e=G.Convert.ToHex(this.valueHexView):e=this.valueDec.toString(),e}toJSON(){return{...super.toJSON(),valueDec:this.valueDec}}};dn.NAME="relativeSidBlock";var us=class extends Ie{constructor({value:e=Or,...t}={}){super(t),this.value=[],e&&this.fromString(e)}fromBER(e,t,n){let s=t;for(;n>0;){let i=new dn;if(s=i.fromBER(e,s,n),s===-1)return this.blockLength=0,this.error=i.error,s;this.blockLength+=i.blockLength,n-=i.blockLength,this.value.push(i)}return s}toBER(e,t){let n=[];for(let s=0;s<this.value.length;s++){let i=this.value[s].toBER(e);if(i.byteLength===0)return this.error=this.value[s].error,et;n.push(i)}return Bo(n)}fromString(e){this.value=[];let t=0,n=0,s="";do{n=e.indexOf(".",t),n===-1?s=e.substring(t):s=e.substring(t,n),t=n+1;let i=new dn;if(i.valueDec=parseInt(s,10),isNaN(i.valueDec))return!0;this.value.push(i)}while(n!==-1);return!0}toString(){let e="",t=!1;for(let n=0;n<this.value.length;n++){t=this.value[n].isHexOnly;let s=this.value[n].toString();n!==0&&(e=`${e}.`),t&&(s=`{${s}}`),e+=s}return e}toJSON(){let e={...super.toJSON(),value:this.toString(),sidArray:[]};for(let t=0;t<this.value.length;t++)e.sidArray.push(this.value[t].toJSON());return e}};us.NAME="RelativeObjectIdentifierValueBlock";var al,fs=class extends ve{constructor(e={}){super(e,us),this.idBlock.tagClass=1,this.idBlock.tagNumber=13}getValue(){return this.valueBlock.toString()}setValue(e){this.valueBlock.fromString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.valueBlock.toString()||"empty"}`}toJSON(){return{...super.toJSON(),value:this.getValue()}}};al=fs;T.RelativeObjectIdentifier=al;fs.NAME="RelativeObjectIdentifier";var cl,ye=class extends Kt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=16}};cl=ye;T.Sequence=cl;ye.NAME="SEQUENCE";var ll,hs=class extends Kt{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=17}};ll=hs;T.Set=ll;hs.NAME="SET";var ds=class extends _t(Ie){constructor({...e}={}){super(e),this.isHexOnly=!0,this.value=Or}toJSON(){return{...super.toJSON(),value:this.value}}};ds.NAME="StringValueBlock";var ps=class extends ds{};ps.NAME="SimpleStringValueBlock";var Re=class extends Qn{constructor({...e}={}){super(e,ps)}fromBuffer(e){this.valueBlock.value=String.fromCharCode.apply(null,G.BufferSourceConverter.toUint8Array(e))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t);for(let s=0;s<t;s++)n[s]=e.charCodeAt(s);this.valueBlock.value=e}};Re.NAME="SIMPLE STRING";var gs=class extends Re{fromBuffer(e){this.valueBlock.valueHexView=G.BufferSourceConverter.toUint8Array(e);try{this.valueBlock.value=G.Convert.ToUtf8String(e)}catch(t){this.warnings.push(`Error during "decodeURIComponent": ${t}, using raw string`),this.valueBlock.value=G.Convert.ToBinary(e)}}fromString(e){this.valueBlock.valueHexView=new Uint8Array(G.Convert.FromUtf8String(e)),this.valueBlock.value=e}};gs.NAME="Utf8StringValueBlock";var ul,St=class extends gs{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=12}};ul=St;T.Utf8String=ul;St.NAME="UTF8String";var ms=class extends Re{fromBuffer(e){this.valueBlock.value=G.Convert.ToUtf16String(e),this.valueBlock.valueHexView=G.BufferSourceConverter.toUint8Array(e)}fromString(e){this.valueBlock.value=e,this.valueBlock.valueHexView=new Uint8Array(G.Convert.FromUtf16String(e))}};ms.NAME="BmpStringValueBlock";var fl,ys=class extends ms{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=30}};fl=ys;T.BmpString=fl;ys.NAME="BMPString";var bs=class extends Re{fromBuffer(e){let t=ArrayBuffer.isView(e)?e.slice().buffer:e.slice(0),n=new Uint8Array(t);for(let s=0;s<n.length;s+=4)n[s]=n[s+3],n[s+1]=n[s+2],n[s+2]=0,n[s+3]=0;this.valueBlock.value=String.fromCharCode.apply(null,new Uint32Array(t))}fromString(e){let t=e.length,n=this.valueBlock.valueHexView=new Uint8Array(t*4);for(let s=0;s<t;s++){let i=Ft(e.charCodeAt(s),8),o=new Uint8Array(i);if(o.length>4)continue;let a=4-o.length;for(let c=o.length-1;c>=0;c--)n[s*4+c+a]=o[c]}this.valueBlock.value=e}};bs.NAME="UniversalStringValueBlock";var hl,ws=class extends bs{constructor({...e}={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=28}};hl=ws;T.UniversalString=hl;ws.NAME="UniversalString";var dl,xs=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=18}};dl=xs;T.NumericString=dl;xs.NAME="NumericString";var pl,vs=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=19}};pl=vs;T.PrintableString=pl;vs.NAME="PrintableString";var gl,Es=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=20}};gl=Es;T.TeletexString=gl;Es.NAME="TeletexString";var ml,As=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=21}};ml=As;T.VideotexString=ml;As.NAME="VideotexString";var yl,Ss=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=22}};yl=Ss;T.IA5String=yl;Ss.NAME="IA5String";var bl,Bs=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=25}};bl=Bs;T.GraphicString=bl;Bs.NAME="GraphicString";var wl,pn=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=26}};wl=pn;T.VisibleString=wl;pn.NAME="VisibleString";var xl,_s=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=27}};xl=_s;T.GeneralString=xl;_s.NAME="GeneralString";var vl,Is=class extends Re{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=29}};vl=Is;T.CharacterString=vl;Is.NAME="CharacterString";var El,gn=class extends pn{constructor({value:e,valueDate:t,...n}={}){if(super(n),this.year=0,this.month=0,this.day=0,this.hour=0,this.minute=0,this.second=0,e){this.fromString(e),this.valueBlock.valueHexView=new Uint8Array(e.length);for(let s=0;s<e.length;s++)this.valueBlock.valueHexView[s]=e.charCodeAt(s)}t&&(this.fromDate(t),this.valueBlock.valueHexView=new Uint8Array(this.toBuffer())),this.idBlock.tagClass=1,this.idBlock.tagNumber=23}fromBuffer(e){this.fromString(String.fromCharCode.apply(null,G.BufferSourceConverter.toUint8Array(e)))}toBuffer(){let e=this.toString(),t=new ArrayBuffer(e.length),n=new Uint8Array(t);for(let s=0;s<e.length;s++)n[s]=e.charCodeAt(s);return t}fromDate(e){this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second))}fromString(e){let n=/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z/ig.exec(e);if(n===null){this.error="Wrong input string for conversion";return}let s=parseInt(n[1],10);s>=50?this.year=1900+s:this.year=2e3+s,this.month=parseInt(n[2],10),this.day=parseInt(n[3],10),this.hour=parseInt(n[4],10),this.minute=parseInt(n[5],10),this.second=parseInt(n[6],10)}toString(e="iso"){if(e==="iso"){let t=new Array(7);return t[0]=Ce(this.year<2e3?this.year-1900:this.year-2e3,2),t[1]=Ce(this.month,2),t[2]=Ce(this.day,2),t[3]=Ce(this.hour,2),t[4]=Ce(this.minute,2),t[5]=Ce(this.second,2),t[6]="Z",t.join("")}return super.toString(e)}onAsciiEncoding(){return`${this.constructor.NAME} : ${this.toDate().toISOString()}`}toJSON(){return{...super.toJSON(),year:this.year,month:this.month,day:this.day,hour:this.hour,minute:this.minute,second:this.second}}};El=gn;T.UTCTime=El;gn.NAME="UTCTime";var Al,ks=class extends gn{constructor(e={}){var t;super(e),(t=this.millisecond)!==null&&t!==void 0||(this.millisecond=0),this.idBlock.tagClass=1,this.idBlock.tagNumber=24}fromDate(e){super.fromDate(e),this.millisecond=e.getUTCMilliseconds()}toDate(){return new Date(Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second,this.millisecond))}fromString(e){let t=!1,n="",s="",i=0,o,a=0,c=0;if(e[e.length-1]==="Z")n=e.substring(0,e.length-1),t=!0;else{let l=new Number(e[e.length-1]);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");n=e}if(t){if(n.indexOf("+")!==-1)throw new Error("Wrong input string for conversion");if(n.indexOf("-")!==-1)throw new Error("Wrong input string for conversion")}else{let l=1,m=n.indexOf("+"),u="";if(m===-1&&(m=n.indexOf("-"),l=-1),m!==-1){if(u=n.substring(m+1),n=n.substring(0,m),u.length!==2&&u.length!==4)throw new Error("Wrong input string for conversion");let d=parseInt(u.substring(0,2),10);if(isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");if(a=l*d,u.length===4){if(d=parseInt(u.substring(2,4),10),isNaN(d.valueOf()))throw new Error("Wrong input string for conversion");c=l*d}}}let h=n.indexOf(".");if(h===-1&&(h=n.indexOf(",")),h!==-1){let l=new Number(`0${n.substring(h)}`);if(isNaN(l.valueOf()))throw new Error("Wrong input string for conversion");i=l.valueOf(),s=n.substring(0,h)}else s=n;switch(!0){case s.length===8:if(o=/(\d{4})(\d{2})(\d{2})/ig,h!==-1)throw new Error("Wrong input string for conversion");break;case s.length===10:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let l=60*i;this.minute=Math.floor(l),l=60*(l-this.minute),this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case s.length===12:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let l=60*i;this.second=Math.floor(l),l=1e3*(l-this.second),this.millisecond=Math.floor(l)}break;case s.length===14:if(o=/(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})/ig,h!==-1){let l=1e3*i;this.millisecond=Math.floor(l)}break;default:throw new Error("Wrong input string for conversion")}let f=o.exec(s);if(f===null)throw new Error("Wrong input string for conversion");for(let l=1;l<f.length;l++)switch(l){case 1:this.year=parseInt(f[l],10);break;case 2:this.month=parseInt(f[l],10);break;case 3:this.day=parseInt(f[l],10);break;case 4:this.hour=parseInt(f[l],10)+a;break;case 5:this.minute=parseInt(f[l],10)+c;break;case 6:this.second=parseInt(f[l],10);break;default:throw new Error("Wrong input string for conversion")}if(t===!1){let l=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.millisecond);this.year=l.getUTCFullYear(),this.month=l.getUTCMonth(),this.day=l.getUTCDay(),this.hour=l.getUTCHours(),this.minute=l.getUTCMinutes(),this.second=l.getUTCSeconds(),this.millisecond=l.getUTCMilliseconds()}}toString(e="iso"){if(e==="iso"){let t=[];return t.push(Ce(this.year,4)),t.push(Ce(this.month,2)),t.push(Ce(this.day,2)),t.push(Ce(this.hour,2)),t.push(Ce(this.minute,2)),t.push(Ce(this.second,2)),this.millisecond!==0&&(t.push("."),t.push(Ce(this.millisecond,3))),t.push("Z"),t.join("")}return super.toString(e)}toJSON(){return{...super.toJSON(),millisecond:this.millisecond}}};Al=ks;T.GeneralizedTime=Al;ks.NAME="GeneralizedTime";var Sl,Ts=class extends St{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=31}};Sl=Ts;T.DATE=Sl;Ts.NAME="DATE";var Bl,Rs=class extends St{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=32}};Bl=Rs;T.TimeOfDay=Bl;Rs.NAME="TimeOfDay";var _l,Ns=class extends St{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=33}};_l=Ns;T.DateTime=_l;Ns.NAME="DateTime";var Il,Cs=class extends St{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=34}};Il=Cs;T.Duration=Il;Cs.NAME="Duration";var kl,Ls=class extends St{constructor(e={}){super(e),this.idBlock.tagClass=1,this.idBlock.tagNumber=14}};kl=Ls;T.TIME=kl;Ls.NAME="TIME";function Jd(r){let{result:e}=Pr(r),t=e.valueBlock.value;return{n:W(lt(t[1].toBigInt()),"base64url"),e:W(lt(t[2].toBigInt()),"base64url"),d:W(lt(t[3].toBigInt()),"base64url"),p:W(lt(t[4].toBigInt()),"base64url"),q:W(lt(t[5].toBigInt()),"base64url"),dp:W(lt(t[6].toBigInt()),"base64url"),dq:W(lt(t[7].toBigInt()),"base64url"),qi:W(lt(t[8].toBigInt()),"base64url"),kty:"RSA",alg:"RS256"}}function Qd(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new U("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new ye({value:[new fe({value:0}),fe.fromBigInt(ut(M(r.n,"base64url"))),fe.fromBigInt(ut(M(r.e,"base64url"))),fe.fromBigInt(ut(M(r.d,"base64url"))),fe.fromBigInt(ut(M(r.p,"base64url"))),fe.fromBigInt(ut(M(r.q,"base64url"))),fe.fromBigInt(ut(M(r.dp,"base64url"))),fe.fromBigInt(ut(M(r.dq,"base64url"))),fe.fromBigInt(ut(M(r.qi,"base64url")))]}).toBER();return new Uint8Array(t,0,t.byteLength)}function ep(r){let{result:e}=Pr(r),t=e.valueBlock.value[1].valueBlock.value[0].valueBlock.value;return{kty:"RSA",n:W(lt(t[0].toBigInt()),"base64url"),e:W(lt(t[1].toBigInt()),"base64url")}}function tp(r){if(r.n==null||r.e==null)throw new U("JWK was missing components","ERR_INVALID_PARAMETERS");let t=new ye({value:[new ye({value:[new Qe({value:"1.2.840.113549.1.1.1"}),new qt]}),new Dr({valueHex:new ye({value:[fe.fromBigInt(ut(M(r.n,"base64url"))),fe.fromBigInt(ut(M(r.e,"base64url")))]}).toBER()})]}).toBER();return new Uint8Array(t,0,t.byteLength)}function lt(r){let e=r.toString(16);e.length%2>0&&(e=`0${e}`);let t=e.length/2,n=new Uint8Array(t),s=0,i=0;for(;s<t;)n[s]=parseInt(e.slice(i,i+2),16),s+=1,i+=2;return n}function ut(r){let e=[];return r.forEach(function(t){let n=t.toString(16);n.length%2>0&&(n=`0${n}`),e.push(n)}),BigInt("0x"+e.join(""))}var rp=16,Io=32,ko=1e4;async function np(r,e){let t=Te.get(),s=new ye({value:[new fe({value:0}),new ye({value:[new Qe({value:"1.2.840.113549.1.1.1"}),new qt]}),new At({valueHex:r.marshal()})]}).toBER(),i=new Uint8Array(s,0,s.byteLength),o=at(rp),a=await Eo(Qr,e,o,{c:ko,dkLen:Io}),c=at(16),h=await t.subtle.importKey("raw",a,"AES-CBC",!1,["encrypt"]),f=await t.subtle.encrypt({name:"AES-CBC",iv:c},h,i),l=new ye({value:[new At({valueHex:o}),new fe({value:ko}),new fe({value:Io}),new ye({value:[new Qe({value:"1.2.840.113549.2.11"}),new qt]})]}),m=new ye({value:[new Qe({value:"1.2.840.113549.1.5.13"}),new ye({value:[new ye({value:[new Qe({value:"1.2.840.113549.1.5.12"}),l]}),new ye({value:[new Qe({value:"2.16.840.1.101.3.4.1.42"}),new At({valueHex:c})]})]})]}),d=new ye({value:[m,new At({valueHex:f})]}).toBER(),p=new Uint8Array(d,0,d.byteLength);return["-----BEGIN ENCRYPTED PRIVATE KEY-----",...W(p,"base64pad").split(/(.{64})/).filter(Boolean),"-----END ENCRYPTED PRIVATE KEY-----"].join(`
7
- `)}async function sp(r,e){let t=Te.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=M(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Pr(s),{iv:o,salt:a,iterations:c,keySize:h,cipherText:f}=ip(i),l=await Eo(Qr,e,a,{c,dkLen:h}),m=await t.subtle.importKey("raw",l,"AES-CBC",!1,["decrypt"]),u=mn(await t.subtle.decrypt({name:"AES-CBC",iv:o},m,f)),{result:d}=Pr(u);n=Tl(d)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=M(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Pr(s);n=Tl(i)}else throw new U("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return To(n)}function ip(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new U("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new U("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let i=n.valueBlock.value[1],o=mn(i.valueBlock.value[0].getValue()),a=ko,c=Io;if(i.valueBlock.value.length===3)a=Number(i.valueBlock.value[1].toBigInt()),c=Number(i.valueBlock.value[2].toBigInt());else if(i.valueBlock.value.length===2)throw new U("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let h=e.valueBlock.value[1].valueBlock.value[1],f=h.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new U("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let l=mn(h.valueBlock.value[1].getValue());return{cipherText:mn(r.valueBlock.value[1].getValue()),salt:o,iterations:a,keySize:c,iv:l}}function Tl(r){return mn(r.valueBlock.value[2].getValue())}function mn(r){return new Uint8Array(r,0,r.byteLength)}async function Rl(r){let e=await Te.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await Ll(e);return{privateKey:t[0],publicKey:t[1]}}async function Ro(r){let t=[await Te.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await op(r)],n=await Ll({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function Nl(r,e){let t=await Te.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Te.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Cl(r,e,t){let n=await Te.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Te.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function Ll(r){if(r.privateKey==null||r.publicKey==null)throw new U("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([Te.get().subtle.exportKey("jwk",r.privateKey),Te.get().subtle.exportKey("jwk",r.publicKey)])}async function op(r){return Te.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Ds(r){if(r.kty!=="RSA")throw new U("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new U("invalid key modulus","ERR_INVALID_KEY_MODULUS");return M(r.n,"base64url").length*8}var bn=8192,yn=class{_key;constructor(e){this._key=e}verify(e,t){return Cl(this._key,t,e)}marshal(){return zt.jwkToPkix(this._key)}get bytes(){return it.encode({Type:se.RSA,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}hash(){let e=me.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},Mr=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return at(16)}sign(e){return Nl(this._key,e)}get public(){if(this._publicKey==null)throw new U("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new yn(this._publicKey)}marshal(){return zt.jwkToPkcs1(this._key)}get bytes(){return ot.encode({Type:se.RSA,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}hash(){let e=me.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return W(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return zt.exportToPem(this,e);if(t==="libp2p-key")return Nr(this.bytes,e);throw new U(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function To(r){let e=zt.pkcs1ToJwk(r);if(Ds(e)>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Ro(e);return new Mr(t.privateKey,t.publicKey)}function cp(r){let e=zt.pkixToJwk(r);if(Ds(e)>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new yn(e)}async function lp(r){if(Ds(r)>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Ro(r);return new Mr(e.privateKey,e.publicKey)}async function up(r){if(r>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Rl(r);return new Mr(e.privateKey,e.publicKey)}var Oo={};ge(Oo,{Secp256k1PrivateKey:()=>xn,Secp256k1PublicKey:()=>wn,generateKeyPair:()=>Ap,unmarshalSecp256k1PrivateKey:()=>vp,unmarshalSecp256k1PublicKey:()=>Ep});var fp=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),Co=class extends Ir{constructor(){super(64,32,8,!1),this.A=$t[0]|0,this.B=$t[1]|0,this.C=$t[2]|0,this.D=$t[3]|0,this.E=$t[4]|0,this.F=$t[5]|0,this.G=$t[6]|0,this.H=$t[7]|0}get(){let{A:e,B:t,C:n,D:s,E:i,F:o,G:a,H:c}=this;return[e,t,n,s,i,o,a,c]}set(e,t,n,s,i,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=i|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let l=0;l<16;l++,t+=4)Gt[l]=e.getUint32(t,!1);for(let l=16;l<64;l++){let m=Gt[l-15],u=Gt[l-2],d=Ze(m,7)^Ze(m,18)^m>>>3,p=Ze(u,17)^Ze(u,19)^u>>>10;Gt[l]=p+Gt[l-7]+d+Gt[l-16]|0}let{A:n,B:s,C:i,D:o,E:a,F:c,G:h,H:f}=this;for(let l=0;l<64;l++){let m=Ze(a,6)^Ze(a,11)^Ze(a,25),u=f+m+hc(a,c,h)+fp[l]+Gt[l]|0,p=(Ze(n,2)^Ze(n,13)^Ze(n,22))+dc(n,s,i)|0;f=h,h=c,c=a,a=o+u|0,o=i,i=s,s=n,n=u+p|0}n=n+this.A|0,s=s+this.B|0,i=i+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,h=h+this.G|0,f=f+this.H|0,this.set(n,s,i,o,a,c,h,f)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ul=Cn(()=>new Co);function hp(r){let e=tn(r);st(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:dp,hexToBytes:pp}=Dn,ar={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=ar;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:dp(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=ar,t=typeof r=="string"?pp(r):r;kr(t);let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:s,l:i}=ar._parseInt(t.subarray(2)),{d:o,l:a}=ar._parseInt(i);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:s,s:o}},hexFromSig(r){let e=h=>Number.parseInt(h[0],16)&8?"00"+h:h,t=h=>{let f=h.toString(16);return f.length&1?`0${f}`:f},n=e(t(r.s)),s=e(t(r.r)),i=n.length/2,o=s.length/2,a=t(i),c=t(o);return`30${t(o+i+4)}02${c}${s}02${a}${n}`}},It=BigInt(0),We=BigInt(1),bb=BigInt(2),Dl=BigInt(3),wb=BigInt(4);function gp(r){let e=hp(r),{Fp:t}=e,n=e.toBytes||((d,p,b)=>{let g=p.toAffine();return bt(Uint8Array.from([4]),t.toBytes(g.x),t.toBytes(g.y))}),s=e.fromBytes||(d=>{let p=d.subarray(1),b=t.fromBytes(p.subarray(0,t.BYTES)),g=t.fromBytes(p.subarray(t.BYTES,2*t.BYTES));return{x:b,y:g}});function i(d){let{a:p,b}=e,g=t.sqr(d),w=t.mul(g,d);return t.add(t.add(w,t.mul(d,p)),b)}if(!t.eql(t.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function o(d){return typeof d=="bigint"&&It<d&&d<e.n}function a(d){if(!o(d))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(d){let{allowedPrivateKeyLengths:p,nByteLength:b,wrapPrivateKey:g,n:w}=e;if(p&&typeof d!="bigint"){if(Pt(d)&&(d=mt(d)),typeof d!="string"||!p.includes(d.length))throw new Error("Invalid key");d=d.padStart(b*2,"0")}let y;try{y=typeof d=="bigint"?d:yt(ce("private key",d,b))}catch{throw new Error(`private key must be ${b} bytes, hex or bigint, not ${typeof d}`)}return g&&(y=Q(y,w)),a(y),y}let h=new Map;function f(d){if(!(d instanceof l))throw new Error("ProjectivePoint expected")}class l{constructor(p,b,g){if(this.px=p,this.py=b,this.pz=g,p==null||!t.isValid(p))throw new Error("x required");if(b==null||!t.isValid(b))throw new Error("y required");if(g==null||!t.isValid(g))throw new Error("z required")}static fromAffine(p){let{x:b,y:g}=p||{};if(!p||!t.isValid(b)||!t.isValid(g))throw new Error("invalid affine point");if(p instanceof l)throw new Error("projective point not allowed");let w=y=>t.eql(y,t.ZERO);return w(b)&&w(g)?l.ZERO:new l(b,g,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let b=t.invertBatch(p.map(g=>g.pz));return p.map((g,w)=>g.toAffine(b[w])).map(l.fromAffine)}static fromHex(p){let b=l.fromAffine(s(ce("pointHex",p)));return b.assertValidity(),b}static fromPrivateKey(p){return l.BASE.multiply(c(p))}_setWindowSize(p){this._WINDOW_SIZE=p,h.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:p,y:b}=this.toAffine();if(!t.isValid(p)||!t.isValid(b))throw new Error("bad point: x or y not FE");let g=t.sqr(b),w=i(p);if(!t.eql(g,w))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:p}=this.toAffine();if(t.isOdd)return!t.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){f(p);let{px:b,py:g,pz:w}=this,{px:y,py:E,pz:x}=p,S=t.eql(t.mul(b,x),t.mul(y,w)),v=t.eql(t.mul(g,x),t.mul(E,w));return S&&v}negate(){return new l(this.px,t.neg(this.py),this.pz)}double(){let{a:p,b}=e,g=t.mul(b,Dl),{px:w,py:y,pz:E}=this,x=t.ZERO,S=t.ZERO,v=t.ZERO,B=t.mul(w,w),$=t.mul(y,y),q=t.mul(E,E),P=t.mul(w,y);return P=t.add(P,P),v=t.mul(w,E),v=t.add(v,v),x=t.mul(p,v),S=t.mul(g,q),S=t.add(x,S),x=t.sub($,S),S=t.add($,S),S=t.mul(x,S),x=t.mul(P,x),v=t.mul(g,v),q=t.mul(p,q),P=t.sub(B,q),P=t.mul(p,P),P=t.add(P,v),v=t.add(B,B),B=t.add(v,B),B=t.add(B,q),B=t.mul(B,P),S=t.add(S,B),q=t.mul(y,E),q=t.add(q,q),B=t.mul(q,P),x=t.sub(x,B),v=t.mul(q,$),v=t.add(v,v),v=t.add(v,v),new l(x,S,v)}add(p){f(p);let{px:b,py:g,pz:w}=this,{px:y,py:E,pz:x}=p,S=t.ZERO,v=t.ZERO,B=t.ZERO,$=e.a,q=t.mul(e.b,Dl),P=t.mul(b,y),te=t.mul(g,E),C=t.mul(w,x),Ke=t.add(b,g),_=t.add(y,E);Ke=t.mul(Ke,_),_=t.add(P,te),Ke=t.sub(Ke,_),_=t.add(b,w);let N=t.add(y,x);return _=t.mul(_,N),N=t.add(P,C),_=t.sub(_,N),N=t.add(g,w),S=t.add(E,x),N=t.mul(N,S),S=t.add(te,C),N=t.sub(N,S),B=t.mul($,_),S=t.mul(q,C),B=t.add(S,B),S=t.sub(te,B),B=t.add(te,B),v=t.mul(S,B),te=t.add(P,P),te=t.add(te,P),C=t.mul($,C),_=t.mul(q,_),te=t.add(te,C),C=t.sub(P,C),C=t.mul($,C),_=t.add(_,C),P=t.mul(te,_),v=t.add(v,P),P=t.mul(N,_),S=t.mul(Ke,S),S=t.sub(S,P),P=t.mul(Ke,te),B=t.mul(N,B),B=t.add(B,P),new l(S,v,B)}subtract(p){return this.add(p.negate())}is0(){return this.equals(l.ZERO)}wNAF(p){return u.wNAFCached(this,h,p,b=>{let g=t.invertBatch(b.map(w=>w.pz));return b.map((w,y)=>w.toAffine(g[y])).map(l.fromAffine)})}multiplyUnsafe(p){let b=l.ZERO;if(p===It)return b;if(a(p),p===We)return this;let{endo:g}=e;if(!g)return u.unsafeLadder(this,p);let{k1neg:w,k1:y,k2neg:E,k2:x}=g.splitScalar(p),S=b,v=b,B=this;for(;y>It||x>It;)y&We&&(S=S.add(B)),x&We&&(v=v.add(B)),B=B.double(),y>>=We,x>>=We;return w&&(S=S.negate()),E&&(v=v.negate()),v=new l(t.mul(v.px,g.beta),v.py,v.pz),S.add(v)}multiply(p){a(p);let b=p,g,w,{endo:y}=e;if(y){let{k1neg:E,k1:x,k2neg:S,k2:v}=y.splitScalar(b),{p:B,f:$}=this.wNAF(x),{p:q,f:P}=this.wNAF(v);B=u.constTimeNegate(E,B),q=u.constTimeNegate(S,q),q=new l(t.mul(q.px,y.beta),q.py,q.pz),g=B.add(q),w=$.add(P)}else{let{p:E,f:x}=this.wNAF(b);g=E,w=x}return l.normalizeZ([g,w])[0]}multiplyAndAddUnsafe(p,b,g){let w=l.BASE,y=(x,S)=>S===It||S===We||!x.equals(w)?x.multiplyUnsafe(S):x.multiply(S),E=y(this,b).add(y(p,g));return E.is0()?void 0:E}toAffine(p){let{px:b,py:g,pz:w}=this,y=this.is0();p==null&&(p=y?t.ONE:t.inv(w));let E=t.mul(b,p),x=t.mul(g,p),S=t.mul(w,p);if(y)return{x:t.ZERO,y:t.ZERO};if(!t.eql(S,t.ONE))throw new Error("invZ was invalid");return{x:E,y:x}}isTorsionFree(){let{h:p,isTorsionFree:b}=e;if(p===We)return!0;if(b)return b(l,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:b}=e;return p===We?this:b?b(l,this):this.multiplyUnsafe(e.h)}toRawBytes(p=!0){return this.assertValidity(),n(l,this,p)}toHex(p=!0){return mt(this.toRawBytes(p))}}l.BASE=new l(e.Gx,e.Gy,t.ONE),l.ZERO=new l(t.ZERO,t.ONE,t.ZERO);let m=e.nBitLength,u=Mn(l,e.endo?Math.ceil(m/2):m);return{CURVE:e,ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:o}}function mp(r){let e=tn(r);return st(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function Ol(r){let e=mp(r),{Fp:t,n}=e,s=t.BYTES+1,i=2*t.BYTES+1;function o(_){return It<_&&_<t.ORDER}function a(_){return Q(_,n)}function c(_){return On(_,n)}let{ProjectivePoint:h,normPrivateKeyToScalar:f,weierstrassEquation:l,isWithinCurveOrder:m}=gp({...e,toBytes(_,N,H){let I=N.toAffine(),A=t.toBytes(I.x),R=bt;return H?R(Uint8Array.from([N.hasEvenY()?2:3]),A):R(Uint8Array.from([4]),A,t.toBytes(I.y))},fromBytes(_){let N=_.length,H=_[0],I=_.subarray(1);if(N===s&&(H===2||H===3)){let A=yt(I);if(!o(A))throw new Error("Point is not on curve");let R=l(A),L;try{L=t.sqrt(R)}catch(K){let Z=K instanceof Error?": "+K.message:"";throw new Error("Point is not on curve"+Z)}let O=(L&We)===We;return(H&1)===1!==O&&(L=t.neg(L)),{x:A,y:L}}else if(N===i&&H===4){let A=t.fromBytes(I.subarray(0,t.BYTES)),R=t.fromBytes(I.subarray(t.BYTES,2*t.BYTES));return{x:A,y:R}}else throw new Error(`Point of length ${N} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),u=_=>mt(Vt(_,e.nByteLength));function d(_){let N=n>>We;return _>N}function p(_){return d(_)?a(-_):_}let b=(_,N,H)=>yt(_.slice(N,H));class g{constructor(N,H,I){this.r=N,this.s=H,this.recovery=I,this.assertValidity()}static fromCompact(N){let H=e.nByteLength;return N=ce("compactSignature",N,H*2),new g(b(N,0,H),b(N,H,2*H))}static fromDER(N){let{r:H,s:I}=ar.toSig(ce("DER",N));return new g(H,I)}assertValidity(){if(!m(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!m(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(N){return new g(this.r,this.s,N)}recoverPublicKey(N){let{r:H,s:I,recovery:A}=this,R=v(ce("msgHash",N));if(A==null||![0,1,2,3].includes(A))throw new Error("recovery id invalid");let L=A===2||A===3?H+e.n:H;if(L>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let O=A&1?"03":"02",F=h.fromHex(O+u(L)),K=c(L),Z=a(-R*K),j=a(I*K),Y=h.BASE.multiplyAndAddUnsafe(F,Z,j);if(!Y)throw new Error("point at infinify");return Y.assertValidity(),Y}hasHighS(){return d(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return Qt(this.toDERHex())}toDERHex(){return ar.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Qt(this.toCompactHex())}toCompactHex(){return u(this.r)+u(this.s)}}let w={isValidPrivateKey(_){try{return f(_),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let _=Ji(e.n);return Ac(e.randomBytes(_),e.n)},precompute(_=8,N=h.BASE){return N._setWindowSize(_),N.multiply(BigInt(3)),N}};function y(_,N=!0){return h.fromPrivateKey(_).toRawBytes(N)}function E(_){let N=Pt(_),H=typeof _=="string",I=(N||H)&&_.length;return N?I===s||I===i:H?I===2*s||I===2*i:_ instanceof h}function x(_,N,H=!0){if(E(_))throw new Error("first arg must be private key");if(!E(N))throw new Error("second arg must be public key");return h.fromHex(N).multiply(f(_)).toRawBytes(H)}let S=e.bits2int||function(_){let N=yt(_),H=_.length*8-e.nBitLength;return H>0?N>>BigInt(H):N},v=e.bits2int_modN||function(_){return a(S(_))},B=en(e.nBitLength);function $(_){if(typeof _!="bigint")throw new Error("bigint expected");if(!(It<=_&&_<B))throw new Error(`bigint expected < 2^${e.nBitLength}`);return Vt(_,e.nByteLength)}function q(_,N,H=P){if(["recovered","canonical"].some(ie=>ie in H))throw new Error("sign() legacy options not supported");let{hash:I,randomBytes:A}=e,{lowS:R,prehash:L,extraEntropy:O}=H;R==null&&(R=!0),_=ce("msgHash",_),L&&(_=ce("prehashed msgHash",I(_)));let F=v(_),K=f(N),Z=[$(K),$(F)];if(O!=null&&O!==!1){let ie=O===!0?A(t.BYTES):O;Z.push(ce("extraEntropy",ie))}let j=bt(...Z),Y=F;function ue(ie){let be=S(ie);if(!m(be))return;let we=c(be),he=h.BASE.multiply(be).toAffine(),Ae=a(he.x);if(Ae===It)return;let ft=a(we*a(Y+Ae*K));if(ft===It)return;let Zt=(he.x===Ae?0:2)|Number(he.y&We),jr=ft;return R&&d(ft)&&(jr=p(ft),Zt^=1),new g(Ae,jr,Zt)}return{seed:j,k2sig:ue}}let P={lowS:e.lowS,prehash:!1},te={lowS:e.lowS,prehash:!1};function C(_,N,H=P){let{seed:I,k2sig:A}=q(_,N,H),R=e;return Wi(R.hash.outputLen,R.nByteLength,R.hmac)(I,A)}h.BASE._setWindowSize(8);function Ke(_,N,H,I=te){let A=_;if(N=ce("msgHash",N),H=ce("publicKey",H),"strict"in I)throw new Error("options.strict was renamed to lowS");let{lowS:R,prehash:L}=I,O,F;try{if(typeof A=="string"||Pt(A))try{O=g.fromDER(A)}catch(he){if(!(he instanceof ar.Err))throw he;O=g.fromCompact(A)}else if(typeof A=="object"&&typeof A.r=="bigint"&&typeof A.s=="bigint"){let{r:he,s:Ae}=A;O=new g(he,Ae)}else throw new Error("PARSE");F=h.fromHex(H)}catch(he){if(he.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(R&&O.hasHighS())return!1;L&&(N=e.hash(N));let{r:K,s:Z}=O,j=v(N),Y=c(Z),ue=a(j*Y),ie=a(K*Y),be=h.BASE.multiplyAndAddUnsafe(F,ue,ie)?.toAffine();return be?a(be.x)===K:!1}return{CURVE:e,getPublicKey:y,getSharedSecret:x,sign:C,verify:Ke,ProjectivePoint:h,Signature:g,utils:w}}function yp(r){return{hash:r,hmac:(e,...t)=>an(r,e,qi(...t)),randomBytes:_r}}function Pl(r,e){let t=n=>Ol({...r,...yp(n)});return Object.freeze({...t(e),create:t})}var Hl=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Ml=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),bp=BigInt(1),Lo=BigInt(2),Vl=(r,e)=>(r+e/Lo)/e;function wp(r){let e=Hl,t=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),h=r*r*r%e,f=h*h*r%e,l=ne(f,t,e)*f%e,m=ne(l,t,e)*f%e,u=ne(m,Lo,e)*h%e,d=ne(u,s,e)*u%e,p=ne(d,i,e)*d%e,b=ne(p,a,e)*p%e,g=ne(b,c,e)*b%e,w=ne(g,a,e)*p%e,y=ne(w,t,e)*f%e,E=ne(y,o,e)*d%e,x=ne(E,n,e)*h%e,S=ne(x,Lo,e);if(!Uo.eql(Uo.sqr(S),r))throw new Error("Cannot find square root");return S}var Uo=Pn(Hl,void 0,void 0,{sqrt:wp}),tt=Pl({a:BigInt(0),b:BigInt(7),Fp:Uo,n:Ml,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=Ml,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-bp*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=t,o=BigInt("0x100000000000000000000000000000000"),a=Vl(i*r,e),c=Vl(-n*r,e),h=Q(r-a*t-c*s,e),f=Q(-a*n-c*i,e),l=h>o,m=f>o;if(l&&(h=e-h),m&&(f=e-f),h>o||f>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:l,k1:h,k2neg:m,k2:f}}}},Ul),kb=BigInt(0);var Tb=tt.ProjectivePoint;function Fl(){return tt.utils.randomPrivateKey()}function Kl(r,e){let t=me.digest(e instanceof Uint8Array?e:e.subarray());if($e(t))return t.then(({digest:n})=>tt.sign(n,r).toDERRawBytes()).catch(n=>{throw new U(String(n),"ERR_INVALID_INPUT")});try{return tt.sign(t.digest,r).toDERRawBytes()}catch(n){throw new U(String(n),"ERR_INVALID_INPUT")}}function ql(r,e,t){let n=me.digest(t instanceof Uint8Array?t:t.subarray());if($e(n))return n.then(({digest:s})=>tt.verify(e,s,r)).catch(s=>{throw new U(String(s),"ERR_INVALID_INPUT")});try{return tt.verify(e,n.digest,r)}catch(s){throw new U(String(s),"ERR_INVALID_INPUT")}}function zl(r){return tt.ProjectivePoint.fromHex(r).toRawBytes(!0)}function $l(r){try{tt.getPublicKey(r,!0)}catch(e){throw new U(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Do(r){try{tt.ProjectivePoint.fromHex(r)}catch(e){throw new U(String(e),"ERR_INVALID_PUBLIC_KEY")}}function Gl(r){try{return tt.getPublicKey(r,!0)}catch(e){throw new U(String(e),"ERR_INVALID_PRIVATE_KEY")}}var wn=class{_key;constructor(e){Do(e),this._key=e}verify(e,t){return ql(this._key,t,e)}marshal(){return zl(this._key)}get bytes(){return it.encode({Type:se.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}async hash(){let e=me.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}},xn=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??Gl(e),$l(this._key),Do(this._publicKey)}sign(e){return Kl(this._key,e)}get public(){return new wn(this._publicKey)}marshal(){return this._key}get bytes(){return ot.encode({Type:se.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}hash(){let e=me.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return W(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Nr(this.bytes,e);throw new U(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function vp(r){return new xn(r)}function Ep(r){return new wn(r)}async function Ap(){let r=Fl();return new xn(r)}var cr={rsa:No,ed25519:vo,secp256k1:Oo};function jl(r){let e=Object.keys(cr).join(" / ");return new U(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Wl(r){let e=it.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case se.RSA:return cr.rsa.unmarshalRsaPublicKey(t);case se.Ed25519:return cr.ed25519.unmarshalEd25519PublicKey(t);case se.Secp256k1:return cr.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw jl(e.Type??"unknown")}}async function Yl(r){let e=ot.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case se.RSA:return cr.rsa.unmarshalRsaPrivateKey(t);case se.Ed25519:return cr.ed25519.unmarshalEd25519PrivateKey(t);case se.Secp256k1:return cr.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw jl(e.Type??"RSA")}}var Xl=Symbol.for("@achingbrain/uint8arraylist");function Zl(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function Os(r){return!!r?.[Xl]}var Ve=class r{bufs;length;[Xl]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Os(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Os(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Zl(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Zl(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Os(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return ke(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:ke(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let h=e>=a&&e<c,f=t>a&&t<=c;if(h&&f){if(e===a&&t===c){n.push(o);break}let l=e-a;n.push(o.subarray(l,l+(t-e)));break}if(h){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(f){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Os(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let l=0;l<i;l++)o[l]=-1;for(let l=0;l<s;l++)o[n[l]]=l;let a=o,c=this.byteLength-n.byteLength,h=n.byteLength-1,f;for(let l=t;l<=c;l+=f){f=0;for(let m=h;m>=0;m--){let u=this.get(l+m);if(n[m]!==u){f=Math.max(1,m-a[u]);break}}if(f===0)return l}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ne(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=xe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=xe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=xe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ne(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=xe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=xe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=xe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=xe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=xe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!ae(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}};var Jl={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var vn;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.publicKey=t.bytes();break;case 2:s.payloadType=t.bytes();break;case 3:s.payload=t.bytes();break;case 5:s.signature=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>Pe(t,r.codec()),r.decode=t=>Oe(t,r.codec())})(vn||(vn={}));var En=class r{static createFromProtobuf=async e=>{let t=vn.decode(e),n=await ac(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,s=e.codec,i=e.marshal(),o=Ql(n,s,i),c=await(await Yl(t.privateKey)).sign(o.subarray());return new r({peerId:t,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new U("envelope signature is not valid for the given domain",Jl.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:s,signature:i}=e;this.peerId=t,this.payloadType=n,this.payload=s,this.signature=i}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=vn.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return ae(this.marshal(),e.marshal())}async validate(e){let t=Ql(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return Wl(this.peerId.publicKey).verify(t.subarray(),this.signature)}},Ql=(r,e,t)=>{let n=M(r),s=Ge(n.byteLength),i=Ge(e.length),o=Ge(t.length);return new Ve(s,n,i,e,o,t)};var Ps=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let i=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",h=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let l=this.readChar();if(l===void 0)return;let m=Number.parseInt(l,e);if(!Number.isNaN(m))return m});if(f===void 0)break;if(i*=e,i+=f,i>h||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[s]=o[0],t[s+1]=o[1],t[s+2]=o[2],t[s+3]=o[3],[s+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[s,!1];t[s]=i>>8,t[s+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),o=16-(n+2),[a]=e(i.subarray(0,o));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var eu=45,Sp=15,Vr=new Ps;function Po(r){if(!(r.length>Sp))return Vr.new(r).parseWith(()=>Vr.readIPv4Addr())}function Mo(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>eu))return Vr.new(r).parseWith(()=>Vr.readIPv6Addr())}function Ms(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>eu))return Vr.new(r).parseWith(()=>Vr.readIPAddr())}var pw=parseInt("0xFFFF",16),gw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function nu(r){return!!Po(r)}function su(r){return!!Mo(r)}function Vs(r){return!!Ms(r)}var iu=nu,Tp=su,Vo=function(r){let e=0;if(r=r.toString().trim(),iu(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(Tp(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=iu(t[n]),o;i&&(o=Vo(t[n]),t[n]=W(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,W(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let i=parseInt(t[n],16);s[e++]=i>>8&255,s[e++]=i&255}return s}throw new Error("invalid ip address")},ou=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let i=0;i<t;i++)s.push(r[e+i]);return s.join(".")}if(t===16){let s=[];for(let i=0;i<t;i+=2)s.push(n.getUint16(e+i).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Hr={},Ho={},Np=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];Np.forEach(r=>{let e=Cp(...r);Ho[e.code]=e,Hr[e.name]=e});function Cp(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function ee(r){if(typeof r=="number"){if(Ho[r]!=null)return Ho[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Hr[r]!=null)return Hr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Jw=ee("ip4"),Qw=ee("ip6"),e1=ee("ipcidr");function zo(r,e){switch(ee(r).code){case 4:case 41:return Up(e);case 42:return qo(e);case 6:case 273:case 33:case 132:return lu(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return qo(e);case 421:return Mp(e);case 444:return cu(e);case 445:return cu(e);case 466:return Pp(e);case 481:return globalThis.encodeURIComponent(qo(e));default:return W(e,"base16")}}function $o(r,e){switch(ee(r).code){case 4:return au(e);case 41:return au(e);case 42:return Ko(e);case 6:case 273:case 33:case 132:return Go(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Ko(e);case 421:return Dp(e);case 444:return Vp(e);case 445:return Hp(e);case 466:return Op(e);case 481:return Ko(globalThis.decodeURIComponent(e));default:return M(e,"base16")}}var Fo=Object.values(Ct).map(r=>r.decoder),Lp=function(){let r=Fo[0].or(Fo[1]);return Fo.slice(2).forEach(e=>r=r.or(e)),r}();function au(r){if(!Vs(r))throw new Error("invalid ip address");return Vo(r)}function Up(r){let e=ou(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Vs(e))throw new Error("invalid ip address");return e}function Go(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function lu(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Ko(r){let e=M(r),t=Uint8Array.from(Ge(e.length));return ke([t,e],t.length+e.length)}function qo(r){let e=xt(r);if(r=r.slice(Be(e)),r.length!==e)throw new Error("inconsistent lengths");return W(r)}function Dp(r){let e;r[0]==="Q"||r[0]==="1"?e=Xt(de.decode(`z${r}`)).bytes:e=Le.parse(r).multihash.bytes;let t=Uint8Array.from(Ge(e.length));return ke([t,e],t.length+e.length)}function Op(r){let e=Lp.decode(r),t=Uint8Array.from(Ge(e.length));return ke([t,e],t.length+e.length)}function Pp(r){let e=xt(r),t=r.slice(Be(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+W(t,"base64url")}function Mp(r){let e=xt(r),t=r.slice(Be(e));if(t.length!==e)throw new Error("inconsistent lengths");return W(t,"base58btc")}function Vp(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=dt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Go(n);return ke([t,s],t.length+s.length)}function Hp(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=dt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Go(n);return ke([t,s],t.length+s.length)}function cu(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=W(e,"base32"),s=lu(t);return`${n}:${s}`}function uu(r){r=jo(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<s.length;i++){let o=s[i],a=ee(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(i++,i>=s.length)throw hu("invalid address: "+r);if(a.path===!0){n=jo(s.slice(i).join("/")),e.push([a.code,$o(a.code,n)]),t.push([a.code,n]);break}let c=$o(a.code,s[i]);e.push([a.code,c]),t.push([a.code,zo(a.code,c)])}return{string:fu(t),bytes:Yo(e),tuples:e,stringTuples:t,path:n}}function Wo(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let i=xt(r,s),o=Be(i),a=ee(i),c=Fp(a,r.slice(s+o));if(c===0){e.push([i]),t.push([i]),s+=o;continue}let h=r.slice(s+o,s+o+c);if(s+=c+o,s>r.length)throw hu("Invalid address Uint8Array: "+W(r,"base16"));e.push([i,h]);let f=zo(i,h);if(t.push([i,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:fu(t),tuples:e,stringTuples:t,path:n}}function fu(r){let e=[];return r.map(t=>{let n=ee(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),jo(e.join("/"))}function Yo(r){return ke(r.map(e=>{let t=ee(e[0]),n=Uint8Array.from(Ge(t.code));return e.length>1&&e[1]!=null&&(n=ke([n,e[1]])),n}))}function Fp(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=xt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Be(t)}}function jo(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function hu(r){return new Error("Error parsing address: "+r)}var Kp=Symbol.for("nodejs.util.inspect.custom"),Zo=Symbol.for("@multiformats/js-multiaddr/multiaddr"),qp=[ee("dns").code,ee("dns4").code,ee("dns6").code,ee("dnsaddr").code],Hs=class r{bytes;#e;#t;#r;#n;[Zo]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Wo(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=uu(e)}else if(pu(e))t=Wo(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#n=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,i="",o=ee("tcp"),a=ee("udp"),c=ee("ip4"),h=ee("ip6"),f=ee("dns6"),l=ee("ip6zone");for(let[u,d]of this.stringTuples())u===l.code&&(i=`%${d??""}`),qp.includes(u)&&(t=o.name,s=443,n=`${d??""}${i}`,e=u===f.code?6:4),(u===o.code||u===a.code)&&(t=ee(u).name,s=parseInt(d??"")),(u===c.code||u===h.code)&&(t=ee(u).name,n=`${d??""}${i}`,e=u===h.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#t.map(([e])=>Object.assign({},ee(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>ee(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(Yo(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===Hr.p2p.code&&e.push([n,s]),n===Hr["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?W(de.decode(`z${n}`),"base58btc"):W(Le.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return ae(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(i=>i.resolvable);if(t==null)return[this];let n=du.get(t.name);if(n==null)throw new U(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(i=>Ee(i))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[Kp](){return`Multiaddr(${this.#e})`}};var du=new Map;function pu(r){return!!r?.[Zo]}function Ee(r){return new Hs(r)}function He(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Fs=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Fr(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Fs(t?.errorMessage,t?.errorCode));let n,s=new Fs(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var Xo=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=He(),this.haveNext=He()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=He(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=He(),await Fr(this.readNext.promise,t?.signal,t)}};function gu(){return new Xo}var Ks=class extends Error{code;constructor(e,t){super(e),this.code=t}},Jo=class extends Ks{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function mu(r,e){let t=gu();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new Ve;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,h=new Promise((f,l)=>{c=()=>{l(new Jo("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:l,value:m}=await Promise.race([n.next(),h]);return l===!0?new Ve:m}for(;s.byteLength<o;){let{value:l,done:m}=await Promise.race([n.next(),h]);if(m===!0)throw new Ks("unexpected end of input","ERR_UNEXPECTED_EOF");s.append(l)}let f=s.sublist(0,o);return s.consume(o),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*o}()}return r}}}var qs=class extends Error{code;constructor(e,t){super(e),this.code=t}};function yu(r,e={}){let t=mu(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Be(e.maxDataLength));let n=e?.lengthDecoder??xt,s=e?.lengthEncoder??Ge;return{read:async o=>{let a=-1,c=new Ve;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(h){if(h instanceof RangeError)continue;throw h}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new qs("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new qs("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,o)},write:async(o,a)=>{await t.write(new Ve(s(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new Ve(...o.flatMap(h=>[s(h.byteLength),h]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function jt(r,e){let t=yu(r,e),n={read:async(s,i)=>{let o=await t.read(i);return s.decode(o)},write:async(s,i,o)=>{await t.write(i.encode(s),o)},writeV:async(s,i,o)=>{await t.writeV(s.map(a=>i.encode(a)),o)},pb:s=>({read:async i=>n.read(s,i),write:async(i,o)=>n.write(i,s,o),writeV:async(i,o)=>n.writeV(i,s,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var bu="circuit-relay-source",wu="circuit-relay-relay";var xu=BigInt(131072),Ye="/libp2p/circuit/relay/0.2.0/hop",lr="/libp2p/circuit/relay/0.2.0/stop",vu=30*1e3,H1=30*1e3,An=300;var Qo="ERR_RELAYED_DIAL",Eu="ERR_HOP_REQUEST_FAILED",zs="ERR_TRANSFER_LIMIT_EXCEEDED",Au=4096,Su=.001;var J;(function(r){let e;(function(s){s.RESERVE="RESERVE",s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.RESERVE=0]="RESERVE",s[s.CONNECT=1]="CONNECT",s[s.STATUS=2]="STATUS"})(t||(t={})),function(s){s.codec=()=>sr(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Me((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),Kr.codec().encode(s.peer,i)),s.reservation!=null&&(i.uint32(26),$s.codec().encode(s.reservation,i)),s.limit!=null&&(i.uint32(34),qr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(40),z.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=Kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.reservation=$s.codec().decode(s,s.uint32(),{limits:o.limits?.reservation});break}case 4:{a.limit=qr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 5:{a.status=z.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Pe(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(J||(J={}));var Fe;(function(r){let e;(function(s){s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.CONNECT=0]="CONNECT",s[s.STATUS=1]="STATUS"})(t||(t={})),function(s){s.codec=()=>sr(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Me((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),Kr.codec().encode(s.peer,i)),s.limit!=null&&(i.uint32(26),qr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(32),z.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=Kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.limit=qr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 4:{a.status=z.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Pe(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(Fe||(Fe={}));var Kr;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={id:xe(0),addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.id=t.bytes();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new sn('decode error - map field "addrs" had too many elements',"ERR_MAX_LENGTH");i.addrs.push(t.bytes());break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Kr||(Kr={}));var $s;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={expire:0n,addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.expire=t.uint64();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new sn('decode error - map field "addrs" had too many elements',"ERR_MAX_LENGTH");i.addrs.push(t.bytes());break}case 3:{i.voucher=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})($s||($s={}));var qr;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.duration=t.uint32();break}case 2:{i.data=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(qr||(qr={}));var z;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(z||(z={}));var ea;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(ea||(ea={}));(function(r){r.codec=()=>sr(ea)})(z||(z={}));var Gs;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={relay:xe(0),peer:xe(0),expiration:0n},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.relay=t.bytes();break}case 2:{i.peer=t.bytes();break}case 3:{i.expiration=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Gs||(Gs={}));function js(r){let e=new globalThis.AbortController;function t(){e.abort();for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}async function*Bu(r,e,t){let n=e.remaining;for await(let s of r){let i=BigInt(s.byteLength);if(e.remaining-i<0){let o=Number(e.remaining);e.remaining=0n;try{o!==0&&(yield s.subarray(0,o))}catch(a){t.log.error(a)}throw new U(`data limit of ${n} bytes exceeded`,zs)}e.remaining-=i,yield s}}function _u(r,e,t,n,s){function i(l){r.abort(l),e.abort(l)}let o=[t];n?.duration!=null&&o.push(AbortSignal.timeout(n.duration));let a=js(o),c=!1,h=!1,f;n?.data!=null&&(f={remaining:n.data}),queueMicrotask(()=>{let l=()=>{e.abort(new U(`duration limit of ${n?.duration} ms exceeded`,zs))};a.addEventListener("abort",l,{once:!0}),e.sink(f==null?r.source:Bu(r.source,f,s)).catch(m=>{s.log.error("error while relaying streams src -> dst",m),i(m)}).finally(()=>{c=!0,h&&(a.removeEventListener("abort",l),a.clear())})}),queueMicrotask(()=>{let l=()=>{r.abort(new U(`duration limit of ${n?.duration} ms exceeded`,zs))};a.addEventListener("abort",l,{once:!0}),r.sink(f==null?e.source:Bu(e.source,f,s)).catch(m=>{s.log.error("error while relaying streams dst -> src",m),i(m)}).finally(()=>{h=!0,c&&(a.removeEventListener("abort",l),a.clear())})})}function ta(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}function ra(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var kt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return ra(this.map.entries(),e=>[Lt(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,Lt(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return ra(this.map.keys(),e=>Lt(e))}values(){return this.map.values()}get size(){return this.map.size}};var sa=pi(na(),1);var zp=Math.LN2*Math.LN2,Ys=class{seeds;bits;buffer;constructor(e={}){e.seeds!=null?this.seeds=e.seeds:this.seeds=Gp(e.hashes??8),this.bits=e.bits??1024,this.buffer=xe(Math.ceil(this.bits/8))}add(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let s=sa.default.x86.hash32(e,this.seeds[t])%this.bits;this.setbit(s)}}has(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let s=sa.default.x86.hash32(e,this.seeds[t])%this.bits;if(!this.getbit(s))return!1}return!0}clear(){this.buffer.fill(0)}setbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;let s=this.buffer[t];s|=1<<n,this.buffer[t]=s}getbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;return(this.buffer[t]&1<<n)!==0}};function ia(r,e=.005){let t=$p(r,e);return new Ys(t)}function $p(r,e=.005){let t=Math.round(-1*r*Math.log(e)/zp),n=Math.round(t/r*Math.LN2);return{bits:t,hashes:n}}function Gp(r){let e,t,n=[];for(let s=0;s<r;s++)for(e=new Ve(at(4)),n[s]=e.getUint32(0,!0),t=0;t<s;t++)if(n[s]===n[t]){s--;break}return n}var oa=64,rt=class{fp;h;seed;constructor(e,t,n,s=2){if(s>oa)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),o=xe(s);for(let a=0;a<o.length;a++)o[a]=i[a];o.length===0&&(o[0]=7),this.fp=o,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ae(this.fp,e.fp):!1}};function ur(r,e){return Math.floor(Math.random()*(e-r))+r}var fr=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=ur(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var aa={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Tu={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},Ru=new globalThis.TextEncoder;function jp(r,e){let t=aa[e],n=Tu[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function Wp(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=aa[e],s=Tu[e],i=r;for(;i.length>0;){let o=Ru.encodeInto(i,t);i=i.slice(o.read);for(let a=0;a<o.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function ca(r,{size:e=32,utf8Buffer:t}={}){if(!aa[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return Wp(r,e,t);r=Ru.encode(r)}return jp(r,e)}var Yp=pi(na(),1);var Bn={hash:r=>Number(ca(r,{size:32})),hashV:(r,e)=>Zp(Bn.hash(r,e))};function Zp(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),M(e,"base16")}var Xp=500,_n=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Bn,this.seed=e.seed??ur(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=M(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new fr(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new fr(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let i=[n,s],o=i[ur(0,i.length-1)];this.buckets[o]==null&&(this.buckets[o]=new fr(this.bucketSize));for(let a=0;a<Xp;a++){let c=this.buckets[o].swap(t);if(c!=null&&(o=(o^c.hash())%this.filterSize,this.buckets[o]==null&&(this.buckets[o]=new fr(this.bucketSize)),this.buckets[o].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=M(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=M(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let i=(n^t.hash())%this.filterSize,o=this.buckets[i]?.remove(t)??!1;return o&&this.count--,o}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=95}},Jp={1:.5,2:.84,4:.95,8:.98};function Qp(r=.001){return r>.002?2:r>1e-5?4:8}function Nu(r,e=.001){let t=Qp(e),n=Jp[t],s=Math.round(r/n),i=Math.min(Math.ceil(Math.log(s/t))+2,oa);return{filterSize:s,bucketSize:t,fingerprintSize:i}}var Zs=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Bn,this.seed=e.seed??ur(0,Math.pow(2,10)),this.filterSeries=[new _n({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=M(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new _n({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function la(r,e=.001,t){return new Zs({...Nu(r,e),...t??{}})}var Xs=class{filter;constructor(e,t){this.filter=la(e,t)}has(e){return this.filter.has(e.toBytes())}add(e){this.filter.add(e.toBytes())}remove(e){this.filter.remove?.(e.toBytes())}};function ua(r,e=.001){return new Xs(r,e)}var Js=class{reservations=new kt;_started=!1;interval;maxReservations;reservationClearInterval;applyDefaultLimit;reservationTtl;defaultDurationLimit;defaultDataLimit;constructor(e={}){this.maxReservations=e.maxReservations??15,this.reservationClearInterval=e.reservationClearInterval??3e5,this.applyDefaultLimit=e.applyDefaultLimit!==!1,this.reservationTtl=e.reservationTtl??72e5,this.defaultDurationLimit=e.defaultDurationLimit??12e4,this.defaultDataLimit=e.defaultDataLimit??xu}isStarted(){return this._started}start(){this._started||(this._started=!0,this.interval=setInterval(()=>{let e=new Date().getTime();this.reservations.forEach((t,n)=>{t.expire.getTime()<e&&this.reservations.delete(n)})},this.reservationClearInterval))}stop(){clearInterval(this.interval)}reserve(e,t,n){if(this.reservations.size>=this.maxReservations&&!this.reservations.has(e))return{status:z.RESERVATION_REFUSED};let s=new Date(Date.now()+this.reservationTtl),i;return this.applyDefaultLimit&&(i=n??{data:this.defaultDataLimit,duration:this.defaultDurationLimit}),this.reservations.set(e,{addr:t,expire:s,limit:i}),{status:z.OK,expire:Math.round(s.getTime()/1e3)}}removeReservation(e){this.reservations.delete(e)}hasReservation(e){return this.reservations.has(e)}get(e){return this.reservations.get(e)}};var Qs=class r{domain="libp2p-relay-rsvp";codec=new Uint8Array([3,2]);relay;peer;expiration;constructor({relay:e,peer:t,expiration:n}){this.relay=e,this.peer=t,this.expiration=n}marshal(){return Gs.encode({relay:this.relay.toBytes(),peer:this.peer.toBytes(),expiration:BigInt(this.expiration)})}equals(e){return!(!(e instanceof r)||!this.peer.equals(e.peer)||!this.relay.equals(e.relay)||this.expiration!==e.expiration)}};var Cu=r=>r.protoCodes().includes(290),s0={maxOutboundStopStreams:An},fa=class extends ze{registrar;peerStore;addressManager;peerId;connectionManager;connectionGater;reservationStore;started;hopTimeout;shutdownController;maxInboundHopStreams;maxOutboundHopStreams;maxOutboundStopStreams;log;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:server"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.addressManager=e.addressManager,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.connectionGater=e.connectionGater,this.started=!1,this.hopTimeout=t?.hopTimeout??vu,this.maxInboundHopStreams=t.maxInboundHopStreams,this.maxOutboundHopStreams=t.maxOutboundHopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??s0.maxOutboundStopStreams,this.reservationStore=new Js(t.reservations),this.shutdownController=new AbortController,qe(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-server";isStarted(){return this.started}async start(){this.started||(await this.registrar.handle(Ye,e=>{this.onHop(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundHopStreams,maxOutboundStreams:this.maxOutboundHopStreams,runOnTransientConnection:!0}),this.reservationStore.start(),this.started=!0)}async stop(){this.reservationStore.stop(),this.shutdownController.abort(),await this.registrar.unhandle(Ye),this.started=!1}async onHop({connection:e,stream:t}){this.log("received circuit v2 hop protocol stream from %p",e.remotePeer);let n=He(),s=setTimeout(()=>{n.reject("timed out")},this.hopTimeout),i=jt(t);try{let o=await Promise.race([i.pb(J).read(),n.promise]);if(o?.type==null)throw new Error("request was invalid, could not read from stream");this.log("received",o.type),await Promise.race([this.handleHopProtocol({connection:e,stream:i,request:o}),n.promise])}catch(o){this.log.error("error while handling hop",o),await i.pb(J).write({type:J.Type.STATUS,status:z.MALFORMED_MESSAGE}),t.abort(o)}finally{clearTimeout(s)}}async handleHopProtocol({stream:e,request:t,connection:n}){switch(this.log("received hop message"),t.type){case J.Type.RESERVE:await this.handleReserve({stream:e,request:t,connection:n});break;case J.Type.CONNECT:await this.handleConnect({stream:e,request:t,connection:n});break;default:this.log.error("invalid hop request type %s via peer %p",t.type,n.remotePeer),await e.pb(J).write({type:J.Type.STATUS,status:z.UNEXPECTED_MESSAGE})}}async handleReserve({stream:e,request:t,connection:n}){let s=e.pb(J);if(this.log("hop reserve request from %p",n.remotePeer),Cu(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}if(await this.connectionGater.denyInboundRelayReservation?.(n.remotePeer)===!0){this.log.error("reservation for %p denied by connection gater",n.remotePeer),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}let i=this.reservationStore.reserve(n.remotePeer,n.remoteAddr);if(i.status!==z.OK){await s.write({type:J.Type.STATUS,status:i.status});return}try{if(i.expire!=null){let o=i.expire*1e3-Date.now();await this.peerStore.merge(n.remotePeer,{tags:{[bu]:{value:1,ttl:o}}})}await s.write({type:J.Type.STATUS,status:z.OK,reservation:await this.makeReservation(n.remotePeer,BigInt(i.expire??0)),limit:this.reservationStore.get(n.remotePeer)?.limit}),this.log("sent confirmation response to %s",n.remotePeer)}catch(o){this.log.error("failed to send confirmation response to %p",n.remotePeer,o),this.reservationStore.removeReservation(n.remotePeer)}}async makeReservation(e,t){let n=[];for(let i of this.addressManager.getAddresses())i.toString().includes("/p2p-circuit")||n.push(i.bytes);let s=await En.seal(new Qs({peer:e,relay:this.peerId,expiration:Number(t)}),this.peerId);return{addrs:n,expire:t,voucher:s.marshal()}}async handleConnect({stream:e,request:t,connection:n}){let s=e.pb(J);if(Cu(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}this.log("hop connect request from %p",n.remotePeer);let i;try{if(t.peer==null)throw this.log.error("no peer info in hop connect request"),new Error("no peer info in request");t.peer.addrs.forEach(Ee),i=Jr(t.peer.id)}catch(l){this.log.error("invalid hop connect request via peer %p %s",n.remotePeer,l),await s.write({type:J.Type.STATUS,status:z.MALFORMED_MESSAGE});return}if(!this.reservationStore.hasReservation(i)){this.log.error("hop connect denied for destination peer %p not having a reservation for %p with status %s",i,n.remotePeer,z.NO_RESERVATION),await s.write({type:J.Type.STATUS,status:z.NO_RESERVATION});return}if(await this.connectionGater.denyOutboundRelayedConnection?.(n.remotePeer,i)===!0){this.log.error("hop connect for %p to %p denied by connection gater",n.remotePeer,i),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}let o=this.connectionManager.getConnections(i);if(o.length===0){this.log("hop connect denied for destination peer %p not having a connection for %p as there is no destination connection",i,n.remotePeer),await s.write({type:J.Type.STATUS,status:z.NO_RESERVATION});return}let a=this.reservationStore.get(i)?.limit,c=o[0],h=await this.stopHop({connection:c,request:{type:Fe.Type.CONNECT,peer:{id:n.remotePeer.toBytes(),addrs:[]},limit:a}});if(h==null){this.log.error("failed to open stream to destination peer %p",c?.remotePeer),await s.write({type:J.Type.STATUS,status:z.CONNECTION_FAILED});return}await s.write({type:J.Type.STATUS,status:z.OK,limit:a});let f=e.unwrap();this.log("connection from %p to %p established - merging streams",n.remotePeer,i),_u(f,h,this.shutdownController.signal,a,{log:this.log})}async stopHop({connection:e,request:t}){this.log("starting circuit relay v2 stop request to %s",e.remotePeer);let n=await e.newStream([lr],{maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),s=jt(n),i=s.pb(Fe);await i.write(t);let o;try{o=await i.read()}catch{this.log.error("error parsing stop message response from %p",e.remotePeer)}if(o==null){this.log.error("could not read response from %p",e.remotePeer),await n.close();return}if(o.status===z.OK)return this.log("stop request to %p was successful",e.remotePeer),s.unwrap();this.log("stop request failed with code %d",o.status),await n.close()}get reservations(){return this.reservationStore.reservations}};function Lu(r={}){return e=>new fa(e,r)}function da(r){let{stream:e,remoteAddr:t,logger:n}=r,s=n.forComponent("libp2p:stream:converter"),i=!1,o=!1,a=e.close.bind(e);e.close=async m=>{await a(m),l(!0)};let c=e.abort.bind(e);e.abort=m=>{c(m),l(!0)};let h=e.sink.bind(e);e.sink=async m=>{try{await h(m)}catch(u){u.type!=="aborted"&&s.error("%s error in sink",t,u)}finally{o=!0,l()}};let f={log:s,sink:e.sink,source:async function*(){try{for await(let m of e.source)m instanceof Uint8Array?yield m:yield*m}finally{i=!0,l()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function l(m){m===!0&&(i=!0,o=!0),i&&o&&f.timeline.close==null&&(f.timeline.close=Date.now())}return f}var i0=k("dns4"),o0=k("dns6"),a0=k("dnsaddr"),hr=le(k("dns"),a0,i0,o0),ri=le(k("ip4"),k("ip6")),zr=le(D(ri,k("tcp")),D(hr,k("tcp"))),ni=D(ri,k("udp")),c0=D(ni,k("utp")),l0=D(ni,k("quic")),u0=D(ni,k("quic-v1")),pa=le(D(zr,k("ws")),D(hr,k("ws"))),ei=le(D(pa,k("p2p")),pa),ga=le(D(zr,k("wss")),D(hr,k("wss")),D(zr,k("tls"),k("ws")),D(hr,k("tls"),k("ws"))),ti=le(D(ga,k("p2p")),ga),ma=le(D(zr,k("http")),D(ri,k("http")),D(hr,k("http"))),ya=le(D(zr,k("https")),D(ri,k("https")),D(hr,k("https"))),Uu=D(ni,k("webrtc-direct"),k("certhash")),Pu=le(D(Uu,k("p2p")),Uu),Du=D(u0,k("webtransport"),k("certhash"),k("certhash")),Mu=le(D(Du,k("p2p")),Du),Vu=le(D(ei,k("p2p-webrtc-star"),k("p2p")),D(ti,k("p2p-webrtc-star"),k("p2p")),D(ei,k("p2p-webrtc-star")),D(ti,k("p2p-webrtc-star"))),a2=le(D(ei,k("p2p-websocket-star"),k("p2p")),D(ti,k("p2p-websocket-star"),k("p2p")),D(ei,k("p2p-websocket-star")),D(ti,k("p2p-websocket-star"))),Hu=le(D(ma,k("p2p-webrtc-direct"),k("p2p")),D(ya,k("p2p-webrtc-direct"),k("p2p")),D(ma,k("p2p-webrtc-direct")),D(ya,k("p2p-webrtc-direct"))),dr=le(pa,ga,ma,ya,Vu,Hu,zr,c0,l0,hr,Pu,Mu),c2=le(D(dr,k("p2p-stardust"),k("p2p")),D(dr,k("p2p-stardust"))),Wt=le(D(dr,k("p2p")),Vu,Hu,Pu,Mu,k("p2p")),Ou=le(D(Wt,k("p2p-circuit"),Wt),D(Wt,k("p2p-circuit")),D(k("p2p-circuit"),Wt),D(dr,k("p2p-circuit")),D(k("p2p-circuit"),dr),k("p2p-circuit")),Fu=()=>le(D(Ou,Fu),Ou),Tt=Fu(),l2=le(D(Tt,Wt,Tt),D(Wt,Tt),D(Tt,Wt),Tt,Wt);var u2=le(D(Tt,k("webrtc"),k("p2p")),D(Tt,k("webrtc")),D(dr,k("webrtc"),k("p2p")),D(dr,k("webrtc")),k("webrtc"));function Ku(r){function e(t){let n;try{n=Ee(t)}catch{return!1}let s=r(n.protoNames());return s===null?!1:s===!0||s===!1?s:s.length===0}return e}function D(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(s=>(n=typeof s=="function"?s().partialMatch(t):s.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Ku(e),partialMatch:e}}function le(...r){function e(n){let s=null;return r.some(i=>{let o=typeof i=="function"?i().partialMatch(n):i.partialMatch(n);return o!=null?(s=o,!0):!1}),s}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Ku(e),partialMatch:e}}function k(r){let e=r;function t(s){let i;try{i=Ee(s)}catch{return!1}let o=i.protoNames();return o.length===1&&o[0]===e}function n(s){return s.length===0?null:s[0]===e?s.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var Yt=class extends Event{constructor(e,t){super(e),this.detail=t}};var si=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},$r=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new si(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new si(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var ba=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function qu(r={}){return h0(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function h0(r,e){e=e??{};let t=e.onEnd,n=new $r,s,i,o,a=He(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((b,g)=>{i=w=>{i=null,n.push(w);try{b(r(n))}catch(y){g(y)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=He()})}},h=b=>i!=null?i(b):(n.push(b),s),f=b=>(n=new $r,i!=null?i({error:b}):(n.push({error:b}),s)),l=b=>{if(o)return s;if(e?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return h({done:!1,value:b})},m=b=>o?s:(o=!0,b!=null?f(b):h({done:!0})),u=()=>(n=new $r,m(),{done:!0}),d=b=>(m(b),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:u,throw:d,push:l,end:m,get readableLength(){return n.size},onEmpty:async b=>{let g=b?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let w,y;g!=null&&(w=new Promise((E,x)=>{y=()=>{x(new ba)},g.addEventListener("abort",y)}));try{await Promise.race([a.promise,w])}finally{y!=null&&g!=null&&g?.removeEventListener("abort",y)}}},t==null)return s;let p=s;return s={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(b){return p.throw(b),t!=null&&(t(b),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:l,end(b){return p.end(b),t!=null&&(t(b),t=void 0),s},get readableLength(){return p.readableLength},onEmpty:b=>p.onEmpty(b)},s}var wa=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function ii(r,e,t,n){let s=new wa(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,h)}let c=l=>{try{if(n?.filter?.(l)===!1)return}catch(m){a(),o(m);return}a(),i(l)},h=l=>{a(),o(l.detail)},f=()=>{a(),o(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,h)})}var oi=class{deferred;signal;constructor(e){this.signal=e,this.deferred=He(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Rt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function d0(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ai=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=d0(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,qe(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Rt),this.cleanup())}async join(e={}){let t=new oi(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Fr(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var ci=class extends ze{concurrency;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){t?.signal?.throwIfAborted();let n=new ai(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Rt)}),this.clear()}async onEmpty(e){this.size!==0&&await ii(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await ii(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await ii(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=qu({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new U("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var Gr=class extends ci{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var li=class extends ze{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.connectionManager=e.connectionManager,this.randomWalk=e.randomWalk,this.filter=t.filter,this.discoveryController=new AbortController,qe(1/0,this.discoveryController.signal)}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Ye,{filter:this.filter,onConnect:e=>{this.log("discovered relay %p",e),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,qe(1/0,this.discoveryController.signal),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[n=>n.protocols.includes(Ye)],orders:[()=>Math.random()<.5?1:-1]});for(let n of e)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",e.length);let t=new Gr({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(s=>s.toString()));continue}this.log.trace("wait for space in queue for %p",n.id),await Fr(t.onSizeLessThan(10),this.discoveryController.signal),this.log("adding random peer %p to dial queue (length: %d)",n.id,t.size),t.add(async()=>{let s=js([this.discoveryController.signal,AbortSignal.timeout(5e3)]);qe(1/0,s);try{await this.connectionManager.openConnection(n.id,{signal:s})}finally{s.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(s=>{this.log.error("error opening connection to random peer %p",n.id,s)})}await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};var xa=class extends ze{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new kt,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let s=this.relayStore.getReservation(n.remotePeer);if(s==null)throw new U("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,s.addrs.map(i=>Ee(i).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function zu(r){return new xa(r)}var y0=60*1e3*10,b0=60*1e3*5,w0=30*1e3,ui=class extends ze{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new kt,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e3,this.started=!1,this.relayFilter=ia(100),this.reserveQueue=new Gr({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{}))}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding potential relay peer %p as the queue is full",e);return}if(this.reserveQueue.has(e)){this.log("potential relay peer %p is already in the reservation queue",e);return}if(this.relayFilter.has(e.toBytes())){this.log("potential relay peer %p has failed previously, not trying again",e);return}this.log("try to reserve relay slot with %p",e),await this.reserveQueue.add(async()=>{let n=Date.now();try{let s=this.reservations.get(e);if(s!=null){if(ta(s.reservation.expire)>y0){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(s.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((l,m)=>(m.type==="discovered"&&l++,l),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let i=AbortSignal.timeout(this.reservationCompletionTimeout);qe(1/0,i);let o=await this.connectionManager.openConnection(e,{signal:i});if(o.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let a=await this.#e(o,{signal:i});this.log("created reservation on relay peer %p",e);let c=ta(a.expire),h=Math.min(Math.max(c-b0,w0),Math.pow(2,31)-1),f=setTimeout(()=>{this.addRelay(e,t).catch(l=>{this.log.error("could not refresh reservation to relay %p",e,l)})},h);this.reservations.set(e,{timeout:f,reservation:a,type:t}),await this.peerStore.merge(e,{tags:{[wu]:{value:1,ttl:c}}}),await this.transportManager.listen([Ee(`/p2p/${e.toString()}/p2p-circuit`)]),this.safeDispatchEvent("relay:created-reservation",{detail:e})}catch(s){this.log.error("could not reserve slot on %p after %dms",e,Date.now()-n,s);let i=this.reservations.get(e);i!=null&&clearTimeout(i.timeout),this.reservations.delete(e),this.relayFilter.add(e.toBytes())}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(){return this.reservations.size}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Ye,t),i=jt(n).pb(J);await i.write({type:J.Type.RESERVE},t);let o;try{o=await i.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(o.status===z.OK&&o.reservation!=null){let c=!1,h=e.remoteAddr.bytes;for(let f of o.reservation.addrs)if(ae(h,f)){c=!0;break}return c||o.reservation.addrs.push(h),o.reservation}let a=`reservation failed with status ${o.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};var x0=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(Ee)}catch{return!1}return!0},va={maxInboundStopStreams:An,maxOutboundStopStreams:An,stopTimeout:3e4},fi=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??va.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??va.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??va.stopTimeout;let n=t.discoverRelays??0;n>0&&(this.discovery=new li(e,{filter:t.discoveryFilter??ua(Au,Su)}),this.discovery.addEventListener("relay:discover",s=>{this.reservationStore.addRelay(s.detail,"discovered").catch(i=>{this.log.error("could not add discovered relay %p",s.detail,i)})})),this.reservationStore=new ui(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:created-reservation",()=>{this.reservationStore.reservationCount()>=n&&this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[Oa]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[Pa](){return this.discovery!=null?["@libp2p/identify"]:[]}[Ca]=!0;isStarted(){return this.started}async start(){await this.registrar.handle(lr,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await Ua(this.discovery,this.reservationStore),this.started=!0}async stop(){await Da(this.discovery,this.reservationStore),await this.registrar.unhandle(lr),this.started=!1}async dial(e,t){if(e.protoCodes().filter(d=>d===290).length!==1){let d="Invalid circuit relay address";throw this.log.error(d,e),new U(d,Qo)}let n=e.toString().split("/p2p-circuit"),s=Ee(n[0]),i=Ee(n[n.length-1]),o=s.getPeerId(),a=i.getPeerId();if(o==null||a==null){let d=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(d),new U(d,Qo)}let c=Lt(o),h=Lt(a),f=!1,m=this.connectionManager.getConnections(c)[0];m==null?(await this.peerStore.merge(c,{multiaddrs:[s]}),t.onProgress?.(new Yt("circuit-relay:open-connection")),m=await this.connectionManager.openConnection(c,t),f=!0):t.onProgress?.(new Yt("circuit-relay:reuse-connection"));let u;try{return t.onProgress?.(new Yt("circuit-relay:open-hop-stream")),u=await m.newStream(Ye),await this.connectV2({stream:u,connection:m,destinationPeer:h,destinationAddr:i,relayAddr:s,ma:e,disconnectOnFailure:f,onProgress:t.onProgress})}catch(d){throw this.log.error("circuit relay dial to destination %p via relay %p failed",h,c,d),u?.abort(d),f&&await m.close(),d}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:s,relayAddr:i,ma:o,disconnectOnFailure:a,onProgress:c}){try{let h=jt(e),f=h.pb(J);c?.(new Yt("circuit-relay:write-connect-message")),await f.write({type:J.Type.CONNECT,peer:{id:n.toBytes(),addrs:[Ee(s).bytes]}}),c?.(new Yt("circuit-relay:read-connect-response"));let l=await f.read();if(l.status!==z.OK)throw new U(`failed to connect via relay with status ${l?.status?.toString()??"undefined"}`,Eu);let m=da({stream:h.unwrap(),remoteAddr:o,localAddr:i.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound relayed connection %a",m.remoteAddr),await this.upgrader.upgradeOutbound(m,{transient:l.limit!=null,onProgress:c})}catch(h){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,h),a&&await t.close(),h}}createListener(e){return zu({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>Tt.matches(t))}dialFilter(e){return this.listenFilter(e)}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(f){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",f)}let n=AbortSignal.timeout(this.stopTimeout),s=jt(t).pb(Fe),i=await s.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,i.type),i?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(i.type!==Fe.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!x0(i)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let o=Jr(i.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,o)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${o.toString()}`),c=this.addressManager.getAddresses()[0],h=da({stream:s.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound relayed connection %a",h.remoteAddr),await this.upgrader.upgradeInbound(h,{transient:i.limit!=null}),this.log("%s connection %a upgraded","inbound",h.remoteAddr)}};function $u(r={}){return e=>new fi(e,r)}return of(v0);})();
7
+ `)}async function sp(r,e){let t=Te.get(),n;if(r.includes("-----BEGIN ENCRYPTED PRIVATE KEY-----")){let s=M(r.replace("-----BEGIN ENCRYPTED PRIVATE KEY-----","").replace("-----END ENCRYPTED PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Pr(s),{iv:o,salt:a,iterations:c,keySize:h,cipherText:f}=ip(i),l=await Eo(Qr,e,a,{c,dkLen:h}),m=await t.subtle.importKey("raw",l,"AES-CBC",!1,["decrypt"]),u=mn(await t.subtle.decrypt({name:"AES-CBC",iv:o},m,f)),{result:d}=Pr(u);n=Tl(d)}else if(r.includes("-----BEGIN PRIVATE KEY-----")){let s=M(r.replace("-----BEGIN PRIVATE KEY-----","").replace("-----END PRIVATE KEY-----","").replace(/\n/g,"").trim(),"base64pad"),{result:i}=Pr(s);n=Tl(i)}else throw new U("Could not parse private key from PEM data","ERR_INVALID_PARAMETERS");return To(n)}function ip(r){let e=r.valueBlock.value[0];if(e.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.13")throw new U("Only pkcs5PBES2 encrypted private keys are supported","ERR_INVALID_PARAMS");let n=e.valueBlock.value[1].valueBlock.value[0];if(n.valueBlock.value[0].toString()!=="OBJECT IDENTIFIER : 1.2.840.113549.1.5.12")throw new U("Only pkcs5PBKDF2 key derivation functions are supported","ERR_INVALID_PARAMS");let i=n.valueBlock.value[1],o=mn(i.valueBlock.value[0].getValue()),a=ko,c=Io;if(i.valueBlock.value.length===3)a=Number(i.valueBlock.value[1].toBigInt()),c=Number(i.valueBlock.value[2].toBigInt());else if(i.valueBlock.value.length===2)throw new U("Could not derive key size and iterations from PEM file - please use @libp2p/rsa to re-import your key","ERR_INVALID_PARAMS");let h=e.valueBlock.value[1].valueBlock.value[1],f=h.valueBlock.value[0].toString();if(f!=="OBJECT IDENTIFIER : 1.2.840.113549.3.7"){if(f!=="OBJECT IDENTIFIER : 1.3.14.3.2.7"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.2"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.22"){if(f!=="OBJECT IDENTIFIER : 2.16.840.1.101.3.4.1.42")throw new U("Only AES-CBC encryption schemes are supported","ERR_INVALID_PARAMS")}}}}let l=mn(h.valueBlock.value[1].getValue());return{cipherText:mn(r.valueBlock.value[1].getValue()),salt:o,iterations:a,keySize:c,iv:l}}function Tl(r){return mn(r.valueBlock.value[2].getValue())}function mn(r){return new Uint8Array(r,0,r.byteLength)}async function Rl(r){let e=await Te.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]),t=await Ll(e);return{privateKey:t[0],publicKey:t[1]}}async function Ro(r){let t=[await Te.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["sign"]),await op(r)],n=await Ll({privateKey:t[0],publicKey:t[1]});return{privateKey:n[0],publicKey:n[1]}}async function Nl(r,e){let t=await Te.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]),n=await Te.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},t,e instanceof Uint8Array?e:e.subarray());return new Uint8Array(n,0,n.byteLength)}async function Cl(r,e,t){let n=await Te.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);return Te.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},n,e,t instanceof Uint8Array?t:t.subarray())}async function Ll(r){if(r.privateKey==null||r.publicKey==null)throw new U("Private and public key are required","ERR_INVALID_PARAMETERS");return Promise.all([Te.get().subtle.exportKey("jwk",r.privateKey),Te.get().subtle.exportKey("jwk",r.publicKey)])}async function op(r){return Te.get().subtle.importKey("jwk",{kty:r.kty,n:r.n,e:r.e},{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!0,["verify"])}function Ds(r){if(r.kty!=="RSA")throw new U("invalid key type","ERR_INVALID_KEY_TYPE");if(r.n==null)throw new U("invalid key modulus","ERR_INVALID_KEY_MODULUS");return M(r.n,"base64url").length*8}var bn=8192,yn=class{_key;constructor(e){this._key=e}verify(e,t){return Cl(this._key,t,e)}marshal(){return zt.jwkToPkix(this._key)}get bytes(){return it.encode({Type:se.RSA,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}hash(){let e=me.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}},Mr=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t}genSecret(){return at(16)}sign(e){return Nl(this._key,e)}get public(){if(this._publicKey==null)throw new U("public key not provided","ERR_PUBKEY_NOT_PROVIDED");return new yn(this._publicKey)}marshal(){return zt.jwkToPkcs1(this._key)}get bytes(){return ot.encode({Type:se.RSA,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}hash(){let e=me.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return W(e,"base58btc")}async export(e,t="pkcs-8"){if(t==="pkcs-8")return zt.exportToPem(this,e);if(t==="libp2p-key")return Nr(this.bytes,e);throw new U(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};async function To(r){let e=zt.pkcs1ToJwk(r);if(Ds(e)>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let t=await Ro(e);return new Mr(t.privateKey,t.publicKey)}function cp(r){let e=zt.pkixToJwk(r);if(Ds(e)>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");return new yn(e)}async function lp(r){if(Ds(r)>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Ro(r);return new Mr(e.privateKey,e.publicKey)}async function up(r){if(r>bn)throw new U("key size is too large","ERR_KEY_SIZE_TOO_LARGE");let e=await Rl(r);return new Mr(e.privateKey,e.publicKey)}var Oo={};ge(Oo,{Secp256k1PrivateKey:()=>xn,Secp256k1PublicKey:()=>wn,generateKeyPair:()=>Ap,unmarshalSecp256k1PrivateKey:()=>vp,unmarshalSecp256k1PublicKey:()=>Ep});var fp=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),$t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),Co=class extends Ir{constructor(){super(64,32,8,!1),this.A=$t[0]|0,this.B=$t[1]|0,this.C=$t[2]|0,this.D=$t[3]|0,this.E=$t[4]|0,this.F=$t[5]|0,this.G=$t[6]|0,this.H=$t[7]|0}get(){let{A:e,B:t,C:n,D:s,E:i,F:o,G:a,H:c}=this;return[e,t,n,s,i,o,a,c]}set(e,t,n,s,i,o,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=s|0,this.E=i|0,this.F=o|0,this.G=a|0,this.H=c|0}process(e,t){for(let l=0;l<16;l++,t+=4)Gt[l]=e.getUint32(t,!1);for(let l=16;l<64;l++){let m=Gt[l-15],u=Gt[l-2],d=Ze(m,7)^Ze(m,18)^m>>>3,p=Ze(u,17)^Ze(u,19)^u>>>10;Gt[l]=p+Gt[l-7]+d+Gt[l-16]|0}let{A:n,B:s,C:i,D:o,E:a,F:c,G:h,H:f}=this;for(let l=0;l<64;l++){let m=Ze(a,6)^Ze(a,11)^Ze(a,25),u=f+m+hc(a,c,h)+fp[l]+Gt[l]|0,p=(Ze(n,2)^Ze(n,13)^Ze(n,22))+dc(n,s,i)|0;f=h,h=c,c=a,a=o+u|0,o=i,i=s,s=n,n=u+p|0}n=n+this.A|0,s=s+this.B|0,i=i+this.C|0,o=o+this.D|0,a=a+this.E|0,c=c+this.F|0,h=h+this.G|0,f=f+this.H|0,this.set(n,s,i,o,a,c,h,f)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ul=Cn(()=>new Co);function hp(r){let e=tn(r);st(e,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:t,Fp:n,a:s}=e;if(t){if(!n.eql(s,n.ZERO))throw new Error("Endomorphism can only be defined for Koblitz curves that have a=0");if(typeof t!="object"||typeof t.beta!="bigint"||typeof t.splitScalar!="function")throw new Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...e})}var{bytesToNumberBE:dp,hexToBytes:pp}=Dn,ar={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(r){let{Err:e}=ar;if(r.length<2||r[0]!==2)throw new e("Invalid signature integer tag");let t=r[1],n=r.subarray(2,t+2);if(!t||n.length!==t)throw new e("Invalid signature integer: wrong length");if(n[0]&128)throw new e("Invalid signature integer: negative");if(n[0]===0&&!(n[1]&128))throw new e("Invalid signature integer: unnecessary leading zero");return{d:dp(n),l:r.subarray(t+2)}},toSig(r){let{Err:e}=ar,t=typeof r=="string"?pp(r):r;kr(t);let n=t.length;if(n<2||t[0]!=48)throw new e("Invalid signature tag");if(t[1]!==n-2)throw new e("Invalid signature: incorrect length");let{d:s,l:i}=ar._parseInt(t.subarray(2)),{d:o,l:a}=ar._parseInt(i);if(a.length)throw new e("Invalid signature: left bytes after parsing");return{r:s,s:o}},hexFromSig(r){let e=h=>Number.parseInt(h[0],16)&8?"00"+h:h,t=h=>{let f=h.toString(16);return f.length&1?`0${f}`:f},n=e(t(r.s)),s=e(t(r.r)),i=n.length/2,o=s.length/2,a=t(i),c=t(o);return`30${t(o+i+4)}02${c}${s}02${a}${n}`}},It=BigInt(0),We=BigInt(1),bb=BigInt(2),Dl=BigInt(3),wb=BigInt(4);function gp(r){let e=hp(r),{Fp:t}=e,n=e.toBytes||((d,p,b)=>{let g=p.toAffine();return bt(Uint8Array.from([4]),t.toBytes(g.x),t.toBytes(g.y))}),s=e.fromBytes||(d=>{let p=d.subarray(1),b=t.fromBytes(p.subarray(0,t.BYTES)),g=t.fromBytes(p.subarray(t.BYTES,2*t.BYTES));return{x:b,y:g}});function i(d){let{a:p,b}=e,g=t.sqr(d),w=t.mul(g,d);return t.add(t.add(w,t.mul(d,p)),b)}if(!t.eql(t.sqr(e.Gy),i(e.Gx)))throw new Error("bad generator point: equation left != right");function o(d){return typeof d=="bigint"&&It<d&&d<e.n}function a(d){if(!o(d))throw new Error("Expected valid bigint: 0 < bigint < curve.n")}function c(d){let{allowedPrivateKeyLengths:p,nByteLength:b,wrapPrivateKey:g,n:w}=e;if(p&&typeof d!="bigint"){if(Pt(d)&&(d=mt(d)),typeof d!="string"||!p.includes(d.length))throw new Error("Invalid key");d=d.padStart(b*2,"0")}let y;try{y=typeof d=="bigint"?d:yt(ce("private key",d,b))}catch{throw new Error(`private key must be ${b} bytes, hex or bigint, not ${typeof d}`)}return g&&(y=Q(y,w)),a(y),y}let h=new Map;function f(d){if(!(d instanceof l))throw new Error("ProjectivePoint expected")}class l{constructor(p,b,g){if(this.px=p,this.py=b,this.pz=g,p==null||!t.isValid(p))throw new Error("x required");if(b==null||!t.isValid(b))throw new Error("y required");if(g==null||!t.isValid(g))throw new Error("z required")}static fromAffine(p){let{x:b,y:g}=p||{};if(!p||!t.isValid(b)||!t.isValid(g))throw new Error("invalid affine point");if(p instanceof l)throw new Error("projective point not allowed");let w=y=>t.eql(y,t.ZERO);return w(b)&&w(g)?l.ZERO:new l(b,g,t.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(p){let b=t.invertBatch(p.map(g=>g.pz));return p.map((g,w)=>g.toAffine(b[w])).map(l.fromAffine)}static fromHex(p){let b=l.fromAffine(s(ce("pointHex",p)));return b.assertValidity(),b}static fromPrivateKey(p){return l.BASE.multiply(c(p))}_setWindowSize(p){this._WINDOW_SIZE=p,h.delete(this)}assertValidity(){if(this.is0()){if(e.allowInfinityPoint&&!t.is0(this.py))return;throw new Error("bad point: ZERO")}let{x:p,y:b}=this.toAffine();if(!t.isValid(p)||!t.isValid(b))throw new Error("bad point: x or y not FE");let g=t.sqr(b),w=i(p);if(!t.eql(g,w))throw new Error("bad point: equation left != right");if(!this.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:p}=this.toAffine();if(t.isOdd)return!t.isOdd(p);throw new Error("Field doesn't support isOdd")}equals(p){f(p);let{px:b,py:g,pz:w}=this,{px:y,py:E,pz:x}=p,S=t.eql(t.mul(b,x),t.mul(y,w)),v=t.eql(t.mul(g,x),t.mul(E,w));return S&&v}negate(){return new l(this.px,t.neg(this.py),this.pz)}double(){let{a:p,b}=e,g=t.mul(b,Dl),{px:w,py:y,pz:E}=this,x=t.ZERO,S=t.ZERO,v=t.ZERO,B=t.mul(w,w),$=t.mul(y,y),q=t.mul(E,E),P=t.mul(w,y);return P=t.add(P,P),v=t.mul(w,E),v=t.add(v,v),x=t.mul(p,v),S=t.mul(g,q),S=t.add(x,S),x=t.sub($,S),S=t.add($,S),S=t.mul(x,S),x=t.mul(P,x),v=t.mul(g,v),q=t.mul(p,q),P=t.sub(B,q),P=t.mul(p,P),P=t.add(P,v),v=t.add(B,B),B=t.add(v,B),B=t.add(B,q),B=t.mul(B,P),S=t.add(S,B),q=t.mul(y,E),q=t.add(q,q),B=t.mul(q,P),x=t.sub(x,B),v=t.mul(q,$),v=t.add(v,v),v=t.add(v,v),new l(x,S,v)}add(p){f(p);let{px:b,py:g,pz:w}=this,{px:y,py:E,pz:x}=p,S=t.ZERO,v=t.ZERO,B=t.ZERO,$=e.a,q=t.mul(e.b,Dl),P=t.mul(b,y),te=t.mul(g,E),C=t.mul(w,x),Ke=t.add(b,g),_=t.add(y,E);Ke=t.mul(Ke,_),_=t.add(P,te),Ke=t.sub(Ke,_),_=t.add(b,w);let N=t.add(y,x);return _=t.mul(_,N),N=t.add(P,C),_=t.sub(_,N),N=t.add(g,w),S=t.add(E,x),N=t.mul(N,S),S=t.add(te,C),N=t.sub(N,S),B=t.mul($,_),S=t.mul(q,C),B=t.add(S,B),S=t.sub(te,B),B=t.add(te,B),v=t.mul(S,B),te=t.add(P,P),te=t.add(te,P),C=t.mul($,C),_=t.mul(q,_),te=t.add(te,C),C=t.sub(P,C),C=t.mul($,C),_=t.add(_,C),P=t.mul(te,_),v=t.add(v,P),P=t.mul(N,_),S=t.mul(Ke,S),S=t.sub(S,P),P=t.mul(Ke,te),B=t.mul(N,B),B=t.add(B,P),new l(S,v,B)}subtract(p){return this.add(p.negate())}is0(){return this.equals(l.ZERO)}wNAF(p){return u.wNAFCached(this,h,p,b=>{let g=t.invertBatch(b.map(w=>w.pz));return b.map((w,y)=>w.toAffine(g[y])).map(l.fromAffine)})}multiplyUnsafe(p){let b=l.ZERO;if(p===It)return b;if(a(p),p===We)return this;let{endo:g}=e;if(!g)return u.unsafeLadder(this,p);let{k1neg:w,k1:y,k2neg:E,k2:x}=g.splitScalar(p),S=b,v=b,B=this;for(;y>It||x>It;)y&We&&(S=S.add(B)),x&We&&(v=v.add(B)),B=B.double(),y>>=We,x>>=We;return w&&(S=S.negate()),E&&(v=v.negate()),v=new l(t.mul(v.px,g.beta),v.py,v.pz),S.add(v)}multiply(p){a(p);let b=p,g,w,{endo:y}=e;if(y){let{k1neg:E,k1:x,k2neg:S,k2:v}=y.splitScalar(b),{p:B,f:$}=this.wNAF(x),{p:q,f:P}=this.wNAF(v);B=u.constTimeNegate(E,B),q=u.constTimeNegate(S,q),q=new l(t.mul(q.px,y.beta),q.py,q.pz),g=B.add(q),w=$.add(P)}else{let{p:E,f:x}=this.wNAF(b);g=E,w=x}return l.normalizeZ([g,w])[0]}multiplyAndAddUnsafe(p,b,g){let w=l.BASE,y=(x,S)=>S===It||S===We||!x.equals(w)?x.multiplyUnsafe(S):x.multiply(S),E=y(this,b).add(y(p,g));return E.is0()?void 0:E}toAffine(p){let{px:b,py:g,pz:w}=this,y=this.is0();p==null&&(p=y?t.ONE:t.inv(w));let E=t.mul(b,p),x=t.mul(g,p),S=t.mul(w,p);if(y)return{x:t.ZERO,y:t.ZERO};if(!t.eql(S,t.ONE))throw new Error("invZ was invalid");return{x:E,y:x}}isTorsionFree(){let{h:p,isTorsionFree:b}=e;if(p===We)return!0;if(b)return b(l,this);throw new Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:p,clearCofactor:b}=e;return p===We?this:b?b(l,this):this.multiplyUnsafe(e.h)}toRawBytes(p=!0){return this.assertValidity(),n(l,this,p)}toHex(p=!0){return mt(this.toRawBytes(p))}}l.BASE=new l(e.Gx,e.Gy,t.ONE),l.ZERO=new l(t.ZERO,t.ONE,t.ZERO);let m=e.nBitLength,u=Mn(l,e.endo?Math.ceil(m/2):m);return{CURVE:e,ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:i,isWithinCurveOrder:o}}function mp(r){let e=tn(r);return st(e,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...e})}function Ol(r){let e=mp(r),{Fp:t,n}=e,s=t.BYTES+1,i=2*t.BYTES+1;function o(_){return It<_&&_<t.ORDER}function a(_){return Q(_,n)}function c(_){return On(_,n)}let{ProjectivePoint:h,normPrivateKeyToScalar:f,weierstrassEquation:l,isWithinCurveOrder:m}=gp({...e,toBytes(_,N,H){let I=N.toAffine(),A=t.toBytes(I.x),R=bt;return H?R(Uint8Array.from([N.hasEvenY()?2:3]),A):R(Uint8Array.from([4]),A,t.toBytes(I.y))},fromBytes(_){let N=_.length,H=_[0],I=_.subarray(1);if(N===s&&(H===2||H===3)){let A=yt(I);if(!o(A))throw new Error("Point is not on curve");let R=l(A),L;try{L=t.sqrt(R)}catch(K){let Z=K instanceof Error?": "+K.message:"";throw new Error("Point is not on curve"+Z)}let O=(L&We)===We;return(H&1)===1!==O&&(L=t.neg(L)),{x:A,y:L}}else if(N===i&&H===4){let A=t.fromBytes(I.subarray(0,t.BYTES)),R=t.fromBytes(I.subarray(t.BYTES,2*t.BYTES));return{x:A,y:R}}else throw new Error(`Point of length ${N} was invalid. Expected ${s} compressed bytes or ${i} uncompressed bytes`)}}),u=_=>mt(Vt(_,e.nByteLength));function d(_){let N=n>>We;return _>N}function p(_){return d(_)?a(-_):_}let b=(_,N,H)=>yt(_.slice(N,H));class g{constructor(N,H,I){this.r=N,this.s=H,this.recovery=I,this.assertValidity()}static fromCompact(N){let H=e.nByteLength;return N=ce("compactSignature",N,H*2),new g(b(N,0,H),b(N,H,2*H))}static fromDER(N){let{r:H,s:I}=ar.toSig(ce("DER",N));return new g(H,I)}assertValidity(){if(!m(this.r))throw new Error("r must be 0 < r < CURVE.n");if(!m(this.s))throw new Error("s must be 0 < s < CURVE.n")}addRecoveryBit(N){return new g(this.r,this.s,N)}recoverPublicKey(N){let{r:H,s:I,recovery:A}=this,R=v(ce("msgHash",N));if(A==null||![0,1,2,3].includes(A))throw new Error("recovery id invalid");let L=A===2||A===3?H+e.n:H;if(L>=t.ORDER)throw new Error("recovery id 2 or 3 invalid");let O=A&1?"03":"02",F=h.fromHex(O+u(L)),K=c(L),Z=a(-R*K),j=a(I*K),Y=h.BASE.multiplyAndAddUnsafe(F,Z,j);if(!Y)throw new Error("point at infinify");return Y.assertValidity(),Y}hasHighS(){return d(this.s)}normalizeS(){return this.hasHighS()?new g(this.r,a(-this.s),this.recovery):this}toDERRawBytes(){return Qt(this.toDERHex())}toDERHex(){return ar.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return Qt(this.toCompactHex())}toCompactHex(){return u(this.r)+u(this.s)}}let w={isValidPrivateKey(_){try{return f(_),!0}catch{return!1}},normPrivateKeyToScalar:f,randomPrivateKey:()=>{let _=Ji(e.n);return Ac(e.randomBytes(_),e.n)},precompute(_=8,N=h.BASE){return N._setWindowSize(_),N.multiply(BigInt(3)),N}};function y(_,N=!0){return h.fromPrivateKey(_).toRawBytes(N)}function E(_){let N=Pt(_),H=typeof _=="string",I=(N||H)&&_.length;return N?I===s||I===i:H?I===2*s||I===2*i:_ instanceof h}function x(_,N,H=!0){if(E(_))throw new Error("first arg must be private key");if(!E(N))throw new Error("second arg must be public key");return h.fromHex(N).multiply(f(_)).toRawBytes(H)}let S=e.bits2int||function(_){let N=yt(_),H=_.length*8-e.nBitLength;return H>0?N>>BigInt(H):N},v=e.bits2int_modN||function(_){return a(S(_))},B=en(e.nBitLength);function $(_){if(typeof _!="bigint")throw new Error("bigint expected");if(!(It<=_&&_<B))throw new Error(`bigint expected < 2^${e.nBitLength}`);return Vt(_,e.nByteLength)}function q(_,N,H=P){if(["recovered","canonical"].some(ie=>ie in H))throw new Error("sign() legacy options not supported");let{hash:I,randomBytes:A}=e,{lowS:R,prehash:L,extraEntropy:O}=H;R==null&&(R=!0),_=ce("msgHash",_),L&&(_=ce("prehashed msgHash",I(_)));let F=v(_),K=f(N),Z=[$(K),$(F)];if(O!=null&&O!==!1){let ie=O===!0?A(t.BYTES):O;Z.push(ce("extraEntropy",ie))}let j=bt(...Z),Y=F;function ue(ie){let be=S(ie);if(!m(be))return;let we=c(be),he=h.BASE.multiply(be).toAffine(),Ae=a(he.x);if(Ae===It)return;let ft=a(we*a(Y+Ae*K));if(ft===It)return;let Zt=(he.x===Ae?0:2)|Number(he.y&We),jr=ft;return R&&d(ft)&&(jr=p(ft),Zt^=1),new g(Ae,jr,Zt)}return{seed:j,k2sig:ue}}let P={lowS:e.lowS,prehash:!1},te={lowS:e.lowS,prehash:!1};function C(_,N,H=P){let{seed:I,k2sig:A}=q(_,N,H),R=e;return Wi(R.hash.outputLen,R.nByteLength,R.hmac)(I,A)}h.BASE._setWindowSize(8);function Ke(_,N,H,I=te){let A=_;if(N=ce("msgHash",N),H=ce("publicKey",H),"strict"in I)throw new Error("options.strict was renamed to lowS");let{lowS:R,prehash:L}=I,O,F;try{if(typeof A=="string"||Pt(A))try{O=g.fromDER(A)}catch(he){if(!(he instanceof ar.Err))throw he;O=g.fromCompact(A)}else if(typeof A=="object"&&typeof A.r=="bigint"&&typeof A.s=="bigint"){let{r:he,s:Ae}=A;O=new g(he,Ae)}else throw new Error("PARSE");F=h.fromHex(H)}catch(he){if(he.message==="PARSE")throw new Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(R&&O.hasHighS())return!1;L&&(N=e.hash(N));let{r:K,s:Z}=O,j=v(N),Y=c(Z),ue=a(j*Y),ie=a(K*Y),be=h.BASE.multiplyAndAddUnsafe(F,ue,ie)?.toAffine();return be?a(be.x)===K:!1}return{CURVE:e,getPublicKey:y,getSharedSecret:x,sign:C,verify:Ke,ProjectivePoint:h,Signature:g,utils:w}}function yp(r){return{hash:r,hmac:(e,...t)=>an(r,e,qi(...t)),randomBytes:_r}}function Pl(r,e){let t=n=>Ol({...r,...yp(n)});return Object.freeze({...t(e),create:t})}var Hl=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),Ml=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),bp=BigInt(1),Lo=BigInt(2),Vl=(r,e)=>(r+e/Lo)/e;function wp(r){let e=Hl,t=BigInt(3),n=BigInt(6),s=BigInt(11),i=BigInt(22),o=BigInt(23),a=BigInt(44),c=BigInt(88),h=r*r*r%e,f=h*h*r%e,l=ne(f,t,e)*f%e,m=ne(l,t,e)*f%e,u=ne(m,Lo,e)*h%e,d=ne(u,s,e)*u%e,p=ne(d,i,e)*d%e,b=ne(p,a,e)*p%e,g=ne(b,c,e)*b%e,w=ne(g,a,e)*p%e,y=ne(w,t,e)*f%e,E=ne(y,o,e)*d%e,x=ne(E,n,e)*h%e,S=ne(x,Lo,e);if(!Uo.eql(Uo.sqr(S),r))throw new Error("Cannot find square root");return S}var Uo=Pn(Hl,void 0,void 0,{sqrt:wp}),tt=Pl({a:BigInt(0),b:BigInt(7),Fp:Uo,n:Ml,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:r=>{let e=Ml,t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-bp*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),s=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=t,o=BigInt("0x100000000000000000000000000000000"),a=Vl(i*r,e),c=Vl(-n*r,e),h=Q(r-a*t-c*s,e),f=Q(-a*n-c*i,e),l=h>o,m=f>o;if(l&&(h=e-h),m&&(f=e-f),h>o||f>o)throw new Error("splitScalar: Endomorphism failed, k="+r);return{k1neg:l,k1:h,k2neg:m,k2:f}}}},Ul),kb=BigInt(0);var Tb=tt.ProjectivePoint;function Fl(){return tt.utils.randomPrivateKey()}function Kl(r,e){let t=me.digest(e instanceof Uint8Array?e:e.subarray());if($e(t))return t.then(({digest:n})=>tt.sign(n,r).toDERRawBytes()).catch(n=>{throw new U(String(n),"ERR_INVALID_INPUT")});try{return tt.sign(t.digest,r).toDERRawBytes()}catch(n){throw new U(String(n),"ERR_INVALID_INPUT")}}function ql(r,e,t){let n=me.digest(t instanceof Uint8Array?t:t.subarray());if($e(n))return n.then(({digest:s})=>tt.verify(e,s,r)).catch(s=>{throw new U(String(s),"ERR_INVALID_INPUT")});try{return tt.verify(e,n.digest,r)}catch(s){throw new U(String(s),"ERR_INVALID_INPUT")}}function zl(r){return tt.ProjectivePoint.fromHex(r).toRawBytes(!0)}function $l(r){try{tt.getPublicKey(r,!0)}catch(e){throw new U(String(e),"ERR_INVALID_PRIVATE_KEY")}}function Do(r){try{tt.ProjectivePoint.fromHex(r)}catch(e){throw new U(String(e),"ERR_INVALID_PUBLIC_KEY")}}function Gl(r){try{return tt.getPublicKey(r,!0)}catch(e){throw new U(String(e),"ERR_INVALID_PRIVATE_KEY")}}var wn=class{_key;constructor(e){Do(e),this._key=e}verify(e,t){return ql(this._key,t,e)}marshal(){return zl(this._key)}get bytes(){return it.encode({Type:se.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}async hash(){let e=me.digest(this.bytes),t;return $e(e)?{bytes:t}=await e:t=e.bytes,t}},xn=class{_key;_publicKey;constructor(e,t){this._key=e,this._publicKey=t??Gl(e),$l(this._key),Do(this._publicKey)}sign(e){return Kl(this._key,e)}get public(){return new wn(this._publicKey)}marshal(){return this._key}get bytes(){return ot.encode({Type:se.Secp256k1,Data:this.marshal()}).subarray()}equals(e){return ae(this.bytes,e.bytes)}hash(){let e=me.digest(this.bytes);return $e(e)?e.then(({bytes:t})=>t):e.bytes}async id(){let e=await this.public.hash();return W(e,"base58btc")}async export(e,t="libp2p-key"){if(t==="libp2p-key")return Nr(this.bytes,e);throw new U(`export format '${t}' is not supported`,"ERR_INVALID_EXPORT_FORMAT")}};function vp(r){return new xn(r)}function Ep(r){return new wn(r)}async function Ap(){let r=Fl();return new xn(r)}var cr={rsa:No,ed25519:vo,secp256k1:Oo};function jl(r){let e=Object.keys(cr).join(" / ");return new U(`invalid or unsupported key type ${r}. Must be ${e}`,"ERR_UNSUPPORTED_KEY_TYPE")}function Wl(r){let e=it.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case se.RSA:return cr.rsa.unmarshalRsaPublicKey(t);case se.Ed25519:return cr.ed25519.unmarshalEd25519PublicKey(t);case se.Secp256k1:return cr.secp256k1.unmarshalSecp256k1PublicKey(t);default:throw jl(e.Type??"unknown")}}async function Yl(r){let e=ot.decode(r),t=e.Data??new Uint8Array;switch(e.Type){case se.RSA:return cr.rsa.unmarshalRsaPrivateKey(t);case se.Ed25519:return cr.ed25519.unmarshalEd25519PrivateKey(t);case se.Secp256k1:return cr.secp256k1.unmarshalSecp256k1PrivateKey(t);default:throw jl(e.Type??"RSA")}}var Xl=Symbol.for("@achingbrain/uint8arraylist");function Zl(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let s=t+n.byteLength;if(e<s)return{buf:n,index:e-t};t=s}throw new RangeError("index is out of bounds")}function Os(r){return!!r?.[Xl]}var Ve=class r{bufs;length;[Xl]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(Os(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(Os(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=Zl(this.bufs,e);return t.buf[t.index]}set(e,t){let n=Zl(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(Os(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:s}=this._subList(e,t);return ke(n,s)}subarray(e,t){let{bufs:n,length:s}=this._subList(e,t);return n.length===1?n[0]:ke(n,s)}sublist(e,t){let{bufs:n,length:s}=this._subList(e,t),i=new r;return i.length=s,i.bufs=[...n],i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],s=0;for(let i=0;i<this.bufs.length;i++){let o=this.bufs[i],a=s,c=a+o.byteLength;if(s=c,e>=c)continue;let h=e>=a&&e<c,f=t>a&&t<=c;if(h&&f){if(e===a&&t===c){n.push(o);break}let l=e-a;n.push(o.subarray(l,l+(t-e)));break}if(h){if(e===0){n.push(o);continue}n.push(o.subarray(e-a));continue}if(f){if(t===c){n.push(o);break}n.push(o.subarray(0,t-a));break}n.push(o)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!Os(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let s=n.byteLength;if(s===0)throw new TypeError("search must be at least 1 byte long");let i=256,o=new Int32Array(i);for(let l=0;l<i;l++)o[l]=-1;for(let l=0;l<s;l++)o[n[l]]=l;let a=o,c=this.byteLength-n.byteLength,h=n.byteLength-1,f;for(let l=t;l<=c;l+=f){f=0;for(let m=h;m>=0;m--){let u=this.get(l+m);if(n[m]!==u){f=Math.max(1,m-a[u]);break}}if(f===0)return l}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ne(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let s=xe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt16(0,t,n),this.write(s,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let s=xe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setInt32(0,t,n),this.write(s,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let s=xe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigInt64(0,t,n),this.write(s,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ne(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let s=xe(2);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint16(0,t,n),this.write(s,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let s=xe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setUint32(0,t,n),this.write(s,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let s=xe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setBigUint64(0,t,n),this.write(s,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let s=xe(4);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat32(0,t,n),this.write(s,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let s=xe(8);new DataView(s.buffer,s.byteOffset,s.byteLength).setFloat64(0,t,n),this.write(s,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!ae(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((s,i)=>s+i.byteLength,0)),n.length=t,n}};var Jl={ERR_SIGNATURE_NOT_VALID:"ERR_SIGNATURE_NOT_VALID"};var vn;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.publicKey!=null&&t.publicKey.byteLength>0&&(n.uint32(10),n.bytes(t.publicKey)),t.payloadType!=null&&t.payloadType.byteLength>0&&(n.uint32(18),n.bytes(t.payloadType)),t.payload!=null&&t.payload.byteLength>0&&(n.uint32(26),n.bytes(t.payload)),t.signature!=null&&t.signature.byteLength>0&&(n.uint32(42),n.bytes(t.signature)),s.lengthDelimited!==!1&&n.ldelim()},(t,n)=>{let s={publicKey:new Uint8Array(0),payloadType:new Uint8Array(0),payload:new Uint8Array(0),signature:new Uint8Array(0)},i=n==null?t.len:t.pos+n;for(;t.pos<i;){let o=t.uint32();switch(o>>>3){case 1:s.publicKey=t.bytes();break;case 2:s.payloadType=t.bytes();break;case 3:s.payload=t.bytes();break;case 5:s.signature=t.bytes();break;default:t.skipType(o&7);break}}return s})),e),r.encode=t=>Pe(t,r.codec()),r.decode=t=>Oe(t,r.codec())})(vn||(vn={}));var En=class r{static createFromProtobuf=async e=>{let t=vn.decode(e),n=await ac(t.publicKey);return new r({peerId:n,payloadType:t.payloadType,payload:t.payload,signature:t.signature})};static seal=async(e,t)=>{if(t.privateKey==null)throw new Error("Missing private key");let n=e.domain,s=e.codec,i=e.marshal(),o=Ql(n,s,i),c=await(await Yl(t.privateKey)).sign(o.subarray());return new r({peerId:t,payloadType:s,payload:i,signature:c})};static openAndCertify=async(e,t)=>{let n=await r.createFromProtobuf(e);if(!await n.validate(t))throw new U("envelope signature is not valid for the given domain",Jl.ERR_SIGNATURE_NOT_VALID);return n};peerId;payloadType;payload;signature;marshaled;constructor(e){let{peerId:t,payloadType:n,payload:s,signature:i}=e;this.peerId=t,this.payloadType=n,this.payload=s,this.signature=i}marshal(){if(this.peerId.publicKey==null)throw new Error("Missing public key");return this.marshaled==null&&(this.marshaled=vn.encode({publicKey:this.peerId.publicKey,payloadType:this.payloadType,payload:this.payload.subarray(),signature:this.signature})),this.marshaled}equals(e){return ae(this.marshal(),e.marshal())}async validate(e){let t=Ql(e,this.payloadType,this.payload);if(this.peerId.publicKey==null)throw new Error("Missing public key");return Wl(this.peerId.publicKey).verify(t.subarray(),this.signature)}},Ql=(r,e,t)=>{let n=M(r),s=Ge(n.byteLength),i=Ge(e.length),o=Ge(t.length);return new Ve(s,n,i,e,o,t)};var Ps=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,s){return this.readAtomically(()=>{let i=0,o=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",h=2**(8*s)-1;for(;;){let f=this.readAtomically(()=>{let l=this.readChar();if(l===void 0)return;let m=Number.parseInt(l,e);if(!Number.isNaN(m))return m});if(f===void 0)break;if(i*=e,i+=f,i>h||(o+=1,t!==void 0&&o>t))return}if(o!==0)return!n&&c&&o>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let s=n*2;if(n<t.length-3){let o=this.readSeparator(":",n,()=>this.readIPv4Addr());if(o!==void 0)return t[s]=o[0],t[s+1]=o[1],t[s+2]=o[2],t[s+3]=o[3],[s+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[s,!1];t[s]=i>>8,t[s+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,s]=e(t);if(n===16)return t;if(s||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),o=16-(n+2),[a]=e(i.subarray(0,o));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var eu=45,Sp=15,Vr=new Ps;function Po(r){if(!(r.length>Sp))return Vr.new(r).parseWith(()=>Vr.readIPv4Addr())}function Mo(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>eu))return Vr.new(r).parseWith(()=>Vr.readIPv6Addr())}function Ms(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>eu))return Vr.new(r).parseWith(()=>Vr.readIPAddr())}var pw=parseInt("0xFFFF",16),gw=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function nu(r){return!!Po(r)}function su(r){return!!Mo(r)}function Vs(r){return!!Ms(r)}var iu=nu,Tp=su,Vo=function(r){let e=0;if(r=r.toString().trim(),iu(r)){let t=new Uint8Array(e+4);return r.split(/\./g).forEach(n=>{t[e++]=parseInt(n,10)&255}),t}if(Tp(r)){let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=iu(t[n]),o;i&&(o=Vo(t[n]),t[n]=W(o.slice(0,2),"base16")),o!=null&&++n<8&&t.splice(n,0,W(o.slice(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let s=new Uint8Array(e+16);for(n=0;n<t.length;n++){let i=parseInt(t[n],16);s[e++]=i>>8&255,s[e++]=i&255}return s}throw new Error("invalid ip address")},ou=function(r,e=0,t){e=~~e,t=t??r.length-e;let n=new DataView(r.buffer);if(t===4){let s=[];for(let i=0;i<t;i++)s.push(r[e+i]);return s.join(".")}if(t===16){let s=[];for(let i=0;i<t;i+=2)s.push(n.getUint16(e+i).toString(16));return s.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Hr={},Ho={},Np=[[4,32,"ip4"],[6,16,"tcp"],[33,16,"dccp"],[41,128,"ip6"],[42,-1,"ip6zone"],[43,8,"ipcidr"],[53,-1,"dns",!0],[54,-1,"dns4",!0],[55,-1,"dns6",!0],[56,-1,"dnsaddr",!0],[132,16,"sctp"],[273,16,"udp"],[275,0,"p2p-webrtc-star"],[276,0,"p2p-webrtc-direct"],[277,0,"p2p-stardust"],[280,0,"webrtc-direct"],[281,0,"webrtc"],[290,0,"p2p-circuit"],[301,0,"udt"],[302,0,"utp"],[400,-1,"unix",!1,!0],[421,-1,"ipfs"],[421,-1,"p2p"],[443,0,"https"],[444,96,"onion"],[445,296,"onion3"],[446,-1,"garlic64"],[448,0,"tls"],[449,-1,"sni"],[460,0,"quic"],[461,0,"quic-v1"],[465,0,"webtransport"],[466,-1,"certhash"],[477,0,"ws"],[478,0,"wss"],[479,0,"p2p-websocket-star"],[480,0,"http"],[481,-1,"http-path"],[777,-1,"memory"]];Np.forEach(r=>{let e=Cp(...r);Ho[e.code]=e,Hr[e.name]=e});function Cp(r,e,t,n,s){return{code:r,size:e,name:t,resolvable:!!n,path:!!s}}function ee(r){if(typeof r=="number"){if(Ho[r]!=null)return Ho[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Hr[r]!=null)return Hr[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Jw=ee("ip4"),Qw=ee("ip6"),e1=ee("ipcidr");function zo(r,e){switch(ee(r).code){case 4:case 41:return Up(e);case 42:return qo(e);case 6:case 273:case 33:case 132:return lu(e).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return qo(e);case 421:return Mp(e);case 444:return cu(e);case 445:return cu(e);case 466:return Pp(e);case 481:return globalThis.encodeURIComponent(qo(e));default:return W(e,"base16")}}function $o(r,e){switch(ee(r).code){case 4:return au(e);case 41:return au(e);case 42:return Ko(e);case 6:case 273:case 33:case 132:return Go(parseInt(e,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return Ko(e);case 421:return Dp(e);case 444:return Vp(e);case 445:return Hp(e);case 466:return Op(e);case 481:return Ko(globalThis.decodeURIComponent(e));default:return M(e,"base16")}}var Fo=Object.values(Ct).map(r=>r.decoder),Lp=function(){let r=Fo[0].or(Fo[1]);return Fo.slice(2).forEach(e=>r=r.or(e)),r}();function au(r){if(!Vs(r))throw new Error("invalid ip address");return Vo(r)}function Up(r){let e=ou(r,0,r.length);if(e==null)throw new Error("ipBuff is required");if(!Vs(e))throw new Error("invalid ip address");return e}function Go(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r),new Uint8Array(e)}function lu(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function Ko(r){let e=M(r),t=Uint8Array.from(Ge(e.length));return ke([t,e],t.length+e.length)}function qo(r){let e=xt(r);if(r=r.slice(Be(e)),r.length!==e)throw new Error("inconsistent lengths");return W(r)}function Dp(r){let e;r[0]==="Q"||r[0]==="1"?e=Xt(de.decode(`z${r}`)).bytes:e=Le.parse(r).multihash.bytes;let t=Uint8Array.from(Ge(e.length));return ke([t,e],t.length+e.length)}function Op(r){let e=Lp.decode(r),t=Uint8Array.from(Ge(e.length));return ke([t,e],t.length+e.length)}function Pp(r){let e=xt(r),t=r.slice(Be(e));if(t.length!==e)throw new Error("inconsistent lengths");return"u"+W(t,"base64url")}function Mp(r){let e=xt(r),t=r.slice(Be(e));if(t.length!==e)throw new Error("inconsistent lengths");return W(t,"base58btc")}function Vp(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=dt.decode("b"+e[0]),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Go(n);return ke([t,s],t.length+s.length)}function Hp(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=dt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let s=Go(n);return ke([t,s],t.length+s.length)}function cu(r){let e=r.slice(0,r.length-2),t=r.slice(r.length-2),n=W(e,"base32"),s=lu(t);return`${n}:${s}`}function uu(r){r=jo(r);let e=[],t=[],n=null,s=r.split("/").slice(1);if(s.length===1&&s[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<s.length;i++){let o=s[i],a=ee(o);if(a.size===0){e.push([a.code]),t.push([a.code]);continue}if(i++,i>=s.length)throw hu("invalid address: "+r);if(a.path===!0){n=jo(s.slice(i).join("/")),e.push([a.code,$o(a.code,n)]),t.push([a.code,n]);break}let c=$o(a.code,s[i]);e.push([a.code,c]),t.push([a.code,zo(a.code,c)])}return{string:fu(t),bytes:Yo(e),tuples:e,stringTuples:t,path:n}}function Wo(r){let e=[],t=[],n=null,s=0;for(;s<r.length;){let i=xt(r,s),o=Be(i),a=ee(i),c=Fp(a,r.slice(s+o));if(c===0){e.push([i]),t.push([i]),s+=o;continue}let h=r.slice(s+o,s+o+c);if(s+=c+o,s>r.length)throw hu("Invalid address Uint8Array: "+W(r,"base16"));e.push([i,h]);let f=zo(i,h);if(t.push([i,f]),a.path===!0){n=f;break}}return{bytes:Uint8Array.from(r),string:fu(t),tuples:e,stringTuples:t,path:n}}function fu(r){let e=[];return r.map(t=>{let n=ee(t[0]);return e.push(n.name),t.length>1&&t[1]!=null&&e.push(t[1]),null}),jo(e.join("/"))}function Yo(r){return ke(r.map(e=>{let t=ee(e[0]),n=Uint8Array.from(Ge(t.code));return e.length>1&&e[1]!=null&&(n=ke([n,e[1]])),n}))}function Fp(r,e){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let t=xt(e instanceof Uint8Array?e:Uint8Array.from(e));return t+Be(t)}}function jo(r){return"/"+r.trim().split("/").filter(e=>e).join("/")}function hu(r){return new Error("Error parsing address: "+r)}var Kp=Symbol.for("nodejs.util.inspect.custom"),Zo=Symbol.for("@multiformats/js-multiaddr/multiaddr"),qp=[ee("dns").code,ee("dns4").code,ee("dns6").code,ee("dnsaddr").code],Hs=class r{bytes;#e;#t;#r;#n;[Zo]=!0;constructor(e){e==null&&(e="");let t;if(e instanceof Uint8Array)t=Wo(e);else if(typeof e=="string"){if(e.length>0&&e.charAt(0)!=="/")throw new Error(`multiaddr "${e}" must start with a "/"`);t=uu(e)}else if(pu(e))t=Wo(e.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=t.bytes,this.#e=t.string,this.#t=t.tuples,this.#r=t.stringTuples,this.#n=t.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let e,t,n,s,i="",o=ee("tcp"),a=ee("udp"),c=ee("ip4"),h=ee("ip6"),f=ee("dns6"),l=ee("ip6zone");for(let[u,d]of this.stringTuples())u===l.code&&(i=`%${d??""}`),qp.includes(u)&&(t=o.name,s=443,n=`${d??""}${i}`,e=u===f.code?6:4),(u===o.code||u===a.code)&&(t=ee(u).name,s=parseInt(d??"")),(u===c.code||u===h.code)&&(t=ee(u).name,n=`${d??""}${i}`,e=u===h.code?6:4);if(e==null||t==null||n==null||s==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:e,host:n,transport:t,port:s}}protos(){return this.#t.map(([e])=>Object.assign({},ee(e)))}protoCodes(){return this.#t.map(([e])=>e)}protoNames(){return this.#t.map(([e])=>ee(e).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(e){return e=new r(e),new r(this.toString()+e.toString())}decapsulate(e){let t=e.toString(),n=this.toString(),s=n.lastIndexOf(t);if(s<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${e.toString()}`);return new r(n.slice(0,s))}decapsulateCode(e){let t=this.tuples();for(let n=t.length-1;n>=0;n--)if(t[n][0]===e)return new r(Yo(t.slice(0,n)));return this}getPeerId(){try{let e=[];this.stringTuples().forEach(([n,s])=>{n===Hr.p2p.code&&e.push([n,s]),n===Hr["p2p-circuit"].code&&(e=[])});let t=e.pop();if(t?.[1]!=null){let n=t[1];return n[0]==="Q"||n[0]==="1"?W(de.decode(`z${n}`),"base58btc"):W(Le.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(e){return ae(this.bytes,e.bytes)}async resolve(e){let t=this.protos().find(i=>i.resolvable);if(t==null)return[this];let n=du.get(t.name);if(n==null)throw new U(`no available resolver for ${t.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,e)).map(i=>Ee(i))}nodeAddress(){let e=this.toOptions();if(e.transport!=="tcp"&&e.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${e.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:e.family,address:e.host,port:e.port}}isThinWaistAddress(e){let t=(e??this).protos();return!(t.length!==2||t[0].code!==4&&t[0].code!==41||t[1].code!==6&&t[1].code!==273)}[Kp](){return`Multiaddr(${this.#e})`}};var du=new Map;function pu(r){return!!r?.[Zo]}function Ee(r){return new Hs(r)}function He(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var Fs=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function Fr(r,e,t){if(e==null)return r;if(e.aborted)return Promise.reject(new Fs(t?.errorMessage,t?.errorCode));let n,s=new Fs(t?.errorMessage,t?.errorCode);try{return await Promise.race([r,new Promise((i,o)=>{n=()=>{o(s)},e.addEventListener("abort",n)})])}finally{n!=null&&e.removeEventListener("abort",n)}}var Xo=class{readNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.readNext=He(),this.haveNext=He()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=He(),e}async throw(e){return this.ended=!0,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return await this._push(void 0),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=He(),await Fr(this.readNext.promise,t?.signal,t)}};function gu(){return new Xo}var Ks=class extends Error{code;constructor(e,t){super(e),this.code=t}},Jo=class extends Ks{type;constructor(e){super(e,"ABORT_ERR"),this.type="aborted"}};function mu(r,e){let t=gu();r.sink(t).catch(async o=>{await t.end(o)}),r.sink=async o=>{for await(let a of o)await t.push(a);await t.end()};let n=r.source;r.source[Symbol.iterator]!=null?n=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(n=r.source[Symbol.asyncIterator]());let s=new Ve;return{read:async(o,a)=>{a?.signal?.throwIfAborted();let c,h=new Promise((f,l)=>{c=()=>{l(new Jo("Read aborted"))},a?.signal?.addEventListener("abort",c)});try{if(o==null){let{done:l,value:m}=await Promise.race([n.next(),h]);return l===!0?new Ve:m}for(;s.byteLength<o;){let{value:l,done:m}=await Promise.race([n.next(),h]);if(m===!0)throw new Ks("unexpected end of input","ERR_UNEXPECTED_EOF");s.append(l)}let f=s.sublist(0,o);return s.consume(o),f}finally{c!=null&&a?.signal?.removeEventListener("abort",c)}},write:async(o,a)=>{a?.signal?.throwIfAborted(),o instanceof Uint8Array?await t.push(o,a):await t.push(o.subarray(),a)},unwrap:()=>{if(s.byteLength>0){let o=r.source;r.source=async function*(){e?.yieldBytes===!1?yield s:yield*s,yield*o}()}return r}}}var qs=class extends Error{code;constructor(e,t){super(e),this.code=t}};function yu(r,e={}){let t=mu(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Be(e.maxDataLength));let n=e?.lengthDecoder??xt,s=e?.lengthEncoder??Ge;return{read:async o=>{let a=-1,c=new Ve;for(;;){c.append(await t.read(1,o));try{a=n(c)}catch(h){if(h instanceof RangeError)continue;throw h}if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new qs("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new qs("message length too long","ERR_MSG_DATA_TOO_LONG");return t.read(a,o)},write:async(o,a)=>{await t.write(new Ve(s(o.byteLength),o),a)},writeV:async(o,a)=>{let c=new Ve(...o.flatMap(h=>[s(h.byteLength),h]));await t.write(c,a)},unwrap:()=>t.unwrap()}}function jt(r,e){let t=yu(r,e),n={read:async(s,i)=>{let o=await t.read(i);return s.decode(o)},write:async(s,i,o)=>{await t.write(i.encode(s),o)},writeV:async(s,i,o)=>{await t.writeV(s.map(a=>i.encode(a)),o)},pb:s=>({read:async i=>n.read(s,i),write:async(i,o)=>n.write(i,s,o),writeV:async(i,o)=>n.writeV(i,s,o),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var bu="circuit-relay-source",wu="circuit-relay-relay";var xu=BigInt(131072),Ye="/libp2p/circuit/relay/0.2.0/hop",lr="/libp2p/circuit/relay/0.2.0/stop",vu=30*1e3,H1=30*1e3,An=300;var Qo="ERR_RELAYED_DIAL",Eu="ERR_HOP_REQUEST_FAILED",zs="ERR_TRANSFER_LIMIT_EXCEEDED",Au=4096,Su=.001;var J;(function(r){let e;(function(s){s.RESERVE="RESERVE",s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.RESERVE=0]="RESERVE",s[s.CONNECT=1]="CONNECT",s[s.STATUS=2]="STATUS"})(t||(t={})),function(s){s.codec=()=>sr(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Me((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),Kr.codec().encode(s.peer,i)),s.reservation!=null&&(i.uint32(26),$s.codec().encode(s.reservation,i)),s.limit!=null&&(i.uint32(34),qr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(40),z.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=Kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.reservation=$s.codec().decode(s,s.uint32(),{limits:o.limits?.reservation});break}case 4:{a.limit=qr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 5:{a.status=z.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Pe(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(J||(J={}));var Fe;(function(r){let e;(function(s){s.CONNECT="CONNECT",s.STATUS="STATUS"})(e=r.Type||(r.Type={}));let t;(function(s){s[s.CONNECT=0]="CONNECT",s[s.STATUS=1]="STATUS"})(t||(t={})),function(s){s.codec=()=>sr(t)}(e=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Me((s,i,o={})=>{o.lengthDelimited!==!1&&i.fork(),s.type!=null&&(i.uint32(8),r.Type.codec().encode(s.type,i)),s.peer!=null&&(i.uint32(18),Kr.codec().encode(s.peer,i)),s.limit!=null&&(i.uint32(26),qr.codec().encode(s.limit,i)),s.status!=null&&(i.uint32(32),z.codec().encode(s.status,i)),o.lengthDelimited!==!1&&i.ldelim()},(s,i,o={})=>{let a={},c=i==null?s.len:s.pos+i;for(;s.pos<c;){let h=s.uint32();switch(h>>>3){case 1:{a.type=r.Type.codec().decode(s);break}case 2:{a.peer=Kr.codec().decode(s,s.uint32(),{limits:o.limits?.peer});break}case 3:{a.limit=qr.codec().decode(s,s.uint32(),{limits:o.limits?.limit});break}case 4:{a.status=z.codec().decode(s);break}default:{s.skipType(h&7);break}}}return a})),n),r.encode=s=>Pe(s,r.codec()),r.decode=(s,i)=>Oe(s,r.codec(),i)})(Fe||(Fe={}));var Kr;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.id!=null&&t.id.byteLength>0&&(n.uint32(10),n.bytes(t.id)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={id:xe(0),addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.id=t.bytes();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new sn('decode error - map field "addrs" had too many elements',"ERR_MAX_LENGTH");i.addrs.push(t.bytes());break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Kr||(Kr={}));var $s;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{if(s.lengthDelimited!==!1&&n.fork(),t.expire!=null&&t.expire!==0n&&(n.uint32(8),n.uint64(t.expire)),t.addrs!=null)for(let i of t.addrs)n.uint32(18),n.bytes(i);t.voucher!=null&&(n.uint32(26),n.bytes(t.voucher)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={expire:0n,addrs:[]},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.expire=t.uint64();break}case 2:{if(s.limits?.addrs!=null&&i.addrs.length===s.limits.addrs)throw new sn('decode error - map field "addrs" had too many elements',"ERR_MAX_LENGTH");i.addrs.push(t.bytes());break}case 3:{i.voucher=t.bytes();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})($s||($s={}));var qr;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.duration!=null&&(n.uint32(8),n.uint32(t.duration)),t.data!=null&&(n.uint32(16),n.uint64(t.data)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.duration=t.uint32();break}case 2:{i.data=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(qr||(qr={}));var z;(function(r){r.UNUSED="UNUSED",r.OK="OK",r.RESERVATION_REFUSED="RESERVATION_REFUSED",r.RESOURCE_LIMIT_EXCEEDED="RESOURCE_LIMIT_EXCEEDED",r.PERMISSION_DENIED="PERMISSION_DENIED",r.CONNECTION_FAILED="CONNECTION_FAILED",r.NO_RESERVATION="NO_RESERVATION",r.MALFORMED_MESSAGE="MALFORMED_MESSAGE",r.UNEXPECTED_MESSAGE="UNEXPECTED_MESSAGE"})(z||(z={}));var ea;(function(r){r[r.UNUSED=0]="UNUSED",r[r.OK=100]="OK",r[r.RESERVATION_REFUSED=200]="RESERVATION_REFUSED",r[r.RESOURCE_LIMIT_EXCEEDED=201]="RESOURCE_LIMIT_EXCEEDED",r[r.PERMISSION_DENIED=202]="PERMISSION_DENIED",r[r.CONNECTION_FAILED=203]="CONNECTION_FAILED",r[r.NO_RESERVATION=204]="NO_RESERVATION",r[r.MALFORMED_MESSAGE=400]="MALFORMED_MESSAGE",r[r.UNEXPECTED_MESSAGE=401]="UNEXPECTED_MESSAGE"})(ea||(ea={}));(function(r){r.codec=()=>sr(ea)})(z||(z={}));var Gs;(function(r){let e;r.codec=()=>(e==null&&(e=Me((t,n,s={})=>{s.lengthDelimited!==!1&&n.fork(),t.relay!=null&&t.relay.byteLength>0&&(n.uint32(10),n.bytes(t.relay)),t.peer!=null&&t.peer.byteLength>0&&(n.uint32(18),n.bytes(t.peer)),t.expiration!=null&&t.expiration!==0n&&(n.uint32(24),n.uint64(t.expiration)),s.lengthDelimited!==!1&&n.ldelim()},(t,n,s={})=>{let i={relay:xe(0),peer:xe(0),expiration:0n},o=n==null?t.len:t.pos+n;for(;t.pos<o;){let a=t.uint32();switch(a>>>3){case 1:{i.relay=t.bytes();break}case 2:{i.peer=t.bytes();break}case 3:{i.expiration=t.uint64();break}default:{t.skipType(a&7);break}}}return i})),e),r.encode=t=>Pe(t,r.codec()),r.decode=(t,n)=>Oe(t,r.codec(),n)})(Gs||(Gs={}));function js(r){let e=new globalThis.AbortController;function t(){e.abort();for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let s=e.signal;return s.clear=n,s}async function*Bu(r,e,t){let n=e.remaining;for await(let s of r){let i=BigInt(s.byteLength);if(e.remaining-i<0){let o=Number(e.remaining);e.remaining=0n;try{o!==0&&(yield s.subarray(0,o))}catch(a){t.log.error(a)}throw new U(`data limit of ${n} bytes exceeded`,zs)}e.remaining-=i,yield s}}function _u(r,e,t,n,s){function i(l){r.abort(l),e.abort(l)}let o=[t];n?.duration!=null&&o.push(AbortSignal.timeout(n.duration));let a=js(o),c=!1,h=!1,f;n?.data!=null&&(f={remaining:n.data}),queueMicrotask(()=>{let l=()=>{e.abort(new U(`duration limit of ${n?.duration} ms exceeded`,zs))};a.addEventListener("abort",l,{once:!0}),e.sink(f==null?r.source:Bu(r.source,f,s)).catch(m=>{s.log.error("error while relaying streams src -> dst",m),i(m)}).finally(()=>{c=!0,h&&(a.removeEventListener("abort",l),a.clear())})}),queueMicrotask(()=>{let l=()=>{r.abort(new U(`duration limit of ${n?.duration} ms exceeded`,zs))};a.addEventListener("abort",l,{once:!0}),r.sink(f==null?e.source:Bu(e.source,f,s)).catch(m=>{s.log.error("error while relaying streams dst -> src",m),i(m)}).finally(()=>{h=!0,c&&(a.removeEventListener("abort",l),a.clear())})})}function ta(r){let e=r*BigInt(1e3),t=new Date().getTime();return Number(e-BigInt(t))}function ra(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),s=n.value;return n.done===!0||s==null?{done:!0,value:void 0}:{done:!1,value:e(s)}}};return t}var kt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),n)}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return ra(this.map.entries(),e=>[Lt(e[0]),e[1]])}forEach(e){this.map.forEach((t,n)=>{e(t,Lt(n),this)})}get(e){return this.map.get(e.toString())}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),t)}keys(){return ra(this.map.keys(),e=>Lt(e))}values(){return this.map.values()}get size(){return this.map.size}};var sa=pi(na(),1);var zp=Math.LN2*Math.LN2,Ys=class{seeds;bits;buffer;constructor(e={}){e.seeds!=null?this.seeds=e.seeds:this.seeds=Gp(e.hashes??8),this.bits=e.bits??1024,this.buffer=xe(Math.ceil(this.bits/8))}add(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let s=sa.default.x86.hash32(e,this.seeds[t])%this.bits;this.setbit(s)}}has(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.seeds.length;t++){let s=sa.default.x86.hash32(e,this.seeds[t])%this.bits;if(!this.getbit(s))return!1}return!0}clear(){this.buffer.fill(0)}setbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;let s=this.buffer[t];s|=1<<n,this.buffer[t]=s}getbit(e){let t=0,n=e;for(;n>7;)t++,n-=8;return(this.buffer[t]&1<<n)!==0}};function ia(r,e=.005){let t=$p(r,e);return new Ys(t)}function $p(r,e=.005){let t=Math.round(-1*r*Math.log(e)/zp),n=Math.round(t/r*Math.LN2);return{bits:t,hashes:n}}function Gp(r){let e,t,n=[];for(let s=0;s<r;s++)for(e=new Ve(at(4)),n[s]=e.getUint32(0,!0),t=0;t<s;t++)if(n[s]===n[t]){s--;break}return n}var oa=64,rt=class{fp;h;seed;constructor(e,t,n,s=2){if(s>oa)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),o=xe(s);for(let a=0;a<o.length;a++)o[a]=i[a];o.length===0&&(o[0]=7),this.fp=o,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?ae(this.fp,e.fp):!1}};function ur(r,e){return Math.floor(Math.random()*(e-r))+r}var fr=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=ur(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof rt))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var aa={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},Tu={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},Ru=new globalThis.TextEncoder;function jp(r,e){let t=aa[e],n=Tu[e];for(let s=0;s<r.length;s++)n^=BigInt(r[s]),n=BigInt.asUintN(e,n*t);return n}function Wp(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=aa[e],s=Tu[e],i=r;for(;i.length>0;){let o=Ru.encodeInto(i,t);i=i.slice(o.read);for(let a=0;a<o.written;a++)s^=BigInt(t[a]),s=BigInt.asUintN(e,s*n)}return s}function ca(r,{size:e=32,utf8Buffer:t}={}){if(!aa[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return Wp(r,e,t);r=Ru.encode(r)}return jp(r,e)}var Yp=pi(na(),1);var Bn={hash:r=>Number(ca(r,{size:32})),hashV:(r,e)=>Zp(Bn.hash(r,e))};function Zp(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),M(e,"base16")}var Xp=500,_n=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??Bn,this.seed=e.seed??ur(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=M(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new fr(this.bucketSize)),this.buckets[s]==null&&(this.buckets[s]=new fr(this.bucketSize)),this.buckets[n].add(t)||this.buckets[s].add(t))return this.count++,!0;let i=[n,s],o=i[ur(0,i.length-1)];this.buckets[o]==null&&(this.buckets[o]=new fr(this.bucketSize));for(let a=0;a<Xp;a++){let c=this.buckets[o].swap(t);if(c!=null&&(o=(o^c.hash())%this.filterSize,this.buckets[o]==null&&(this.buckets[o]=new fr(this.bucketSize)),this.buckets[o].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=M(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.has(t)??!1;if(s)return s;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=M(e));let t=new rt(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,s=this.buckets[n]?.remove(t)??!1;if(s)return this.count--,s;let i=(n^t.hash())%this.filterSize,o=this.buckets[i]?.remove(t)??!1;return o&&this.count--,o}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=95}},Jp={1:.5,2:.84,4:.95,8:.98};function Qp(r=.001){return r>.002?2:r>1e-5?4:8}function Nu(r,e=.001){let t=Qp(e),n=Jp[t],s=Math.round(r/n),i=Math.min(Math.ceil(Math.log(s/t))+2,oa);return{filterSize:s,bucketSize:t,fingerprintSize:i}}var Zs=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??Bn,this.seed=e.seed??ur(0,Math.pow(2,10)),this.filterSeries=[new _n({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=M(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new _n({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=M(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function la(r,e=.001,t){return new Zs({...Nu(r,e),...t??{}})}var Xs=class{filter;constructor(e,t){this.filter=la(e,t)}has(e){return this.filter.has(e.toBytes())}add(e){this.filter.add(e.toBytes())}remove(e){this.filter.remove?.(e.toBytes())}};function ua(r,e=.001){return new Xs(r,e)}var Js=class{reservations=new kt;_started=!1;interval;maxReservations;reservationClearInterval;applyDefaultLimit;reservationTtl;defaultDurationLimit;defaultDataLimit;constructor(e={}){this.maxReservations=e.maxReservations??15,this.reservationClearInterval=e.reservationClearInterval??3e5,this.applyDefaultLimit=e.applyDefaultLimit!==!1,this.reservationTtl=e.reservationTtl??72e5,this.defaultDurationLimit=e.defaultDurationLimit??12e4,this.defaultDataLimit=e.defaultDataLimit??xu}isStarted(){return this._started}start(){this._started||(this._started=!0,this.interval=setInterval(()=>{let e=new Date().getTime();this.reservations.forEach((t,n)=>{t.expire.getTime()<e&&this.reservations.delete(n)})},this.reservationClearInterval))}stop(){clearInterval(this.interval)}reserve(e,t,n){if(this.reservations.size>=this.maxReservations&&!this.reservations.has(e))return{status:z.RESERVATION_REFUSED};let s=new Date(Date.now()+this.reservationTtl),i;return this.applyDefaultLimit&&(i=n??{data:this.defaultDataLimit,duration:this.defaultDurationLimit}),this.reservations.set(e,{addr:t,expire:s,limit:i}),{status:z.OK,expire:Math.round(s.getTime()/1e3)}}removeReservation(e){this.reservations.delete(e)}hasReservation(e){return this.reservations.has(e)}get(e){return this.reservations.get(e)}};var Qs=class r{domain="libp2p-relay-rsvp";codec=new Uint8Array([3,2]);relay;peer;expiration;constructor({relay:e,peer:t,expiration:n}){this.relay=e,this.peer=t,this.expiration=n}marshal(){return Gs.encode({relay:this.relay.toBytes(),peer:this.peer.toBytes(),expiration:BigInt(this.expiration)})}equals(e){return!(!(e instanceof r)||!this.peer.equals(e.peer)||!this.relay.equals(e.relay)||this.expiration!==e.expiration)}};var Cu=r=>r.protoCodes().includes(290),s0={maxOutboundStopStreams:An},fa=class extends ze{registrar;peerStore;addressManager;peerId;connectionManager;connectionGater;reservationStore;started;hopTimeout;shutdownController;maxInboundHopStreams;maxOutboundHopStreams;maxOutboundStopStreams;log;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:server"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.addressManager=e.addressManager,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.connectionGater=e.connectionGater,this.started=!1,this.hopTimeout=t?.hopTimeout??vu,this.maxInboundHopStreams=t.maxInboundHopStreams,this.maxOutboundHopStreams=t.maxOutboundHopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??s0.maxOutboundStopStreams,this.reservationStore=new Js(t.reservations),this.shutdownController=new AbortController,qe(1/0,this.shutdownController.signal)}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-server";isStarted(){return this.started}async start(){this.started||(await this.registrar.handle(Ye,e=>{this.onHop(e).catch(t=>{this.log.error(t)})},{maxInboundStreams:this.maxInboundHopStreams,maxOutboundStreams:this.maxOutboundHopStreams,runOnTransientConnection:!0}),this.reservationStore.start(),this.started=!0)}async stop(){this.reservationStore.stop(),this.shutdownController.abort(),await this.registrar.unhandle(Ye),this.started=!1}async onHop({connection:e,stream:t}){this.log("received circuit v2 hop protocol stream from %p",e.remotePeer);let n=He(),s=setTimeout(()=>{n.reject("timed out")},this.hopTimeout),i=jt(t);try{let o=await Promise.race([i.pb(J).read(),n.promise]);if(o?.type==null)throw new Error("request was invalid, could not read from stream");this.log("received",o.type),await Promise.race([this.handleHopProtocol({connection:e,stream:i,request:o}),n.promise])}catch(o){this.log.error("error while handling hop",o),await i.pb(J).write({type:J.Type.STATUS,status:z.MALFORMED_MESSAGE}),t.abort(o)}finally{clearTimeout(s)}}async handleHopProtocol({stream:e,request:t,connection:n}){switch(this.log("received hop message"),t.type){case J.Type.RESERVE:await this.handleReserve({stream:e,request:t,connection:n});break;case J.Type.CONNECT:await this.handleConnect({stream:e,request:t,connection:n});break;default:this.log.error("invalid hop request type %s via peer %p",t.type,n.remotePeer),await e.pb(J).write({type:J.Type.STATUS,status:z.UNEXPECTED_MESSAGE})}}async handleReserve({stream:e,request:t,connection:n}){let s=e.pb(J);if(this.log("hop reserve request from %p",n.remotePeer),Cu(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}if(await this.connectionGater.denyInboundRelayReservation?.(n.remotePeer)===!0){this.log.error("reservation for %p denied by connection gater",n.remotePeer),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}let i=this.reservationStore.reserve(n.remotePeer,n.remoteAddr);if(i.status!==z.OK){await s.write({type:J.Type.STATUS,status:i.status});return}try{if(i.expire!=null){let o=i.expire*1e3-Date.now();await this.peerStore.merge(n.remotePeer,{tags:{[bu]:{value:1,ttl:o}}})}await s.write({type:J.Type.STATUS,status:z.OK,reservation:await this.makeReservation(n.remotePeer,BigInt(i.expire??0)),limit:this.reservationStore.get(n.remotePeer)?.limit}),this.log("sent confirmation response to %s",n.remotePeer)}catch(o){this.log.error("failed to send confirmation response to %p",n.remotePeer,o),this.reservationStore.removeReservation(n.remotePeer)}}async makeReservation(e,t){let n=[];for(let i of this.addressManager.getAddresses())i.toString().includes("/p2p-circuit")||n.push(i.bytes);let s=await En.seal(new Qs({peer:e,relay:this.peerId,expiration:Number(t)}),this.peerId);return{addrs:n,expire:t,voucher:s.marshal()}}async handleConnect({stream:e,request:t,connection:n}){let s=e.pb(J);if(Cu(n.remoteAddr)){this.log.error("relay reservation over circuit connection denied for peer: %p",n.remotePeer),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}this.log("hop connect request from %p",n.remotePeer);let i;try{if(t.peer==null)throw this.log.error("no peer info in hop connect request"),new Error("no peer info in request");t.peer.addrs.forEach(Ee),i=Jr(t.peer.id)}catch(l){this.log.error("invalid hop connect request via peer %p %s",n.remotePeer,l),await s.write({type:J.Type.STATUS,status:z.MALFORMED_MESSAGE});return}if(!this.reservationStore.hasReservation(i)){this.log.error("hop connect denied for destination peer %p not having a reservation for %p with status %s",i,n.remotePeer,z.NO_RESERVATION),await s.write({type:J.Type.STATUS,status:z.NO_RESERVATION});return}if(await this.connectionGater.denyOutboundRelayedConnection?.(n.remotePeer,i)===!0){this.log.error("hop connect for %p to %p denied by connection gater",n.remotePeer,i),await s.write({type:J.Type.STATUS,status:z.PERMISSION_DENIED});return}let o=this.connectionManager.getConnections(i);if(o.length===0){this.log("hop connect denied for destination peer %p not having a connection for %p as there is no destination connection",i,n.remotePeer),await s.write({type:J.Type.STATUS,status:z.NO_RESERVATION});return}let a=this.reservationStore.get(i)?.limit,c=o[0],h=await this.stopHop({connection:c,request:{type:Fe.Type.CONNECT,peer:{id:n.remotePeer.toBytes(),addrs:[]},limit:a}});if(h==null){this.log.error("failed to open stream to destination peer %p",c?.remotePeer),await s.write({type:J.Type.STATUS,status:z.CONNECTION_FAILED});return}await s.write({type:J.Type.STATUS,status:z.OK,limit:a});let f=e.unwrap();this.log("connection from %p to %p established - merging streams",n.remotePeer,i),_u(f,h,this.shutdownController.signal,a,{log:this.log})}async stopHop({connection:e,request:t}){this.log("starting circuit relay v2 stop request to %s",e.remotePeer);let n=await e.newStream([lr],{maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),s=jt(n),i=s.pb(Fe);await i.write(t);let o;try{o=await i.read()}catch{this.log.error("error parsing stop message response from %p",e.remotePeer)}if(o==null){this.log.error("could not read response from %p",e.remotePeer),await n.close();return}if(o.status===z.OK)return this.log("stop request to %p was successful",e.remotePeer),s.unwrap();this.log("stop request failed with code %d",o.status),await n.close()}get reservations(){return this.reservationStore.reservations}};function Lu(r={}){return e=>new fa(e,r)}function da(r){let{stream:e,remoteAddr:t,logger:n}=r,s=n.forComponent("libp2p:stream:converter"),i=!1,o=!1,a=e.close.bind(e);e.close=async m=>{await a(m),l(!0)};let c=e.abort.bind(e);e.abort=m=>{c(m),l(!0)};let h=e.sink.bind(e);e.sink=async m=>{try{await h(m)}catch(u){u.type!=="aborted"&&s.error("%s error in sink",t,u)}finally{o=!0,l()}};let f={log:s,sink:e.sink,source:async function*(){try{for await(let m of e.source)m instanceof Uint8Array?yield m:yield*m}finally{i=!0,l()}}(),remoteAddr:t,timeline:{open:Date.now(),close:void 0},close:e.close,abort:e.abort};function l(m){m===!0&&(i=!0,o=!0),i&&o&&f.timeline.close==null&&(f.timeline.close=Date.now())}return f}var i0=k("dns4"),o0=k("dns6"),a0=k("dnsaddr"),hr=le(k("dns"),a0,i0,o0),ri=le(k("ip4"),k("ip6")),zr=le(D(ri,k("tcp")),D(hr,k("tcp"))),ni=D(ri,k("udp")),c0=D(ni,k("utp")),l0=D(ni,k("quic")),u0=D(ni,k("quic-v1")),pa=le(D(zr,k("ws")),D(hr,k("ws"))),ei=le(D(pa,k("p2p")),pa),ga=le(D(zr,k("wss")),D(hr,k("wss")),D(zr,k("tls"),k("ws")),D(hr,k("tls"),k("ws"))),ti=le(D(ga,k("p2p")),ga),ma=le(D(zr,k("http")),D(ri,k("http")),D(hr,k("http"))),ya=le(D(zr,k("https")),D(ri,k("https")),D(hr,k("https"))),Uu=D(ni,k("webrtc-direct"),k("certhash")),Pu=le(D(Uu,k("p2p")),Uu),Du=D(u0,k("webtransport"),k("certhash"),k("certhash")),Mu=le(D(Du,k("p2p")),Du),Vu=le(D(ei,k("p2p-webrtc-star"),k("p2p")),D(ti,k("p2p-webrtc-star"),k("p2p")),D(ei,k("p2p-webrtc-star")),D(ti,k("p2p-webrtc-star"))),a2=le(D(ei,k("p2p-websocket-star"),k("p2p")),D(ti,k("p2p-websocket-star"),k("p2p")),D(ei,k("p2p-websocket-star")),D(ti,k("p2p-websocket-star"))),Hu=le(D(ma,k("p2p-webrtc-direct"),k("p2p")),D(ya,k("p2p-webrtc-direct"),k("p2p")),D(ma,k("p2p-webrtc-direct")),D(ya,k("p2p-webrtc-direct"))),dr=le(pa,ga,ma,ya,Vu,Hu,zr,c0,l0,hr,Pu,Mu),c2=le(D(dr,k("p2p-stardust"),k("p2p")),D(dr,k("p2p-stardust"))),Wt=le(D(dr,k("p2p")),Vu,Hu,Pu,Mu,k("p2p")),Ou=le(D(Wt,k("p2p-circuit"),Wt),D(Wt,k("p2p-circuit")),D(k("p2p-circuit"),Wt),D(dr,k("p2p-circuit")),D(k("p2p-circuit"),dr),k("p2p-circuit")),Fu=()=>le(D(Ou,Fu),Ou),Tt=Fu(),l2=le(D(Tt,Wt,Tt),D(Wt,Tt),D(Tt,Wt),Tt,Wt);var u2=le(D(Tt,k("webrtc"),k("p2p")),D(Tt,k("webrtc")),D(dr,k("webrtc"),k("p2p")),D(dr,k("webrtc")),k("webrtc"));function Ku(r){function e(t){let n;try{n=Ee(t)}catch{return!1}let s=r(n.protoNames());return s===null?!1:s===!0||s===!1?s:s.length===0}return e}function D(...r){function e(t){if(t.length<r.length)return null;let n=t;return r.some(s=>(n=typeof s=="function"?s().partialMatch(t):s.partialMatch(t),Array.isArray(n)&&(t=n),n===null)),n}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Ku(e),partialMatch:e}}function le(...r){function e(n){let s=null;return r.some(i=>{let o=typeof i=="function"?i().partialMatch(n):i.partialMatch(n);return o!=null?(s=o,!0):!1}),s}return{toString:function(){return"{ "+r.join(" ")+" }"},input:r,matches:Ku(e),partialMatch:e}}function k(r){let e=r;function t(s){let i;try{i=Ee(s)}catch{return!1}let o=i.protoNames();return o.length===1&&o[0]===e}function n(s){return s.length===0?null:s[0]===e?s.slice(1):null}return{toString:function(){return e},matches:t,partialMatch:n}}var Yt=class extends Event{type;detail;constructor(e,t){super(e),this.type=e,this.detail=t}};var si=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||e-1&e)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},$r=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new si(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new si(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var ba=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function qu(r={}){return h0(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function h0(r,e){e=e??{};let t=e.onEnd,n=new $r,s,i,o,a=He(),c=async()=>{try{return n.isEmpty()?o?{done:!0}:await new Promise((b,g)=>{i=w=>{i=null,n.push(w);try{b(r(n))}catch(y){g(y)}return s}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=He()})}},h=b=>i!=null?i(b):(n.push(b),s),f=b=>(n=new $r,i!=null?i({error:b}):(n.push({error:b}),s)),l=b=>{if(o)return s;if(e?.objectMode!==!0&&b?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return h({done:!1,value:b})},m=b=>o?s:(o=!0,b!=null?f(b):h({done:!0})),u=()=>(n=new $r,m(),{done:!0}),d=b=>(m(b),{done:!0});if(s={[Symbol.asyncIterator](){return this},next:c,return:u,throw:d,push:l,end:m,get readableLength(){return n.size},onEmpty:async b=>{let g=b?.signal;if(g?.throwIfAborted(),n.isEmpty())return;let w,y;g!=null&&(w=new Promise((E,x)=>{y=()=>{x(new ba)},g.addEventListener("abort",y)}));try{await Promise.race([a.promise,w])}finally{y!=null&&g!=null&&g?.removeEventListener("abort",y)}}},t==null)return s;let p=s;return s={[Symbol.asyncIterator](){return this},next(){return p.next()},throw(b){return p.throw(b),t!=null&&(t(b),t=void 0),{done:!0}},return(){return p.return(),t!=null&&(t(),t=void 0),{done:!0}},push:l,end(b){return p.end(b),t!=null&&(t(b),t=void 0),s},get readableLength(){return p.readableLength},onEmpty:b=>p.onEmpty(b)},s}var wa=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=t??"ABORT_ERR"}};async function ii(r,e,t,n){let s=new wa(n?.errorMessage,n?.errorCode);return t?.aborted===!0?Promise.reject(s):new Promise((i,o)=>{function a(){t?.removeEventListener("abort",f),r.removeEventListener(e,c),n?.errorEvent!=null&&r.removeEventListener(n.errorEvent,h)}let c=l=>{try{if(n?.filter?.(l)===!1)return}catch(m){a(),o(m);return}a(),i(l)},h=l=>{a(),o(l.detail)},f=()=>{a(),o(s)};t?.addEventListener("abort",f),r.addEventListener(e,c),n?.errorEvent!=null&&r.addEventListener(n.errorEvent,h)})}var oi=class{deferred;signal;constructor(e){this.signal=e,this.deferred=He(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Rt)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function d0(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var ai=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=d0(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,qe(1/0,this.controller.signal),this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Rt),this.cleanup())}async join(e={}){let t=new oi(e.signal);return this.recipients.push(t),e.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Fr(this.fn({...this.options??{},signal:this.controller.signal}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var ci=class extends ze{concurrency;queue;pending;sort;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.pending=0,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[]}tryToStartAnother(){if(this.size===0)return queueMicrotask(()=>{this.safeDispatchEvent("empty")}),this.running===0&&queueMicrotask(()=>{this.safeDispatchEvent("idle")}),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){t?.signal?.throwIfAborted();let n=new ai(e,t);return this.enqueue(n),this.safeDispatchEvent("add"),this.tryToStartAnother(),n.join(t).then(s=>(this.safeDispatchEvent("completed",{detail:s}),this.safeDispatchEvent("success",{detail:{job:n,result:s}}),s)).catch(s=>{if(n.status==="queued"){for(let i=0;i<this.queue.length;i++)if(this.queue[i]===n){this.queue.splice(i,1);break}}throw this.safeDispatchEvent("error",{detail:s}),this.safeDispatchEvent("failure",{detail:{job:n,error:s}}),s})}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Rt)}),this.clear()}async onEmpty(e){this.size!==0&&await ii(this,"empty",e?.signal)}async onSizeLessThan(e,t){this.size<e||await ii(this,"next",t?.signal,{filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await ii(this,"idle",e?.signal)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=qu({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},s=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail)},o=()=>{n()},a=()=>{n(new U("Queue aborted","ERR_QUEUE_ABORTED"))};this.addEventListener("completed",s),this.addEventListener("error",i),this.addEventListener("idle",o),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",s),this.removeEventListener("error",i),this.removeEventListener("idle",o),e?.signal?.removeEventListener("abort",a),n()}}};var Gr=class extends ci{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var li=class extends ze{peerStore;registrar;connectionManager;randomWalk;started;running;topologyId;log;discoveryController;filter;constructor(e,t={}){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:discover-relays"),this.started=!1,this.running=!1,this.peerStore=e.peerStore,this.registrar=e.registrar,this.connectionManager=e.connectionManager,this.randomWalk=e.randomWalk,this.filter=t.filter,this.discoveryController=new AbortController,qe(1/0,this.discoveryController.signal)}isStarted(){return this.started}async start(){this.topologyId=await this.registrar.register(Ye,{filter:this.filter,onConnect:e=>{this.log("discovered relay %p",e),this.safeDispatchEvent("relay:discover",{detail:e})}}),this.started=!0}stop(){this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.discoveryController?.abort(),this.started=!1}startDiscovery(){this.running||(this.log("start discovery"),this.running=!0,this.discoveryController=new AbortController,qe(1/0,this.discoveryController.signal),Promise.resolve().then(async()=>{this.log("searching peer store for relays");let e=await this.peerStore.all({filters:[n=>n.protocols.includes(Ye)],orders:[()=>Math.random()<.5?1:-1]});for(let n of e)this.log.trace("found relay peer %p in peer store",n.id),this.safeDispatchEvent("relay:discover",{detail:n.id});this.log("found %d relay peers in peer store",e.length);let t=new Gr({concurrency:5});this.log("start random walk");for await(let n of this.randomWalk.walk({signal:this.discoveryController.signal})){if(this.log.trace("found random peer %p",n.id),t.has(n.id)){this.log.trace("random peer %p was already in queue",n.id);continue}if(this.connectionManager.getConnections(n.id)?.length>0){this.log.trace("random peer %p was already connected",n.id);continue}if(!await this.connectionManager.isDialable(n.multiaddrs)){this.log.trace("random peer %p was not dialable",n.id,n.multiaddrs.map(s=>s.toString()));continue}this.log.trace("wait for space in queue for %p",n.id),await Fr(t.onSizeLessThan(10),this.discoveryController.signal),this.log("adding random peer %p to dial queue (length: %d)",n.id,t.size),t.add(async()=>{let s=js([this.discoveryController.signal,AbortSignal.timeout(5e3)]);qe(1/0,s);try{await this.connectionManager.openConnection(n.id,{signal:s})}finally{s.clear()}},{peerId:n.id,signal:this.discoveryController.signal}).catch(s=>{this.log.error("error opening connection to random peer %p",n.id,s)})}await t.onIdle()}).catch(e=>{this.discoveryController.signal.aborted||this.log.error("failed when finding relays on the network",e)}))}stopDiscovery(){this.log("stop discovery"),this.running=!1,this.discoveryController?.abort()}};var xa=class extends ze{connectionManager;relayStore;listeningAddrs;log;constructor(e){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:listener"),this.connectionManager=e.connectionManager,this.relayStore=e.relayStore,this.listeningAddrs=new kt,this.relayStore.addEventListener("relay:removed",this._onRemoveRelayPeer)}_onRemoveRelayPeer=e=>{this.#e(e.detail)};async listen(e){this.log("listen on %a",e);let t=e.decapsulate("/p2p-circuit"),n=await this.connectionManager.openConnection(t);if(!this.relayStore.hasReservation(n.remotePeer)){this.log("making reservation on peer %p",n.remotePeer),await this.relayStore.addRelay(n.remotePeer,"configured");return}let s=this.relayStore.getReservation(n.remotePeer);if(s==null)throw new U("Did not have reservation after making reservation","ERR_NO_RESERVATION");if(this.listeningAddrs.has(n.remotePeer)){this.log("already listening on relay %p",n.remotePeer);return}this.listeningAddrs.set(n.remotePeer,s.addrs.map(i=>Ee(i).encapsulate("/p2p-circuit"))),this.safeDispatchEvent("listening",{})}getAddrs(){return[...this.listeningAddrs.values()].flat()}async close(){}#e(e){let t=this.listeningAddrs.has(e);this.log("relay peer removed %p - had reservation",e,t),this.listeningAddrs.delete(e),t&&(this.log.trace("removing relay event listener for peer %p",e),this.relayStore.removeEventListener("relay:removed",this._onRemoveRelayPeer),this.safeDispatchEvent("close",{}))}};function zu(r){return new xa(r)}var y0=60*1e3*10,b0=60*1e3*5,w0=30*1e3,ui=class extends ze{peerId;connectionManager;transportManager;peerStore;events;reserveQueue;reservations;maxDiscoveredRelays;maxReservationQueueLength;reservationCompletionTimeout;started;log;relayFilter;constructor(e,t){super(),this.log=e.logger.forComponent("libp2p:circuit-relay:transport:reservation-store"),this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.peerStore=e.peerStore,this.events=e.events,this.reservations=new kt,this.maxDiscoveredRelays=t?.discoverRelays??0,this.maxReservationQueueLength=t?.maxReservationQueueLength??100,this.reservationCompletionTimeout=t?.reservationCompletionTimeout??1e3,this.started=!1,this.relayFilter=ia(100),this.reserveQueue=new Gr({concurrency:t?.reservationConcurrency??1,metricName:"libp2p_relay_reservation_queue",metrics:e.metrics}),this.events.addEventListener("peer:disconnect",n=>{this.#t(n.detail)})}isStarted(){return this.started}start(){this.started=!0}afterStart(){this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{}))}stop(){this.reserveQueue.clear(),this.reservations.forEach(({timeout:e})=>{clearTimeout(e)}),this.reservations.clear(),this.started=!1}async addRelay(e,t){if(this.peerId.equals(e)){this.log("not trying to use self as relay");return}if(this.reserveQueue.size>this.maxReservationQueueLength){this.log("not adding potential relay peer %p as the queue is full",e);return}if(this.reserveQueue.has(e)){this.log("potential relay peer %p is already in the reservation queue",e);return}if(this.relayFilter.has(e.toBytes())){this.log("potential relay peer %p has failed previously, not trying again",e);return}this.log("try to reserve relay slot with %p",e),await this.reserveQueue.add(async()=>{let n=Date.now();try{let s=this.reservations.get(e);if(s!=null){if(ta(s.reservation.expire)>y0){this.log("already have reservation on relay peer %p and it expires in more than 10 minutes",e);return}clearTimeout(s.timeout),this.reservations.delete(e)}if(t==="discovered"&&[...this.reservations.values()].reduce((l,m)=>(m.type==="discovered"&&l++,l),0)>=this.maxDiscoveredRelays){this.log("already have enough discovered relays");return}let i=AbortSignal.timeout(this.reservationCompletionTimeout);qe(1/0,i);let o=await this.connectionManager.openConnection(e,{signal:i});if(o.remoteAddr.protoNames().includes("p2p-circuit")){this.log("not creating reservation over relayed connection");return}let a=await this.#e(o,{signal:i});this.log("created reservation on relay peer %p",e);let c=ta(a.expire),h=Math.min(Math.max(c-b0,w0),Math.pow(2,31)-1),f=setTimeout(()=>{this.addRelay(e,t).catch(l=>{this.log.error("could not refresh reservation to relay %p",e,l)})},h);this.reservations.set(e,{timeout:f,reservation:a,type:t}),await this.peerStore.merge(e,{tags:{[wu]:{value:1,ttl:c}}}),await this.transportManager.listen([Ee(`/p2p/${e.toString()}/p2p-circuit`)]),this.safeDispatchEvent("relay:created-reservation",{detail:e})}catch(s){this.log.error("could not reserve slot on %p after %dms",e,Date.now()-n,s);let i=this.reservations.get(e);i!=null&&clearTimeout(i.timeout),this.reservations.delete(e),this.relayFilter.add(e.toBytes())}},{peerId:e})}hasReservation(e){return this.reservations.has(e)}getReservation(e){return this.reservations.get(e)?.reservation}reservationCount(){return this.reservations.size}async#e(e,t){t.signal?.throwIfAborted(),this.log("requesting reservation from %p",e.remotePeer);let n=await e.newStream(Ye,t),i=jt(n).pb(J);await i.write({type:J.Type.RESERVE},t);let o;try{o=await i.read(t)}catch(c){throw n.abort(c),c}finally{n.status!=="closed"&&await n.close(t)}if(o.status===z.OK&&o.reservation!=null){let c=!1,h=e.remoteAddr.bytes;for(let f of o.reservation.addrs)if(ae(h,f)){c=!0;break}return c||o.reservation.addrs.push(h),o.reservation}let a=`reservation failed with status ${o.status??"undefined"}`;throw this.log.error(a),new Error(a)}#t(e){let t=this.reservations.get(e);t!=null&&(this.log("connection to relay %p closed, removing reservation from local store",e),clearTimeout(t.timeout),this.reservations.delete(e),this.safeDispatchEvent("relay:removed",{detail:e}),this.reservations.size<this.maxDiscoveredRelays&&(this.log("not enough relays %d/%d",this.reservations.size,this.maxDiscoveredRelays),this.safeDispatchEvent("relay:not-enough-relays",{})))}};var x0=r=>{if(r.peer==null)return!1;try{r.peer.addrs.forEach(Ee)}catch{return!1}return!0},va={maxInboundStopStreams:An,maxOutboundStopStreams:An,stopTimeout:3e4},fi=class{discovery;registrar;peerStore;connectionManager;transportManager;peerId;upgrader;addressManager;connectionGater;reservationStore;logger;maxInboundStopStreams;maxOutboundStopStreams;stopTimeout;started;log;constructor(e,t){this.log=e.logger.forComponent("libp2p:circuit-relay:transport"),this.registrar=e.registrar,this.peerStore=e.peerStore,this.connectionManager=e.connectionManager,this.transportManager=e.transportManager,this.logger=e.logger,this.peerId=e.peerId,this.upgrader=e.upgrader,this.addressManager=e.addressManager,this.connectionGater=e.connectionGater,this.maxInboundStopStreams=t.maxInboundStopStreams??va.maxInboundStopStreams,this.maxOutboundStopStreams=t.maxOutboundStopStreams??va.maxOutboundStopStreams,this.stopTimeout=t.stopTimeout??va.stopTimeout;let n=t.discoverRelays??0;n>0&&(this.discovery=new li(e,{filter:t.discoveryFilter??ua(Au,Su)}),this.discovery.addEventListener("relay:discover",s=>{this.reservationStore.addRelay(s.detail,"discovered").catch(i=>{this.log.error("could not add discovered relay %p",s.detail,i)})})),this.reservationStore=new ui(e,t),this.reservationStore.addEventListener("relay:not-enough-relays",()=>{this.discovery?.startDiscovery()}),this.reservationStore.addEventListener("relay:created-reservation",()=>{this.reservationStore.reservationCount()>=n&&this.discovery?.stopDiscovery()}),this.started=!1}[Symbol.toStringTag]="@libp2p/circuit-relay-v2-transport";[Oa]=["@libp2p/transport","@libp2p/circuit-relay-v2-transport"];get[Pa](){return this.discovery!=null?["@libp2p/identify"]:[]}[Ca]=!0;isStarted(){return this.started}async start(){await this.registrar.handle(lr,e=>{this.onStop(e).catch(t=>{this.log.error("error while handling STOP protocol",t),e.stream.abort(t)})},{maxInboundStreams:this.maxInboundStopStreams,maxOutboundStreams:this.maxOutboundStopStreams,runOnTransientConnection:!0}),await Ua(this.discovery,this.reservationStore),this.started=!0}async stop(){await Da(this.discovery,this.reservationStore),await this.registrar.unhandle(lr),this.started=!1}async dial(e,t){if(e.protoCodes().filter(d=>d===290).length!==1){let d="Invalid circuit relay address";throw this.log.error(d,e),new U(d,Qo)}let n=e.toString().split("/p2p-circuit"),s=Ee(n[0]),i=Ee(n[n.length-1]),o=s.getPeerId(),a=i.getPeerId();if(o==null||a==null){let d=`Circuit relay dial to ${e.toString()} failed as address did not have peer ids`;throw this.log.error(d),new U(d,Qo)}let c=Lt(o),h=Lt(a),f=!1,m=this.connectionManager.getConnections(c)[0];m==null?(await this.peerStore.merge(c,{multiaddrs:[s]}),t.onProgress?.(new Yt("circuit-relay:open-connection")),m=await this.connectionManager.openConnection(c,t),f=!0):t.onProgress?.(new Yt("circuit-relay:reuse-connection"));let u;try{return t.onProgress?.(new Yt("circuit-relay:open-hop-stream")),u=await m.newStream(Ye),await this.connectV2({stream:u,connection:m,destinationPeer:h,destinationAddr:i,relayAddr:s,ma:e,disconnectOnFailure:f,onProgress:t.onProgress})}catch(d){throw this.log.error("circuit relay dial to destination %p via relay %p failed",h,c,d),u?.abort(d),f&&await m.close(),d}}async connectV2({stream:e,connection:t,destinationPeer:n,destinationAddr:s,relayAddr:i,ma:o,disconnectOnFailure:a,onProgress:c}){try{let h=jt(e),f=h.pb(J);c?.(new Yt("circuit-relay:write-connect-message")),await f.write({type:J.Type.CONNECT,peer:{id:n.toBytes(),addrs:[Ee(s).bytes]}}),c?.(new Yt("circuit-relay:read-connect-response"));let l=await f.read();if(l.status!==z.OK)throw new U(`failed to connect via relay with status ${l?.status?.toString()??"undefined"}`,Eu);let m=da({stream:h.unwrap(),remoteAddr:o,localAddr:i.encapsulate(`/p2p-circuit/p2p/${this.peerId.toString()}`),logger:this.logger});return this.log("new outbound relayed connection %a",m.remoteAddr),await this.upgrader.upgradeOutbound(m,{transient:l.limit!=null,onProgress:c})}catch(h){throw this.log.error(`Circuit relay dial to destination ${n.toString()} via relay ${t.remotePeer.toString()} failed`,h),a&&await t.close(),h}}createListener(e){return zu({connectionManager:this.connectionManager,relayStore:this.reservationStore,logger:this.logger})}listenFilter(e){return e=Array.isArray(e)?e:[e],e.filter(t=>Tt.matches(t))}dialFilter(e){return this.listenFilter(e)}async onStop({connection:e,stream:t}){if(!this.reservationStore.hasReservation(e.remotePeer))try{this.log("dialed via relay we did not have a reservation on, start listening on that relay address"),await this.transportManager.listen([e.remoteAddr.encapsulate("/p2p-circuit")])}catch(f){this.log.error("failed to listen on a relay peer we were dialed via but did not have a reservation on",f)}let n=AbortSignal.timeout(this.stopTimeout),s=jt(t).pb(Fe),i=await s.read({signal:n});if(this.log("new circuit relay v2 stop stream from %p with type %s",e.remotePeer,i.type),i?.type===void 0){this.log.error("type was missing from circuit v2 stop protocol request from %s",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.MALFORMED_MESSAGE},{signal:n}),await t.close();return}if(i.type!==Fe.Type.CONNECT){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.UNEXPECTED_MESSAGE},{signal:n}),await t.close();return}if(!x0(i)){this.log.error("invalid stop connect request via peer %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.MALFORMED_MESSAGE},{signal:n}),await t.close();return}let o=Jr(i.peer.id);if(await this.connectionGater.denyInboundRelayedConnection?.(e.remotePeer,o)===!0){this.log.error("connection gater denied inbound relayed connection from %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.PERMISSION_DENIED},{signal:n}),await t.close();return}this.log.trace("sending success response to %p",e.remotePeer),await s.write({type:Fe.Type.STATUS,status:z.OK},{signal:n});let a=e.remoteAddr.encapsulate(`/p2p-circuit/p2p/${o.toString()}`),c=this.addressManager.getAddresses()[0],h=da({stream:s.unwrap().unwrap(),remoteAddr:a,localAddr:c,logger:this.logger});this.log("new inbound relayed connection %a",h.remoteAddr),await this.upgrader.upgradeInbound(h,{transient:i.limit!=null}),this.log("%s connection %a upgraded","inbound",h.remoteAddr)}};function $u(r={}){return e=>new fi(e,r)}return of(v0);})();
8
8
  /*! Bundled license information:
9
9
 
10
10
  pvtsutils/build/index.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@libp2p/circuit-relay-v2",
3
- "version": "1.1.1-e1f0b307c",
3
+ "version": "1.1.1-e9b6a242a",
4
4
  "description": "Implementation of Circuit Relay v2",
5
5
  "license": "Apache-2.0 OR MIT",
6
6
  "homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/transport-circuit-relay-v2#readme",
@@ -52,12 +52,12 @@
52
52
  "doc-check": "aegir doc-check"
53
53
  },
54
54
  "dependencies": {
55
- "@libp2p/interface": "1.6.0-e1f0b307c",
56
- "@libp2p/interface-internal": "1.3.0-e1f0b307c",
57
- "@libp2p/peer-collections": "5.2.5-e1f0b307c",
58
- "@libp2p/peer-id": "4.2.0-e1f0b307c",
59
- "@libp2p/peer-record": "7.0.21-e1f0b307c",
60
- "@libp2p/utils": "5.4.5-e1f0b307c",
55
+ "@libp2p/interface": "1.6.0-e9b6a242a",
56
+ "@libp2p/interface-internal": "1.3.0-e9b6a242a",
57
+ "@libp2p/peer-collections": "5.2.5-e9b6a242a",
58
+ "@libp2p/peer-id": "4.2.0-e9b6a242a",
59
+ "@libp2p/peer-record": "7.0.21-e9b6a242a",
60
+ "@libp2p/utils": "5.4.5-e9b6a242a",
61
61
  "@multiformats/mafmt": "^12.1.6",
62
62
  "@multiformats/multiaddr": "^12.2.3",
63
63
  "any-signal": "^4.1.1",
@@ -72,9 +72,9 @@
72
72
  "uint8arrays": "^5.1.0"
73
73
  },
74
74
  "devDependencies": {
75
- "@libp2p/interface-compliance-tests": "5.4.8-e1f0b307c",
76
- "@libp2p/logger": "4.0.16-e1f0b307c",
77
- "@libp2p/peer-id-factory": "4.2.0-e1f0b307c",
75
+ "@libp2p/interface-compliance-tests": "5.4.8-e9b6a242a",
76
+ "@libp2p/logger": "4.0.16-e9b6a242a",
77
+ "@libp2p/peer-id-factory": "4.2.0-e9b6a242a",
78
78
  "aegir": "^43.0.1",
79
79
  "delay": "^6.0.0",
80
80
  "it-drain": "^3.0.7",