@libp2p/dcutr 0.0.0 → 1.0.0-06e6d235f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/index.min.js +9 -9
- package/dist/src/dcutr.d.ts +2 -2
- package/dist/src/dcutr.d.ts.map +1 -1
- package/dist/src/dcutr.js +27 -27
- package/dist/src/dcutr.js.map +1 -1
- package/dist/src/index.d.ts +6 -8
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/pb/message.js.map +1 -1
- package/dist/src/utils.d.ts +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +10 -7
- package/src/dcutr.ts +29 -35
- package/src/index.ts +3 -5
- package/src/utils.ts +1 -1
- package/dist/typedoc-urls.json +0 -10
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[](http://libp2p.io/)
|
|
2
2
|
[](https://discuss.libp2p.io)
|
|
3
3
|
[](https://codecov.io/gh/libp2p/js-libp2p)
|
|
4
|
-
[](https://github.com/libp2p/js-libp2p/actions/workflows/main.yml?query=branch%3Amain)
|
|
5
5
|
|
|
6
6
|
> Implementation of the DCUtR Protocol
|
|
7
7
|
|
|
@@ -72,8 +72,6 @@ Loading this module through a script tag will make it's exports available as `Li
|
|
|
72
72
|
<script src="https://unpkg.com/@libp2p/dcutr/dist/index.min.js"></script>
|
|
73
73
|
```
|
|
74
74
|
|
|
75
|
-
> Implementation of Autonat Protocol
|
|
76
|
-
|
|
77
75
|
# API Docs
|
|
78
76
|
|
|
79
77
|
- <https://libp2p.github.io/js-libp2p/modules/_libp2p_dcutr.html>
|
package/dist/index.min.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PDcutr = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var Libp2PDcutr=(()=>{var po=Object.create;var Gt=Object.defineProperty;var mo=Object.getOwnPropertyDescriptor;var go=Object.getOwnPropertyNames;var wo=Object.getPrototypeOf,bo=Object.prototype.hasOwnProperty;var mt=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),O=(r,t)=>{for(var e in t)Gt(r,e,{get:t[e],enumerable:!0})},kr=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of go(t))!bo.call(r,o)&&o!==e&&Gt(r,o,{get:()=>t[o],enumerable:!(n=mo(t,o))||n.enumerable});return r};var Wt=(r,t,e)=>(e=r!=null?po(wo(r)):{},kr(t||!r||!r.__esModule?Gt(e,"default",{value:r,enumerable:!0}):e,r)),yo=r=>kr(Gt({},"__esModule",{value:!0}),r);var Mr=mt((Ws,$r)=>{var gt=1e3,wt=gt*60,bt=wt*60,ct=bt*24,xo=ct*7,Io=ct*365.25;$r.exports=function(r,t){t=t||{};var e=typeof r;if(e==="string"&&r.length>0)return Ao(r);if(e==="number"&&isFinite(r))return t.long?vo(r):Eo(r);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(r))};function Ao(r){if(r=String(r),!(r.length>100)){var t=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(r);if(t){var e=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return e*Io;case"weeks":case"week":case"w":return e*xo;case"days":case"day":case"d":return e*ct;case"hours":case"hour":case"hrs":case"hr":case"h":return e*bt;case"minutes":case"minute":case"mins":case"min":case"m":return e*wt;case"seconds":case"second":case"secs":case"sec":case"s":return e*gt;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return e;default:return}}}}function Eo(r){var t=Math.abs(r);return t>=ct?Math.round(r/ct)+"d":t>=bt?Math.round(r/bt)+"h":t>=wt?Math.round(r/wt)+"m":t>=gt?Math.round(r/gt)+"s":r+"ms"}function vo(r){var t=Math.abs(r);return t>=ct?qt(r,t,ct,"day"):t>=bt?qt(r,t,bt,"hour"):t>=wt?qt(r,t,wt,"minute"):t>=gt?qt(r,t,gt,"second"):r+" ms"}function qt(r,t,e,n){var o=t>=e*1.5;return Math.round(r/e)+" "+n+(o?"s":"")}});var Or=mt((qs,Br)=>{function Co(r){e.debug=e,e.default=e,e.coerce=g,e.disable=i,e.enable=o,e.enabled=c,e.humanize=Mr(),e.destroy=p,Object.keys(r).forEach(l=>{e[l]=r[l]}),e.names=[],e.skips=[],e.formatters={};function t(l){let m=0;for(let d=0;d<l.length;d++)m=(m<<5)-m+l.charCodeAt(d),m|=0;return e.colors[Math.abs(m)%e.colors.length]}e.selectColor=t;function e(l){let m,d=null,s,a;function f(...u){if(!f.enabled)return;let w=f,b=Number(new Date),y=b-(m||b);w.diff=y,w.prev=m,w.curr=b,m=b,u[0]=e.coerce(u[0]),typeof u[0]!="string"&&u.unshift("%O");let v=0;u[0]=u[0].replace(/%([a-zA-Z%])/g,(N,B)=>{if(N==="%%")return"%";v++;let V=e.formatters[B];if(typeof V=="function"){let pt=u[v];N=V.call(w,pt),u.splice(v,1),v--}return N}),e.formatArgs.call(w,u),(w.log||e.log).apply(w,u)}return f.namespace=l,f.useColors=e.useColors(),f.color=e.selectColor(l),f.extend=n,f.destroy=e.destroy,Object.defineProperty(f,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(s!==e.namespaces&&(s=e.namespaces,a=e.enabled(l)),a),set:u=>{d=u}}),typeof e.init=="function"&&e.init(f),f}function n(l,m){let d=e(this.namespace+(typeof m>"u"?":":m)+l);return d.log=this.log,d}function o(l){e.save(l),e.namespaces=l,e.names=[],e.skips=[];let m,d=(typeof l=="string"?l:"").split(/[\s,]+/),s=d.length;for(m=0;m<s;m++)d[m]&&(l=d[m].replace(/\*/g,".*?"),l[0]==="-"?e.skips.push(new RegExp("^"+l.slice(1)+"$")):e.names.push(new RegExp("^"+l+"$")))}function i(){let l=[...e.names.map(h),...e.skips.map(h).map(m=>"-"+m)].join(",");return e.enable(""),l}function c(l){if(l[l.length-1]==="*")return!0;let m,d;for(m=0,d=e.skips.length;m<d;m++)if(e.skips[m].test(l))return!1;for(m=0,d=e.names.length;m<d;m++)if(e.names[m].test(l))return!0;return!1}function h(l){return l.toString().substring(2,l.toString().length-2).replace(/\.\*\?$/,"*")}function g(l){return l instanceof Error?l.stack||l.message:l}function p(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return e.enable(e.load()),e}Br.exports=Co});var zr=mt((z,Xt)=>{z.formatArgs=So;z.save=Lo;z.load=Po;z.useColors=Fo;z.storage=Do();z.destroy=(()=>{let r=!1;return()=>{r||(r=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();z.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Fo(){return typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs)?!0:typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)?!1:typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function So(r){if(r[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+r[0]+(this.useColors?"%c ":" ")+"+"+Xt.exports.humanize(this.diff),!this.useColors)return;let t="color: "+this.color;r.splice(1,0,t,"color: inherit");let e=0,n=0;r[0].replace(/%[a-zA-Z%]/g,o=>{o!=="%%"&&(e++,o==="%c"&&(n=e))}),r.splice(n,0,t)}z.log=console.debug||console.log||(()=>{});function Lo(r){try{r?z.storage.setItem("debug",r):z.storage.removeItem("debug")}catch{}}function Po(){let r;try{r=z.storage.getItem("debug")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function Do(){try{return localStorage}catch{}}Xt.exports=Or()(z);var{formatters:No}=Xt.exports;No.j=function(r){try{return JSON.stringify(r)}catch(t){return"[UnexpectedJSONParseError]: "+t.message}}});var Rn=mt((ku,Nn)=>{"use strict";function Dn(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function gs(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return Dn(r,e)}catch{e.message=r.message,e.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),Dn(new o,e)}}Nn.exports=gs});var eo=mt(jt=>{(function(){var r,t,e,n,o,i,c,h;h=function(g){var p,l,m,d;return p=(g&255<<24)>>>24,l=(g&255<<16)>>>16,m=(g&65280)>>>8,d=g&255,[p,l,m,d].join(".")},c=function(g){var p,l,m,d,s,a;for(p=[],m=d=0;d<=3&&g.length!==0;m=++d){if(m>0){if(g[0]!==".")throw new Error("Invalid IP");g=g.substring(1)}a=t(g),s=a[0],l=a[1],g=g.substring(l),p.push(s)}if(g.length!==0)throw new Error("Invalid IP");switch(p.length){case 1:if(p[0]>4294967295)throw new Error("Invalid IP");return p[0]>>>0;case 2:if(p[0]>255||p[1]>16777215)throw new Error("Invalid IP");return(p[0]<<24|p[1])>>>0;case 3:if(p[0]>255||p[1]>255||p[2]>65535)throw new Error("Invalid IP");return(p[0]<<24|p[1]<<16|p[2])>>>0;case 4:if(p[0]>255||p[1]>255||p[2]>255||p[3]>255)throw new Error("Invalid IP");return(p[0]<<24|p[1]<<16|p[2]<<8|p[3])>>>0;default:throw new Error("Invalid IP")}},e=function(g){return g.charCodeAt(0)},n=e("0"),i=e("a"),o=e("A"),t=function(g){var p,l,m,d,s;for(d=0,p=10,l="9",m=0,g.length>1&&g[m]==="0"&&(g[m+1]==="x"||g[m+1]==="X"?(m+=2,p=16):"0"<=g[m+1]&&g[m+1]<="9"&&(m++,p=8,l="7")),s=m;m<g.length;){if("0"<=g[m]&&g[m]<=l)d=d*p+(e(g[m])-n)>>>0;else if(p===16)if("a"<=g[m]&&g[m]<="f")d=d*p+(10+e(g[m])-i)>>>0;else if("A"<=g[m]&&g[m]<="F")d=d*p+(10+e(g[m])-o)>>>0;else break;else break;if(d>4294967295)throw new Error("too large");m++}if(m===s)throw new Error("empty octet");return[d,m]},r=function(){function g(p,l){var m,d,s,a;if(typeof p!="string")throw new Error("Missing `net' parameter");if(l||(a=p.split("/",2),p=a[0],l=a[1]),l||(l=32),typeof l=="string"&&l.indexOf(".")>-1){try{this.maskLong=c(l)}catch(f){throw m=f,new Error("Invalid mask: "+l)}for(d=s=32;s>=0;d=--s)if(this.maskLong===4294967295<<32-d>>>0){this.bitmask=d;break}}else if(l||l===0)this.bitmask=parseInt(l,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(c(p)&this.maskLong)>>>0}catch(f){throw m=f,new Error("Invalid net address: "+p)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+l);this.size=Math.pow(2,32-this.bitmask),this.base=h(this.netLong),this.mask=h(this.maskLong),this.hostmask=h(~this.maskLong),this.first=this.bitmask<=30?h(this.netLong+1):this.base,this.last=this.bitmask<=30?h(this.netLong+this.size-2):h(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?h(this.netLong+this.size-1):void 0}return g.prototype.contains=function(p){return typeof p=="string"&&(p.indexOf("/")>0||p.split(".").length!==4)&&(p=new g(p)),p instanceof g?this.contains(p.base)&&this.contains(p.broadcast||p.last):(c(p)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},g.prototype.next=function(p){return p==null&&(p=1),new g(h(this.netLong+this.size*p),this.mask)},g.prototype.forEach=function(p){var l,m,d;for(d=c(this.first),m=c(this.last),l=0;d<=m;)p(h(d),d,l),l++,d++},g.prototype.toString=function(){return this.base+"/"+this.bitmask},g}(),jt.ip2long=c,jt.long2ip=h,jt.Netmask=r}).call(jt)});var io=mt((oo,ye)=>{(function(r){"use strict";let t="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new RegExp(`^${t}\\.${t}\\.${t}\\.${t}$`,"i"),threeOctet:new RegExp(`^${t}\\.${t}\\.${t}$`,"i"),twoOctet:new RegExp(`^${t}\\.${t}$`,"i"),longValue:new RegExp(`^${t}$`,"i")},n=new RegExp("^0[0-7]+$","i"),o=new RegExp("^0x[a-f0-9]+$","i"),i="%[0-9a-z]{1,}",c="(?:[0-9a-f]+::?)+",h={zoneIndex:new RegExp(i,"i"),native:new RegExp(`^(::)?(${c})?([0-9a-f]+)?(::)?(${i})?$`,"i"),deprecatedTransitional:new RegExp(`^(?:::)(${t}\\.${t}\\.${t}\\.${t}(${i})?)$`,"i"),transitional:new RegExp(`^((?:${c})|(?:::)(?:${c})?)${t}\\.${t}\\.${t}\\.${t}(${i})?$`,"i")};function g(s,a){if(s.indexOf("::")!==s.lastIndexOf("::"))return null;let f=0,u=-1,w=(s.match(h.zoneIndex)||[])[0],b,y;for(w&&(w=w.substring(1),s=s.replace(/%.+$/,""));(u=s.indexOf(":",u+1))>=0;)f++;if(s.substr(0,2)==="::"&&f--,s.substr(-2,2)==="::"&&f--,f>a)return null;for(y=a-f,b=":";y--;)b+="0:";return s=s.replace("::",b),s[0]===":"&&(s=s.slice(1)),s[s.length-1]===":"&&(s=s.slice(0,-1)),a=function(){let v=s.split(":"),D=[];for(let N=0;N<v.length;N++)D.push(parseInt(v[N],16));return D}(),{parts:a,zoneId:w}}function p(s,a,f,u){if(s.length!==a.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");let w=0,b;for(;u>0;){if(b=f-u,b<0&&(b=0),s[w]>>b!==a[w]>>b)return!1;u-=f,w+=1}return!0}function l(s){if(o.test(s))return parseInt(s,16);if(s[0]==="0"&&!isNaN(parseInt(s[1],10))){if(n.test(s))return parseInt(s,8);throw new Error(`ipaddr: cannot parse ${s} as octal`)}return parseInt(s,10)}function m(s,a){for(;s.length<a;)s=`0${s}`;return s}let d={};d.IPv4=function(){function s(a){if(a.length!==4)throw new Error("ipaddr: ipv4 octet count should be 4");let f,u;for(f=0;f<a.length;f++)if(u=a[f],!(0<=u&&u<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=a}return s.prototype.SpecialRanges={unspecified:[[new s([0,0,0,0]),8]],broadcast:[[new s([255,255,255,255]),32]],multicast:[[new s([224,0,0,0]),4]],linkLocal:[[new s([169,254,0,0]),16]],loopback:[[new s([127,0,0,0]),8]],carrierGradeNat:[[new s([100,64,0,0]),10]],private:[[new s([10,0,0,0]),8],[new s([172,16,0,0]),12],[new s([192,168,0,0]),16]],reserved:[[new s([192,0,0,0]),24],[new s([192,0,2,0]),24],[new s([192,88,99,0]),24],[new s([198,18,0,0]),15],[new s([198,51,100,0]),24],[new s([203,0,113,0]),24],[new s([240,0,0,0]),4]]},s.prototype.kind=function(){return"ipv4"},s.prototype.match=function(a,f){let u;if(f===void 0&&(u=a,a=u[0],f=u[1]),a.kind()!=="ipv4")throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return p(this.octets,a.octets,8,f)},s.prototype.prefixLengthFromSubnetMask=function(){let a=0,f=!1,u={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},w,b,y;for(w=3;w>=0;w-=1)if(b=this.octets[w],b in u){if(y=u[b],f&&y!==0)return null;y!==8&&(f=!0),a+=y}else return null;return 32-a},s.prototype.range=function(){return d.subnetMatch(this,this.SpecialRanges)},s.prototype.toByteArray=function(){return this.octets.slice(0)},s.prototype.toIPv4MappedAddress=function(){return d.IPv6.parse(`::ffff:${this.toString()}`)},s.prototype.toNormalizedString=function(){return this.toString()},s.prototype.toString=function(){return this.octets.join(".")},s}(),d.IPv4.broadcastAddressFromCIDR=function(s){try{let a=this.parseCIDR(s),f=a[0].toByteArray(),u=this.subnetMaskFromPrefixLength(a[1]).toByteArray(),w=[],b=0;for(;b<4;)w.push(parseInt(f[b],10)|parseInt(u[b],10)^255),b++;return new this(w)}catch{throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},d.IPv4.isIPv4=function(s){return this.parser(s)!==null},d.IPv4.isValid=function(s){try{return new this(this.parser(s)),!0}catch{return!1}},d.IPv4.isValidFourPartDecimal=function(s){return!!(d.IPv4.isValid(s)&&s.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},d.IPv4.networkAddressFromCIDR=function(s){let a,f,u,w,b;try{for(a=this.parseCIDR(s),u=a[0].toByteArray(),b=this.subnetMaskFromPrefixLength(a[1]).toByteArray(),w=[],f=0;f<4;)w.push(parseInt(u[f],10)&parseInt(b[f],10)),f++;return new this(w)}catch{throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},d.IPv4.parse=function(s){let a=this.parser(s);if(a===null)throw new Error("ipaddr: string is not formatted like an IPv4 Address");return new this(a)},d.IPv4.parseCIDR=function(s){let a;if(a=s.match(/^(.+)\/(\d+)$/)){let f=parseInt(a[2]);if(f>=0&&f<=32){let u=[this.parse(a[1]),f];return Object.defineProperty(u,"toString",{value:function(){return this.join("/")}}),u}}throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},d.IPv4.parser=function(s){let a,f,u;if(a=s.match(e.fourOctet))return function(){let w=a.slice(1,6),b=[];for(let y=0;y<w.length;y++)f=w[y],b.push(l(f));return b}();if(a=s.match(e.longValue)){if(u=l(a[1]),u>4294967295||u<0)throw new Error("ipaddr: address outside defined range");return function(){let w=[],b;for(b=0;b<=24;b+=8)w.push(u>>b&255);return w}().reverse()}else return(a=s.match(e.twoOctet))?function(){let w=a.slice(1,4),b=[];if(u=l(w[1]),u>16777215||u<0)throw new Error("ipaddr: address outside defined range");return b.push(l(w[0])),b.push(u>>16&255),b.push(u>>8&255),b.push(u&255),b}():(a=s.match(e.threeOctet))?function(){let w=a.slice(1,5),b=[];if(u=l(w[2]),u>65535||u<0)throw new Error("ipaddr: address outside defined range");return b.push(l(w[0])),b.push(l(w[1])),b.push(u>>8&255),b.push(u&255),b}():null},d.IPv4.subnetMaskFromPrefixLength=function(s){if(s=parseInt(s),s<0||s>32)throw new Error("ipaddr: invalid IPv4 prefix length");let a=[0,0,0,0],f=0,u=Math.floor(s/8);for(;f<u;)a[f]=255,f++;return u<4&&(a[u]=Math.pow(2,s%8)-1<<8-s%8),new this(a)},d.IPv6=function(){function s(a,f){let u,w;if(a.length===16)for(this.parts=[],u=0;u<=14;u+=2)this.parts.push(a[u]<<8|a[u+1]);else if(a.length===8)this.parts=a;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(u=0;u<this.parts.length;u++)if(w=this.parts[u],!(0<=w&&w<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");f&&(this.zoneId=f)}return s.prototype.SpecialRanges={unspecified:[new s([0,0,0,0,0,0,0,0]),128],linkLocal:[new s([65152,0,0,0,0,0,0,0]),10],multicast:[new s([65280,0,0,0,0,0,0,0]),8],loopback:[new s([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new s([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new s([0,0,0,0,0,65535,0,0]),96],rfc6145:[new s([0,0,0,0,65535,0,0,0]),96],rfc6052:[new s([100,65435,0,0,0,0,0,0]),96],"6to4":[new s([8194,0,0,0,0,0,0,0]),16],teredo:[new s([8193,0,0,0,0,0,0,0]),32],reserved:[[new s([8193,3512,0,0,0,0,0,0]),32]],benchmarking:[new s([8193,2,0,0,0,0,0,0]),48],amt:[new s([8193,3,0,0,0,0,0,0]),32],as112v6:[new s([8193,4,274,0,0,0,0,0]),48],deprecated:[new s([8193,16,0,0,0,0,0,0]),28],orchid2:[new s([8193,32,0,0,0,0,0,0]),28]},s.prototype.isIPv4MappedAddress=function(){return this.range()==="ipv4Mapped"},s.prototype.kind=function(){return"ipv6"},s.prototype.match=function(a,f){let u;if(f===void 0&&(u=a,a=u[0],f=u[1]),a.kind()!=="ipv6")throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return p(this.parts,a.parts,16,f)},s.prototype.prefixLengthFromSubnetMask=function(){let a=0,f=!1,u={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},w,b;for(let y=7;y>=0;y-=1)if(w=this.parts[y],w in u){if(b=u[w],f&&b!==0)return null;b!==16&&(f=!0),a+=b}else return null;return 128-a},s.prototype.range=function(){return d.subnetMatch(this,this.SpecialRanges)},s.prototype.toByteArray=function(){let a,f=[],u=this.parts;for(let w=0;w<u.length;w++)a=u[w],f.push(a>>8),f.push(a&255);return f},s.prototype.toFixedLengthString=function(){let a=function(){let u=[];for(let w=0;w<this.parts.length;w++)u.push(m(this.parts[w].toString(16),4));return u}.call(this).join(":"),f="";return this.zoneId&&(f=`%${this.zoneId}`),a+f},s.prototype.toIPv4Address=function(){if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");let a=this.parts.slice(-2),f=a[0],u=a[1];return new d.IPv4([f>>8,f&255,u>>8,u&255])},s.prototype.toNormalizedString=function(){let a=function(){let u=[];for(let w=0;w<this.parts.length;w++)u.push(this.parts[w].toString(16));return u}.call(this).join(":"),f="";return this.zoneId&&(f=`%${this.zoneId}`),a+f},s.prototype.toRFC5952String=function(){let a=/((^|:)(0(:|$)){2,})/g,f=this.toNormalizedString(),u=0,w=-1,b;for(;b=a.exec(f);)b[0].length>w&&(u=b.index,w=b[0].length);return w<0?f:`${f.substring(0,u)}::${f.substring(u+w)}`},s.prototype.toString=function(){return this.toRFC5952String()},s}(),d.IPv6.broadcastAddressFromCIDR=function(s){try{let a=this.parseCIDR(s),f=a[0].toByteArray(),u=this.subnetMaskFromPrefixLength(a[1]).toByteArray(),w=[],b=0;for(;b<16;)w.push(parseInt(f[b],10)|parseInt(u[b],10)^255),b++;return new this(w)}catch(a){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${a})`)}},d.IPv6.isIPv6=function(s){return this.parser(s)!==null},d.IPv6.isValid=function(s){if(typeof s=="string"&&s.indexOf(":")===-1)return!1;try{let a=this.parser(s);return new this(a.parts,a.zoneId),!0}catch{return!1}},d.IPv6.networkAddressFromCIDR=function(s){let a,f,u,w,b;try{for(a=this.parseCIDR(s),u=a[0].toByteArray(),b=this.subnetMaskFromPrefixLength(a[1]).toByteArray(),w=[],f=0;f<16;)w.push(parseInt(u[f],10)&parseInt(b[f],10)),f++;return new this(w)}catch(y){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${y})`)}},d.IPv6.parse=function(s){let a=this.parser(s);if(a.parts===null)throw new Error("ipaddr: string is not formatted like an IPv6 Address");return new this(a.parts,a.zoneId)},d.IPv6.parseCIDR=function(s){let a,f,u;if((f=s.match(/^(.+)\/(\d+)$/))&&(a=parseInt(f[2]),a>=0&&a<=128))return u=[this.parse(f[1]),a],Object.defineProperty(u,"toString",{value:function(){return this.join("/")}}),u;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},d.IPv6.parser=function(s){let a,f,u,w,b,y;if(u=s.match(h.deprecatedTransitional))return this.parser(`::ffff:${u[1]}`);if(h.native.test(s))return g(s,8);if((u=s.match(h.transitional))&&(y=u[6]||"",a=g(u[1].slice(0,-1)+y,6),a.parts)){for(b=[parseInt(u[2]),parseInt(u[3]),parseInt(u[4]),parseInt(u[5])],f=0;f<b.length;f++)if(w=b[f],!(0<=w&&w<=255))return null;return a.parts.push(b[0]<<8|b[1]),a.parts.push(b[2]<<8|b[3]),{parts:a.parts,zoneId:a.zoneId}}return null},d.IPv6.subnetMaskFromPrefixLength=function(s){if(s=parseInt(s),s<0||s>128)throw new Error("ipaddr: invalid IPv6 prefix length");let a=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],f=0,u=Math.floor(s/8);for(;f<u;)a[f]=255,f++;return u<16&&(a[u]=Math.pow(2,s%8)-1<<8-s%8),new this(a)},d.fromByteArray=function(s){let a=s.length;if(a===4)return new d.IPv4(s);if(a===16)return new d.IPv6(s);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},d.isValid=function(s){return d.IPv6.isValid(s)||d.IPv4.isValid(s)},d.parse=function(s){if(d.IPv6.isValid(s))return d.IPv6.parse(s);if(d.IPv4.isValid(s))return d.IPv4.parse(s);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},d.parseCIDR=function(s){try{return d.IPv6.parseCIDR(s)}catch{try{return d.IPv4.parseCIDR(s)}catch{throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},d.process=function(s){let a=this.parse(s);return a.kind()==="ipv6"&&a.isIPv4MappedAddress()?a.toIPv4Address():a},d.subnetMatch=function(s,a,f){let u,w,b,y;f==null&&(f="unicast");for(w in a)if(Object.prototype.hasOwnProperty.call(a,w)){for(b=a[w],b[0]&&!(b[0]instanceof Array)&&(b=[b]),u=0;u<b.length;u++)if(y=b[u],s.kind()===y[0].kind()&&s.match.apply(s,y))return w}return f},typeof ye<"u"&&ye.exports?ye.exports=d:r.ipaddr=d})(oo)});var Vs={};O(Vs,{dcutrService:()=>_s,multicodec:()=>Dt});var W=class extends Error{code;props;constructor(t,e,n){super(t),this.code=e,this.name=n?.name??"CodeError",this.props=n??{}}};var at="ERR_INVALID_MESSAGE";var _=Wt(zr(),1);var Fe={};O(Fe,{base32:()=>q,base32hex:()=>zo,base32hexpad:()=>Vo,base32hexpadupper:()=>jo,base32hexupper:()=>_o,base32pad:()=>Bo,base32padupper:()=>Oo,base32upper:()=>Mo,base32z:()=>Go});function Ro(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var i=r.charAt(o),c=i.charCodeAt(0);if(e[c]!==255)throw new TypeError(i+" is ambiguous");e[c]=o}var h=r.length,g=r.charAt(0),p=Math.log(h)/Math.log(256),l=Math.log(256)/Math.log(h);function m(a){if(a instanceof Uint8Array||(ArrayBuffer.isView(a)?a=new Uint8Array(a.buffer,a.byteOffset,a.byteLength):Array.isArray(a)&&(a=Uint8Array.from(a))),!(a instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(a.length===0)return"";for(var f=0,u=0,w=0,b=a.length;w!==b&&a[w]===0;)w++,f++;for(var y=(b-w)*l+1>>>0,v=new Uint8Array(y);w!==b;){for(var D=a[w],N=0,B=y-1;(D!==0||N<u)&&B!==-1;B--,N++)D+=256*v[B]>>>0,v[B]=D%h>>>0,D=D/h>>>0;if(D!==0)throw new Error("Non-zero carry");u=N,w++}for(var V=y-u;V!==y&&v[V]===0;)V++;for(var pt=g.repeat(f);V<y;++V)pt+=r.charAt(v[V]);return pt}function d(a){if(typeof a!="string")throw new TypeError("Expected String");if(a.length===0)return new Uint8Array;var f=0;if(a[f]!==" "){for(var u=0,w=0;a[f]===g;)u++,f++;for(var b=(a.length-f)*p+1>>>0,y=new Uint8Array(b);a[f];){var v=e[a.charCodeAt(f)];if(v===255)return;for(var D=0,N=b-1;(v!==0||D<w)&&N!==-1;N--,D++)v+=h*y[N]>>>0,y[N]=v%256>>>0,v=v/256>>>0;if(v!==0)throw new Error("Non-zero carry");w=D,f++}if(a[f]!==" "){for(var B=b-w;B!==b&&y[B]===0;)B++;for(var V=new Uint8Array(u+(b-B)),pt=u;B!==b;)V[pt++]=y[B++];return V}}}function s(a){var f=d(a);if(f)return f;throw new Error(`Non-${t} character`)}return{encode:m,decodeUnsafe:d,decode:s}}var To=Ro,Uo=To,_r=Uo;var Js=new Uint8Array(0);var Vr=(r,t)=>{if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0},tt=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var jr=r=>new TextEncoder().encode(r),Gr=r=>new TextDecoder().decode(r);var Ae=class{constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},Ee=class{constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return qr(this,t)}},ve=class{constructor(t){this.decoders=t}or(t){return qr(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},qr=(r,t)=>new ve({...r.decoders||{[r.prefix]:r},...t.decoders||{[t.prefix]:t}}),Ce=class{constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new Ae(t,e,n),this.decoder=new Ee(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}},yt=({name:r,prefix:t,encode:e,decode:n})=>new Ce(r,t,e,n),rt=({prefix:r,name:t,alphabet:e})=>{let{encode:n,decode:o}=_r(e,t);return yt({prefix:r,name:t,encode:n,decode:i=>tt(o(i))})},ko=(r,t,e,n)=>{let o={};for(let l=0;l<t.length;++l)o[t[l]]=l;let i=r.length;for(;r[i-1]==="=";)--i;let c=new Uint8Array(i*e/8|0),h=0,g=0,p=0;for(let l=0;l<i;++l){let m=o[r[l]];if(m===void 0)throw new SyntaxError(`Non-${n} character`);g=g<<e|m,h+=e,h>=8&&(h-=8,c[p++]=255&g>>h)}if(h>=e||255&g<<8-h)throw new SyntaxError("Unexpected end of data");return c},$o=(r,t,e)=>{let n=t[t.length-1]==="=",o=(1<<e)-1,i="",c=0,h=0;for(let g=0;g<r.length;++g)for(h=h<<8|r[g],c+=8;c>e;)c-=e,i+=t[o&h>>c];if(c&&(i+=t[o&h<<e-c]),n)for(;i.length*e&7;)i+="=";return i},E=({name:r,prefix:t,bitsPerChar:e,alphabet:n})=>yt({prefix:t,name:r,encode(o){return $o(o,n,e)},decode(o){return ko(o,n,e,r)}});var q=E({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),Mo=E({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),Bo=E({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),Oo=E({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),zo=E({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),_o=E({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),Vo=E({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),jo=E({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),Go=E({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Se={};O(Se,{base58btc:()=>P,base58flickr:()=>Wo});var P=rt({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Wo=rt({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var De={};O(De,{base64:()=>Le,base64pad:()=>qo,base64url:()=>Pe,base64urlpad:()=>Xo});var Le=E({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),qo=E({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Pe=E({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),Xo=E({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});_.default.formatters.b=r=>r==null?"undefined":P.baseEncode(r);_.default.formatters.t=r=>r==null?"undefined":q.baseEncode(r);_.default.formatters.m=r=>r==null?"undefined":Le.baseEncode(r);_.default.formatters.p=r=>r==null?"undefined":r.toString();_.default.formatters.c=r=>r==null?"undefined":r.toString();_.default.formatters.k=r=>r==null?"undefined":r.toString();_.default.formatters.a=r=>r==null?"undefined":r.toString();function Jo(r){let t=()=>{};return t.enabled=!1,t.color="",t.diff=0,t.log=()=>{},t.namespace=r,t.destroy=()=>!0,t.extend=()=>t,t}function Xr(r){let t=Jo(`${r}:trace`);return _.default.enabled(`${r}:trace`)&&_.default.names.map(e=>e.toString()).find(e=>e.includes(":trace"))!=null&&(t=(0,_.default)(`${r}:trace`)),Object.assign((0,_.default)(r),{error:(0,_.default)(`${r}:error`),trace:t})}var Ho=Qr,Jr=128,Qo=127,Zo=~Qo,Ko=Math.pow(2,31);function Qr(r,t,e){t=t||[],e=e||0;for(var n=e;r>=Ko;)t[e++]=r&255|Jr,r/=128;for(;r&Zo;)t[e++]=r&255|Jr,r>>>=7;return t[e]=r|0,Qr.bytes=e-n+1,t}var Yo=Ne,ti=128,Hr=127;function Ne(r,n){var e=0,n=n||0,o=0,i=n,c,h=r.length;do{if(i>=h)throw Ne.bytes=0,new RangeError("Could not decode varint");c=r[i++],e+=o<28?(c&Hr)<<o:(c&Hr)*Math.pow(2,o),o+=7}while(c>=ti);return Ne.bytes=i-n,e}var ei=Math.pow(2,7),ri=Math.pow(2,14),ni=Math.pow(2,21),oi=Math.pow(2,28),ii=Math.pow(2,35),si=Math.pow(2,42),ai=Math.pow(2,49),ci=Math.pow(2,56),ui=Math.pow(2,63),fi=function(r){return r<ei?1:r<ri?2:r<ni?3:r<oi?4:r<ii?5:r<si?6:r<ai?7:r<ci?8:r<ui?9:10},hi={encode:Ho,decode:Yo,encodingLength:fi},li=hi,Nt=li;var Rt=(r,t=0)=>[Nt.decode(r,t),Nt.decode.bytes],xt=(r,t,e=0)=>(Nt.encode(r,t,e),t),It=r=>Nt.encodingLength(r);var ut=(r,t)=>{let e=t.byteLength,n=It(r),o=n+It(e),i=new Uint8Array(o+e);return xt(r,i,0),xt(e,i,n),i.set(t,o),new At(r,e,t,i)},Ht=r=>{let t=tt(r),[e,n]=Rt(t),[o,i]=Rt(t.subarray(n)),c=t.subarray(n+i);if(c.byteLength!==o)throw new Error("Incorrect length");return new At(e,o,c,t)},Zr=(r,t)=>{if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&Vr(r.bytes,e.bytes)}},At=class{constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};var Kr=(r,t)=>{let{bytes:e,version:n}=r;switch(n){case 0:return pi(e,Re(r),t||P.encoder);default:return mi(e,Re(r),t||q.encoder)}};var Yr=new WeakMap,Re=r=>{let t=Yr.get(r);if(t==null){let e=new Map;return Yr.set(r,e),e}return t},nt=class r{constructor(t,e,n,o){this.code=e,this.version=t,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:t,multihash:e}=this;if(t!==Tt)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==gi)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=ut(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n&&t.code===n.code&&t.version===n.version&&Zr(t.multihash,n.multihash)}toString(t){return Kr(this,t)}toJSON(){return{"/":Kr(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:i,bytes:c}=e;return new r(n,o,i,c||tn(n,o,i.bytes))}else if(e[wi]===!0){let{version:n,multihash:o,code:i}=e,c=Ht(o);return r.create(n,i,c)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==Tt)throw new Error(`Version 0 CID must use dag-pb (code: ${Tt}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=tn(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,Tt,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=tt(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let i=o.subarray(e.multihashSize-e.digestSize),c=new At(e.multihashCode,e.digestSize,i,o);return[e.version===0?r.createV0(c):r.createV1(e.codec,c),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[m,d]=Rt(t.subarray(e));return e+=d,m},o=n(),i=Tt;if(o===18?(o=0,e=0):i=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let c=e,h=n(),g=n(),p=e+g,l=p-c;return{version:o,codec:i,multihashCode:h,digestSize:g,multihashSize:l,size:p}}static parse(t,e){let[n,o]=di(t,e),i=r.decode(o);if(i.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return Re(i).set(n,t),i}},di=(r,t)=>{switch(r[0]){case"Q":{let e=t||P;return[P.prefix,e.decode(`${P.prefix}${r}`)]}case P.prefix:{let e=t||P;return[P.prefix,e.decode(r)]}case q.prefix:{let e=t||q;return[q.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}},pi=(r,t,e)=>{let{prefix:n}=e;if(n!==P.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let i=e.encode(r).slice(1);return t.set(n,i),i}else return o},mi=(r,t,e)=>{let{prefix:n}=e,o=t.get(n);if(o==null){let i=e.encode(r);return t.set(n,i),i}else return o},Tt=112,gi=18,tn=(r,t,e)=>{let n=It(r),o=n+It(t),i=new Uint8Array(o+e.byteLength);return xt(r,i,0),xt(t,i,n),i.set(e,o),i},wi=Symbol.for("@ipld/js-cid/CID");function Qt(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var Te={};O(Te,{base10:()=>bi});var bi=rt({prefix:"9",name:"base10",alphabet:"0123456789"});var Ue={};O(Ue,{base16:()=>yi,base16upper:()=>xi});var yi=E({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),xi=E({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var ke={};O(ke,{base2:()=>Ii});var Ii=E({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var $e={};O($e,{base256emoji:()=>Fi});var en=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Ai=en.reduce((r,t,e)=>(r[e]=t,r),[]),Ei=en.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function vi(r){return r.reduce((t,e)=>(t+=Ai[e],t),"")}function Ci(r){let t=[];for(let e of r){let n=Ei[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var Fi=yt({prefix:"\u{1F680}",name:"base256emoji",encode:vi,decode:Ci});var Me={};O(Me,{base36:()=>Si,base36upper:()=>Li});var Si=rt({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),Li=rt({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Be={};O(Be,{base8:()=>Pi});var Pi=E({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Oe={};O(Oe,{identity:()=>Di});var Di=yt({prefix:"\0",name:"identity",encode:r=>Gr(r),decode:r=>jr(r)});var Ca=new TextEncoder,Fa=new TextDecoder;var ze={};O(ze,{identity:()=>ki});var rn=0,Ti="identity",nn=tt,Ui=r=>ut(rn,nn(r)),ki={code:rn,name:Ti,encode:nn,digest:Ui};var je={};O(je,{sha256:()=>$i,sha512:()=>Mi});var Ve=({name:r,code:t,encode:e})=>new _e(r,t,e),_e=class{constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?ut(this.code,e):e.then(n=>ut(this.code,n))}else throw Error("Unknown type, must be binary type")}};var sn=r=>async t=>new Uint8Array(await crypto.subtle.digest(r,t)),$i=Ve({name:"sha2-256",code:18,encode:sn("SHA-256")}),Mi=Ve({name:"sha2-512",code:19,encode:sn("SHA-512")});var Ut={...Oe,...ke,...Be,...Te,...Ue,...Fe,...Me,...Se,...De,...$e},Ua={...je,...ze};function ft(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function et(r=0){return globalThis.Buffer?.alloc!=null?ft(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function R(r=0){return globalThis.Buffer?.allocUnsafe!=null?ft(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function cn(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var an=cn("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Ge=cn("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=R(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),Bi={utf8:an,"utf-8":an,hex:Ut.base16,latin1:Ge,ascii:Ge,binary:Ge,...Ut},Zt=Bi;function k(r,t="utf8"){let e=Zt[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):e.encoder.encode(r).substring(1)}var Oi=Math.pow(2,7),zi=Math.pow(2,14),_i=Math.pow(2,21),We=Math.pow(2,28),qe=Math.pow(2,35),Xe=Math.pow(2,42),Je=Math.pow(2,49),x=128,T=127;function $(r){if(r<Oi)return 1;if(r<zi)return 2;if(r<_i)return 3;if(r<We)return 4;if(r<qe)return 5;if(r<Xe)return 6;if(r<Je)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Vi(r,t,e=0){switch($(r)){case 8:t[e++]=r&255|x,r/=128;case 7:t[e++]=r&255|x,r/=128;case 6:t[e++]=r&255|x,r/=128;case 5:t[e++]=r&255|x,r/=128;case 4:t[e++]=r&255|x,r>>>=7;case 3:t[e++]=r&255|x,r>>>=7;case 2:t[e++]=r&255|x,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function ji(r,t,e=0){switch($(r)){case 8:t.set(e++,r&255|x),r/=128;case 7:t.set(e++,r&255|x),r/=128;case 6:t.set(e++,r&255|x),r/=128;case 5:t.set(e++,r&255|x),r/=128;case 4:t.set(e++,r&255|x),r>>>=7;case 3:t.set(e++,r&255|x),r>>>=7;case 2:t.set(e++,r&255|x),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function Gi(r,t){let e=r[t],n=0;if(n+=e&T,e<x||(e=r[t+1],n+=(e&T)<<7,e<x)||(e=r[t+2],n+=(e&T)<<14,e<x)||(e=r[t+3],n+=(e&T)<<21,e<x)||(e=r[t+4],n+=(e&T)*We,e<x)||(e=r[t+5],n+=(e&T)*qe,e<x)||(e=r[t+6],n+=(e&T)*Xe,e<x)||(e=r[t+7],n+=(e&T)*Je,e<x))return n;throw new RangeError("Could not decode varint")}function Wi(r,t){let e=r.get(t),n=0;if(n+=e&T,e<x||(e=r.get(t+1),n+=(e&T)<<7,e<x)||(e=r.get(t+2),n+=(e&T)<<14,e<x)||(e=r.get(t+3),n+=(e&T)<<21,e<x)||(e=r.get(t+4),n+=(e&T)*We,e<x)||(e=r.get(t+5),n+=(e&T)*qe,e<x)||(e=r.get(t+6),n+=(e&T)*Xe,e<x)||(e=r.get(t+7),n+=(e&T)*Je,e<x))return n;throw new RangeError("Could not decode varint")}function ot(r,t,e=0){return t==null&&(t=R($(r))),t instanceof Uint8Array?Vi(r,t,e):ji(r,t,e)}function X(r,t=0){return r instanceof Uint8Array?Gi(r,t):Wi(r,t)}function j(r,t){t==null&&(t=r.reduce((o,i)=>o+i.length,0));let e=R(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return ft(e)}var Kt=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}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(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let i=0,c=0,h=this.peekChar();if(h===void 0)return;let g=h==="0",p=2**(8*o)-1;for(;;){let l=this.readAtomically(()=>{let m=this.readChar();if(m===void 0)return;let d=Number.parseInt(m,t);if(!Number.isNaN(d))return d});if(l===void 0)break;if(i*=t,i+=l,i>p||(c+=1,e!==void 0&&c>e))return}if(c!==0)return!n&&g&&c>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let c=this.readSeparator(":",n,()=>this.readIPv4Addr());if(c!==void 0)return e[o]=c[0],e[o+1]=c[1],e[o+2]=c[2],e[o+3]=c[3],[o+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[o,!1];e[o]=i>>8,e[o+1]=i&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),c=16-(n+2),[h]=t(i.subarray(0,c));return e.set(i.subarray(0,h),16-h),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var un=45,qi=15,vt=new Kt;function He(r){if(!(r.length>qi))return vt.new(r).parseWith(()=>vt.readIPv4Addr())}function Qe(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>un))return vt.new(r).parseWith(()=>vt.readIPv6Addr())}function Yt(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>un))return vt.new(r).parseWith(()=>vt.readIPAddr())}var nc=parseInt("0xFFFF",16),oc=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function $t(r,t="utf8"){let e=Zt[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?ft(globalThis.Buffer.from(r,"utf-8")):e.decoder.decode(`${e.prefix}${r}`)}function te(r){return!!He(r)}function ee(r){return!!Qe(r)}function Ct(r){return!!Yt(r)}var ln=te,Zi=ee,Ze=function(r){let t=0;if(r=r.toString().trim(),ln(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(Zi(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let i=ln(e[n]),c;i&&(c=Ze(e[n]),e[n]=k(c.slice(0,2),"base16")),c!=null&&++n<8&&e.splice(n,0,k(c.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let i=[n,1];for(n=9-e.length;n>0;n--)i.push("0");e.splice.apply(e,i)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let i=parseInt(e[n],16);o[t++]=i>>8&255,o[t++]=i&255}return o}throw new Error("invalid ip address")},dn=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let i=0;i<e;i++)o.push(r[t+i]);return o.join(".")}if(e===16){let o=[];for(let i=0;i<e;i+=2)o.push(n.getUint16(t+i).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var Ft={},Ke={},Yi=[[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"],[777,-1,"memory"]];Yi.forEach(r=>{let t=ts(...r);Ke[t.code]=t,Ft[t.name]=t});function ts(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function I(r){if(typeof r=="number"){if(Ke[r]!=null)return Ke[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(Ft[r]!=null)return Ft[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Gc=I("ip4"),Wc=I("ip6"),qc=I("ipcidr");function tr(r,t){switch(I(r).code){case 4:case 41:return rs(t);case 42:return gn(t);case 6:case 273:case 33:case 132:return bn(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return gn(t);case 421:return ss(t);case 444:return wn(t);case 445:return wn(t);case 466:return is(t);default:return k(t,"base16")}}function er(r,t){switch(I(r).code){case 4:return pn(t);case 41:return pn(t);case 42:return mn(t);case 6:case 273:case 33:case 132:return rr(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return mn(t);case 421:return ns(t);case 444:return as(t);case 445:return cs(t);case 466:return os(t);default:return $t(t,"base16")}}var Ye=Object.values(Ut).map(r=>r.decoder),es=function(){let r=Ye[0].or(Ye[1]);return Ye.slice(2).forEach(t=>r=r.or(t)),r}();function pn(r){if(!Ct(r))throw new Error("invalid ip address");return Ze(r)}function rs(r){let t=dn(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!Ct(t))throw new Error("invalid ip address");return t}function rr(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function bn(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function mn(r){let t=$t(r),e=Uint8Array.from(ot(t.length));return j([e,t],e.length+t.length)}function gn(r){let t=X(r);if(r=r.slice($(t)),r.length!==t)throw new Error("inconsistent lengths");return k(r)}function ns(r){let t;r[0]==="Q"||r[0]==="1"?t=Ht(P.decode(`z${r}`)).bytes:t=nt.parse(r).multihash.bytes;let e=Uint8Array.from(ot(t.length));return j([e,t],e.length+t.length)}function os(r){let t=es.decode(r),e=Uint8Array.from(ot(t.length));return j([e,t],e.length+t.length)}function is(r){let t=X(r),e=r.slice($(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+k(e,"base64url")}function ss(r){let t=X(r),e=r.slice($(t));if(e.length!==t)throw new Error("inconsistent lengths");return k(e,"base58btc")}function as(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=q.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=rr(n);return j([e,o],e.length+o.length)}function cs(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=q.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=rr(n);return j([e,o],e.length+o.length)}function wn(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=k(t,"base32"),o=bn(e);return`${n}:${o}`}function yn(r){r=nr(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<o.length;i++){let c=o[i],h=I(c);if(h.size===0){t.push([h.code]),e.push([h.code]);continue}if(i++,i>=o.length)throw In("invalid address: "+r);if(h.path===!0){n=nr(o.slice(i).join("/")),t.push([h.code,er(h.code,n)]),e.push([h.code,n]);break}let g=er(h.code,o[i]);t.push([h.code,g]),e.push([h.code,tr(h.code,g)])}return{string:xn(e),bytes:ir(t),tuples:t,stringTuples:e,path:n}}function or(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let i=X(r,o),c=$(i),h=I(i),g=us(h,r.slice(o+c));if(g===0){t.push([i]),e.push([i]),o+=c;continue}let p=r.slice(o+c,o+c+g);if(o+=g+c,o>r.length)throw In("Invalid address Uint8Array: "+k(r,"base16"));t.push([i,p]);let l=tr(i,p);if(e.push([i,l]),h.path===!0){n=l;break}}return{bytes:Uint8Array.from(r),string:xn(e),tuples:t,stringTuples:e,path:n}}function xn(r){let t=[];return r.map(e=>{let n=I(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),nr(t.join("/"))}function ir(r){return j(r.map(t=>{let e=I(t[0]),n=Uint8Array.from(ot(e.code));return t.length>1&&t[1]!=null&&(n=j([n,t[1]])),n}))}function us(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=X(t instanceof Uint8Array?t:Uint8Array.from(t));return e+$(e)}}function nr(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function In(r){return new Error("Error parsing address: "+r)}var fs=Symbol.for("nodejs.util.inspect.custom"),sr=Symbol.for("@multiformats/js-multiaddr/multiaddr"),hs=[I("dns").code,I("dns4").code,I("dns6").code,I("dnsaddr").code],re=class r{bytes;#e;#t;#r;#n;[sr]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=or(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=yn(t)}else if(En(t))e=or(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#e=e.string,this.#t=e.tuples,this.#r=e.stringTuples,this.#n=e.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let t,e,n,o,i="",c=I("tcp"),h=I("udp"),g=I("ip4"),p=I("ip6"),l=I("dns6"),m=I("ip6zone");for(let[s,a]of this.stringTuples())s===m.code&&(i=`%${a??""}`),hs.includes(s)&&(e=c.name,o=443,n=`${a??""}${i}`,t=s===l.code?6:4),(s===c.code||s===h.code)&&(e=I(s).name,o=parseInt(a??"")),(s===g.code||s===p.code)&&(e=I(s).name,n=`${a??""}${i}`,t=s===p.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#t.map(([t])=>Object.assign({},I(t)))}protoCodes(){return this.#t.map(([t])=>t)}protoNames(){return this.#t.map(([t])=>I(t).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(ir(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===Ft.p2p.code&&t.push([n,o]),n===Ft["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?k(P.decode(`z${n}`),"base58btc"):k(nt.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(t){return Qt(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(i=>i.resolvable);if(e==null)return[this];let n=An.get(e.name);if(n==null)throw new W(`no available resolver for ${e.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,t)).map(i=>new r(i))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[fs](){return`Multiaddr(${this.#e})`}};var An=new Map;function En(r){return!!r?.[sr]}function ar(r){return new re(r)}var vn=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},ls=new WeakMap;function ds({clearTimeout:r,setTimeout:t}={}){return(e,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(vn());let i,c,h,g=r??clearTimeout,p=()=>{g(i),h(vn())},l=()=>{o&&o.removeEventListener("abort",p)},m=new Promise((d,s)=>{c=()=>{l(),d(n)},h=s,i=(t??setTimeout)(c,e)});return o&&o.addEventListener("abort",p,{once:!0}),ls.set(m,()=>{g(i),i=null,c()}),m}}var ps=ds(),Cn=ps;function ne(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var oe=class{buffer;mask;top;btm;next;constructor(t){if(!(t>0)||t-1&t)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(t),this.mask=t-1,this.top=0,this.btm=0,this.next=null}push(t){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=t,this.top=this.top+1&this.mask,!0)}shift(){let t=this.buffer[this.btm];if(t!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,t}isEmpty(){return this.buffer[this.btm]===void 0}},St=class{size;hwm;head;tail;constructor(t={}){this.hwm=t.splitLimit??16,this.head=new oe(this.hwm),this.tail=this.head,this.size=0}calculateSize(t){return t?.byteLength!=null?t.byteLength:1}push(t){if(t?.value!=null&&(this.size+=this.calculateSize(t.value)),!this.head.push(t)){let e=this.head;this.head=e.next=new oe(2*this.head.buffer.length),this.head.push(t)}}shift(){let t=this.tail.shift();if(t===void 0&&this.tail.next!=null){let e=this.tail.next;this.tail.next=null,this.tail=e,t=this.tail.shift()}return t?.value!=null&&(this.size-=this.calculateSize(t.value)),t}isEmpty(){return this.head.isEmpty()}};var cr=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.code=e??"ABORT_ERR"}};function Fn(r={}){return ms(e=>{let n=e.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function ms(r,t){t=t??{};let e=t.onEnd,n=new St,o,i,c,h=ne(),g=async()=>{try{return n.isEmpty()?c?{done:!0}:await new Promise((u,w)=>{i=b=>{i=null,n.push(b);try{u(r(n))}catch(y){w(y)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{h.resolve(),h=ne()})}},p=u=>i!=null?i(u):(n.push(u),o),l=u=>(n=new St,i!=null?i({error:u}):(n.push({error:u}),o)),m=u=>{if(c)return o;if(t?.objectMode!==!0&&u?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return p({done:!1,value:u})},d=u=>c?o:(c=!0,u!=null?l(u):p({done:!0})),s=()=>(n=new St,d(),{done:!0}),a=u=>(d(u),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:g,return:s,throw:a,push:m,end:d,get readableLength(){return n.size},onEmpty:async u=>{let w=u?.signal;if(w?.throwIfAborted(),n.isEmpty())return;let b,y;w!=null&&(b=new Promise((v,D)=>{y=()=>{D(new cr)},w.addEventListener("abort",y)}));try{await Promise.race([h.promise,b])}finally{y!=null&&w!=null&&w?.removeEventListener("abort",y)}}},e==null)return o;let f=o;return o={[Symbol.asyncIterator](){return this},next(){return f.next()},throw(u){return f.throw(u),e!=null&&(e(u),e=void 0),{done:!0}},return(){return f.return(),e!=null&&(e(),e=void 0),{done:!0}},push:m,end(u){return f.end(u),e!=null&&(e(u),e=void 0),o},get readableLength(){return f.readableLength}},o}var Ln=Symbol.for("@achingbrain/uint8arraylist");function Sn(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function ie(r){return!!r?.[Ln]}var J=class r{constructor(...t){Object.defineProperty(this,Ln,{value:!0}),this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(ie(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(ie(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=Sn(this.bufs,t);return e.buf[e.index]}set(t,e){let n=Sn(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(ie(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return j(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:j(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),i=new r;return i.length=o,i.bufs=n,i}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let i=0;i<this.bufs.length;i++){let c=this.bufs[i],h=o,g=h+c.byteLength;if(o=g,t>=g)continue;let p=t>=h&&t<g,l=e>h&&e<=g;if(p&&l){if(t===h&&e===g){n.push(c);break}let m=t-h;n.push(c.subarray(m,m+(e-t)));break}if(p){if(t===0){n.push(c);continue}n.push(c.subarray(t-h));continue}if(l){if(e===g){n.push(c);break}n.push(c.subarray(0,e-h));break}n.push(c)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!ie(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let i=256,c=new Int32Array(i);for(let m=0;m<i;m++)c[m]=-1;for(let m=0;m<o;m++)c[n[m]]=m;let h=c,g=this.byteLength-n.byteLength,p=n.byteLength-1,l;for(let m=e;m<=g;m+=l){l=0;for(let d=p;d>=0;d--){let s=this.get(m+d);if(n[d]!==s){l=Math.max(1,d-h[s]);break}}if(l===0)return m}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=R(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=et(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=et(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=et(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=R(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=et(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=et(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=et(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=et(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=et(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!Qt(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,i)=>o+i.byteLength,0)),n.length=e,n}};var se=class extends Error{code;constructor(t,e){super(t),this.code=e}},ur=class extends se{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted"}};function Pn(r){let t=Fn();r.sink(t).catch(i=>{t.end(i)}),r.sink=async i=>{for await(let c of i)t.push(c);t.end()};let e=r.source;r.source[Symbol.iterator]!=null?e=r.source[Symbol.iterator]():r.source[Symbol.asyncIterator]!=null&&(e=r.source[Symbol.asyncIterator]());let n=new J;return{read:async(i,c)=>{c?.signal?.throwIfAborted();let h,g=new Promise((p,l)=>{h=()=>{l(new ur("Read aborted"))},c?.signal?.addEventListener("abort",h)});try{if(i==null){let{done:l,value:m}=await Promise.race([e.next(),g]);return l===!0?new J:m}for(;n.byteLength<i;){let{value:l,done:m}=await Promise.race([e.next(),g]);if(m===!0)throw new se("unexpected end of input","ERR_UNEXPECTED_EOF");n.append(l)}let p=n.sublist(0,i);return n.consume(i),p}finally{h!=null&&c?.signal?.removeEventListener("abort",h)}},write:async(i,c)=>{c?.signal?.throwIfAborted(),i instanceof Uint8Array?t.push(i):t.push(i.subarray()),await t.onEmpty(c)},unwrap:()=>{let i=r.source;return r.source=async function*(){yield*n,yield*i}(),r}}}function ae(r){return r[Symbol.asyncIterator]!=null}var ce=r=>{let t=$(r),e=R(t);return ot(r,e),ce.bytes=t,e};ce.bytes=0;function ue(r,t){t=t??{};let e=t.lengthEncoder??ce;function*n(o){let i=e(o.byteLength);i instanceof Uint8Array?yield i:yield*i,o instanceof Uint8Array?yield o:yield*o}return ae(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}ue.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??ce;return new J(e(r.byteLength),r)};var Lt=Wt(Rn(),1);var ws=8,bs=1024*1024*4,ht;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(ht||(ht={}));var hr=r=>{let t=X(r);return hr.bytes=$(t),t};hr.bytes=0;function fr(r,t){let e=new J,n=ht.LENGTH,o=-1,i=t?.lengthDecoder??hr,c=t?.maxLengthLength??ws,h=t?.maxDataLength??bs;function*g(){for(;e.byteLength>0;){if(n===ht.LENGTH)try{if(o=i(e),o<0)throw(0,Lt.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>h)throw(0,Lt.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let p=i.bytes;e.consume(p),t?.onLength!=null&&t.onLength(o),n=ht.DATA}catch(p){if(p instanceof RangeError){if(e.byteLength>c)throw(0,Lt.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw p}if(n===ht.DATA){if(e.byteLength<o)break;let p=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(p),yield p,n=ht.LENGTH}}}return ae(r)?async function*(){for await(let p of r)e.append(p),yield*g();if(e.byteLength>0)throw(0,Lt.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let p of r)e.append(p),yield*g();if(e.byteLength>0)throw(0,Lt.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}fr.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:i,value:c}=await r.next(e);if(i===!0)return;c!=null&&(yield c)}catch(i){if(i.code==="ERR_UNDER_READ")return{done:!0,value:null};throw i}finally{e=1}}();return fr(n,{...t??{},onLength:i=>{e=i}})};var fe=class extends Error{code;constructor(t,e){super(t),this.code=e}},Tn=r=>X(r);Tn.bytes=0;function Un(r,t){let e=Pn(r);return{read:async o=>{let i=-1,c=new J,h=t?.lengthDecoder??Tn;for(;;){c.append(await e.read(1,o));try{i=h(c)}catch(g){if(g instanceof RangeError)continue;throw g}if(i>-1)break;if(t?.maxLengthLength!=null&&c.byteLength>t.maxLengthLength)throw new fe("message length length too long","ERR_MSG_LENGTH_TOO_LONG")}if(t?.maxDataLength!=null&&i>t.maxDataLength)throw new fe("message length too long","ERR_MSG_DATA_TOO_LONG");return e.read(i,o)},write:async(o,i)=>{await e.write(ue.single(o,t),i)},unwrap:()=>e.unwrap()}}function lr(r,t){let e=Un(r,t),n={read:async(o,i)=>{let c=await e.read(i);return o.decode(c)},write:async(o,i,c)=>{await e.write(i.encode(o),c)},pb:o=>({read:async i=>n.read(o,i),write:async(i,c)=>n.write(i,o,c),unwrap:()=>n}),unwrap:()=>e.unwrap()};return n}var dr=new Float32Array([-0]),it=new Uint8Array(dr.buffer);function kn(r,t,e){dr[0]=r,t[e]=it[0],t[e+1]=it[1],t[e+2]=it[2],t[e+3]=it[3]}function $n(r,t){return it[0]=r[t],it[1]=r[t+1],it[2]=r[t+2],it[3]=r[t+3],dr[0]}var pr=new Float64Array([-0]),U=new Uint8Array(pr.buffer);function Mn(r,t,e){pr[0]=r,t[e]=U[0],t[e+1]=U[1],t[e+2]=U[2],t[e+3]=U[3],t[e+4]=U[4],t[e+5]=U[5],t[e+6]=U[6],t[e+7]=U[7]}function Bn(r,t){return U[0]=r[t],U[1]=r[t+1],U[2]=r[t+2],U[3]=r[t+3],U[4]=r[t+4],U[5]=r[t+5],U[6]=r[t+6],U[7]=r[t+7],pr[0]}var xs=BigInt(Number.MAX_SAFE_INTEGER),Is=BigInt(Number.MIN_SAFE_INTEGER),M=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return lt;if(t<xs&&t>Is)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,o=t-(n<<32n);return e&&(n=~n|0n,o=~o|0n,++o>On&&(o=0n,++n>On&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(t){if(t===0)return lt;let e=t<0;e&&(t=-t);let n=t>>>0,o=(t-n)/4294967296>>>0;return e&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):lt}},lt=new M(0,0);lt.toBigInt=function(){return 0n};lt.zzEncode=lt.zzDecode=function(){return this};lt.length=function(){return 1};var On=4294967296n;function zn(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function _n(r,t,e){if(e-t<1)return"";let o,i=[],c=0,h;for(;t<e;)h=r[t++],h<128?i[c++]=h:h>191&&h<224?i[c++]=(h&31)<<6|r[t++]&63:h>239&&h<365?(h=((h&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,i[c++]=55296+(h>>10),i[c++]=56320+(h&1023)):i[c++]=(h&15)<<12|(r[t++]&63)<<6|r[t++]&63,c>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,i)),c=0);return o!=null?(c>0&&o.push(String.fromCharCode.apply(String,i.slice(0,c))),o.join("")):String.fromCharCode.apply(String,i.slice(0,c))}function mr(r,t,e){let n=e,o,i;for(let c=0;c<r.length;++c)o=r.charCodeAt(c),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((i=r.charCodeAt(c+1))&64512)===56320?(o=65536+((o&1023)<<10)+(i&1023),++c,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return e-n}function H(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function he(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var gr=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,H(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw H(this,4);return he(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw H(this,4);return he(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw H(this,4);let t=$n(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw H(this,4);let t=Bn(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw H(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return _n(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw H(this,t);this.pos+=t}else do if(this.pos>=this.len)throw H(this);while(this.buf[this.pos++]&128);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new M(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw H(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw H(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw H(this,8);let t=he(this.buf,this.pos+=4),e=he(this.buf,this.pos+=4);return new M(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){return this.readLongVarint().toNumber(!0)}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function wr(r){return new gr(r instanceof Uint8Array?r:r.subarray())}function br(r,t){let e=wr(r);return t.decode(e)}function yr(r){let t=r??8192,e=t>>>1,n,o=t;return function(c){if(c<1||c>e)return R(c);o+c>t&&(n=R(t),o=0);let h=n.subarray(o,o+=c);return o&7&&(o=(o|7)+1),h}}var dt=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function xr(){}var Ar=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},As=yr();function Es(r){return globalThis.Buffer!=null?R(r):As(r)}var Ot=class{len;head;tail;states;constructor(){this.len=0,this.head=new dt(xr,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new dt(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new Er((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(Mt,10,M.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=M.fromBigInt(t);return this._push(Mt,e.length(),e)}uint64Number(t){let e=M.fromNumber(t);return this._push(Mt,e.length(),e)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=M.fromBigInt(t).zzEncode();return this._push(Mt,e.length(),e)}sint64Number(t){let e=M.fromNumber(t).zzEncode();return this._push(Mt,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(Ir,1,t?1:0)}fixed32(t){return this._push(Bt,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=M.fromBigInt(t);return this._push(Bt,4,e.lo)._push(Bt,4,e.hi)}fixed64Number(t){let e=M.fromNumber(t);return this._push(Bt,4,e.lo)._push(Bt,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(kn,4,t)}double(t){return this._push(Mn,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(Ir,1,0):this.uint32(e)._push(Cs,e,t)}string(t){let e=zn(t);return e!==0?this.uint32(e)._push(mr,e,t):this._push(Ir,1,0)}fork(){return this.states=new Ar(this),this.head=this.tail=new dt(xr,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new dt(xr,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=Es(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function Ir(r,t,e){t[e]=r&255}function vs(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var Er=class extends dt{next;constructor(t,e){super(vs,t,e),this.next=void 0}};function Mt(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function Bt(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function Cs(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(Ot.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(Fs,t,r),this},Ot.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(Ss,t,r),this});function Fs(r,t,e){t.set(r,e)}function Ss(r,t,e){r.length<40?mr(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set($t(r),e)}function vr(){return new Ot}function Cr(r,t){let e=vr();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var Pt;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(Pt||(Pt={}));function le(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function Fr(r){function t(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let e=function(i,c){let h=t(i);c.int32(h)},n=function(i){let c=i.int32();return t(c)};return le("enum",Pt.VARINT,e,n)}function Sr(r,t){return le("message",Pt.LENGTH_DELIMITED,r,t)}var Q;(function(r){let t;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(t=r.Type||(r.Type={}));let e;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(e||(e={})),function(o){o.codec=()=>Fr(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=Sr((o,i,c={})=>{if(c.lengthDelimited!==!1&&i.fork(),o.type!=null&&(i.uint32(8),r.Type.codec().encode(o.type,i)),o.observedAddresses!=null)for(let h of o.observedAddresses)i.uint32(18),i.bytes(h);c.lengthDelimited!==!1&&i.ldelim()},(o,i)=>{let c={observedAddresses:[]},h=i==null?o.len:o.pos+i;for(;o.pos<h;){let g=o.uint32();switch(g>>>3){case 1:c.type=r.Type.codec().decode(o);break;case 2:c.observedAddresses.push(o.bytes());break;default:o.skipType(g&7);break}}return c})),n),r.encode=o=>Cr(o,r.codec()),r.decode=o=>br(o,r.codec())})(Q||(Q={}));var Ls=r=>r.toString().split("/").slice(1),zt=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),C=r=>({match:t=>zt(e=>e===r).match(t),pattern:r}),me=()=>({match:r=>zt(t=>typeof t=="string").match(r),pattern:"{string}"}),jn=()=>({match:r=>zt(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),G=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{P.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),de=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Pe.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),K=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),Y=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),F=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function L(...r){function t(o){let i=Ls(o);for(let c of r){let h=c.match(i);if(h===!1)return!1;i=h}return i}function e(o){return t(o)!==!1}function n(o){let i=t(o);return i===!1?!1:i.length===0}return{matches:e,exactMatch:n}}var Pr=F(C("dns4"),me()),Dr=F(C("dns6"),me()),Nr=F(C("dnsaddr"),me()),Gn=F(C("dns"),me()),Lf=L(Pr),Pf=L(Dr),Df=L(Nr),Wn=L(Y(Gn,Nr,Pr,Dr)),qn=F(C("ip4"),zt(te)),Xn=F(C("ip6"),zt(ee)),Jn=Y(qn,Xn),_t=Y(Jn,Gn,Pr,Dr,Nr),Nf=L(_t),Rf=L(qn),Tf=L(Xn),Hn=L(Jn),ge=F(_t,C("tcp"),jn()),Vt=F(_t,C("udp"),jn()),Ps=Y(ge,Vt),Uf=L(ge),kf=L(Vt),Rr=F(Vt,C("quic")),we=F(Vt,C("quic-v1")),Ds=Y(Rr,we),$f=L(Rr),Mf=L(we),Lr=Y(_t,ge,Vt,Rr,we),Qn=Y(F(Lr,C("ws"),K(G()))),Bf=L(Qn),Zn=Y(F(Lr,C("wss"),K(G())),F(Lr,C("tls"),C("ws"),K(G()))),Of=L(Zn),Kn=F(Ps,C("webrtc-direct"),de(),K(de()),K(G())),zf=L(Kn),Yn=F(we,C("webtransport"),de(),de(),K(G())),_f=L(Yn),pe=Y(Qn,Zn,F(ge,K(G())),F(Ds,K(G())),F(_t,K(G())),Kn,Yn,G()),Vf=L(pe),Ns=F(pe,C("p2p-circuit"),G()),to=L(Ns),Rs=Y(F(pe,C("p2p-circuit"),C("webrtc"),G()),F(pe,C("webrtc"),K(G())),C("webrtc")),jf=L(Rs);var ao=Wt(eo(),1);var ro="[a-fA-F\\d:]",st=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${ro})|(?<=${ro})(?=\\s|$))`:"",Z="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",S="[a-fA-F\\d]{1,4}",be=`
|
|
2
|
+
"use strict";var Libp2PDcutr=(()=>{var to=Object.create;var Mt=Object.defineProperty;var eo=Object.getOwnPropertyDescriptor;var ro=Object.getOwnPropertyNames;var no=Object.getPrototypeOf,oo=Object.prototype.hasOwnProperty;var fe=(r,t)=>()=>(t||r((t={exports:{}}).exports,t),t.exports),k=(r,t)=>{for(var e in t)Mt(r,e,{get:t[e],enumerable:!0})},Sr=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ro(t))!oo.call(r,o)&&o!==e&&Mt(r,o,{get:()=>t[o],enumerable:!(n=eo(t,o))||n.enumerable});return r};var he=(r,t,e)=>(e=r!=null?to(no(r)):{},Sr(t||!r||!r.__esModule?Mt(e,"default",{value:r,enumerable:!0}):e,r)),io=r=>Sr(Mt({},"__esModule",{value:!0}),r);var xn=fe((Gu,bn)=>{"use strict";function wn(r,t){for(let e in t)Object.defineProperty(r,e,{value:t[e],enumerable:!0,configurable:!0});return r}function Gi(r,t,e){if(!r||typeof r=="string")throw new TypeError("Please pass an Error to err-code");e||(e={}),typeof t=="object"&&(e=t,t=""),t&&(e.code=t);try{return wn(r,e)}catch{e.message=r.message,e.stack=r.stack;let o=function(){};return o.prototype=Object.create(Object.getPrototypeOf(r)),wn(new o,e)}}bn.exports=Gi});var zn=fe($t=>{(function(){var r,t,e,n,o,i,a,u;u=function(d){var l,b,w,p;return l=(d&255<<24)>>>24,b=(d&255<<16)>>>16,w=(d&65280)>>>8,p=d&255,[l,b,w,p].join(".")},a=function(d){var l,b,w,p,s,c;for(l=[],w=p=0;p<=3&&d.length!==0;w=++p){if(w>0){if(d[0]!==".")throw new Error("Invalid IP");d=d.substring(1)}c=t(d),s=c[0],b=c[1],d=d.substring(b),l.push(s)}if(d.length!==0)throw new Error("Invalid IP");switch(l.length){case 1:if(l[0]>4294967295)throw new Error("Invalid IP");return l[0]>>>0;case 2:if(l[0]>255||l[1]>16777215)throw new Error("Invalid IP");return(l[0]<<24|l[1])>>>0;case 3:if(l[0]>255||l[1]>255||l[2]>65535)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2])>>>0;case 4:if(l[0]>255||l[1]>255||l[2]>255||l[3]>255)throw new Error("Invalid IP");return(l[0]<<24|l[1]<<16|l[2]<<8|l[3])>>>0;default:throw new Error("Invalid IP")}},e=function(d){return d.charCodeAt(0)},n=e("0"),i=e("a"),o=e("A"),t=function(d){var l,b,w,p,s;for(p=0,l=10,b="9",w=0,d.length>1&&d[w]==="0"&&(d[w+1]==="x"||d[w+1]==="X"?(w+=2,l=16):"0"<=d[w+1]&&d[w+1]<="9"&&(w++,l=8,b="7")),s=w;w<d.length;){if("0"<=d[w]&&d[w]<=b)p=p*l+(e(d[w])-n)>>>0;else if(l===16)if("a"<=d[w]&&d[w]<="f")p=p*l+(10+e(d[w])-i)>>>0;else if("A"<=d[w]&&d[w]<="F")p=p*l+(10+e(d[w])-o)>>>0;else break;else break;if(p>4294967295)throw new Error("too large");w++}if(w===s)throw new Error("empty octet");return[p,w]},r=function(){function d(l,b){var w,p,s,c;if(typeof l!="string")throw new Error("Missing `net' parameter");if(b||(c=l.split("/",2),l=c[0],b=c[1]),b||(b=32),typeof b=="string"&&b.indexOf(".")>-1){try{this.maskLong=a(b)}catch(h){throw w=h,new Error("Invalid mask: "+b)}for(p=s=32;s>=0;p=--s)if(this.maskLong===4294967295<<32-p>>>0){this.bitmask=p;break}}else if(b||b===0)this.bitmask=parseInt(b,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(a(l)&this.maskLong)>>>0}catch(h){throw w=h,new Error("Invalid net address: "+l)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+b);this.size=Math.pow(2,32-this.bitmask),this.base=u(this.netLong),this.mask=u(this.maskLong),this.hostmask=u(~this.maskLong),this.first=this.bitmask<=30?u(this.netLong+1):this.base,this.last=this.bitmask<=30?u(this.netLong+this.size-2):u(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?u(this.netLong+this.size-1):void 0}return d.prototype.contains=function(l){return typeof l=="string"&&(l.indexOf("/")>0||l.split(".").length!==4)&&(l=new d(l)),l instanceof d?this.contains(l.base)&&this.contains(l.broadcast||l.last):(a(l)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0},d.prototype.next=function(l){return l==null&&(l=1),new d(u(this.netLong+this.size*l),this.mask)},d.prototype.forEach=function(l){var b,w,p;for(p=a(this.first),w=a(this.last),b=0;p<=w;)l(u(p),p,b),b++,p++},d.prototype.toString=function(){return this.base+"/"+this.bitmask},d}(),$t.ip2long=a,$t.long2ip=u,$t.Netmask=r}).call($t)});var qn=fe((Wn,ae)=>{(function(r){"use strict";let t="(0?\\d+|0x[a-f0-9]+)",e={fourOctet:new RegExp(`^${t}\\.${t}\\.${t}\\.${t}$`,"i"),threeOctet:new RegExp(`^${t}\\.${t}\\.${t}$`,"i"),twoOctet:new RegExp(`^${t}\\.${t}$`,"i"),longValue:new RegExp(`^${t}$`,"i")},n=new RegExp("^0[0-7]+$","i"),o=new RegExp("^0x[a-f0-9]+$","i"),i="%[0-9a-z]{1,}",a="(?:[0-9a-f]+::?)+",u={zoneIndex:new RegExp(i,"i"),native:new RegExp(`^(::)?(${a})?([0-9a-f]+)?(::)?(${i})?$`,"i"),deprecatedTransitional:new RegExp(`^(?:::)(${t}\\.${t}\\.${t}\\.${t}(${i})?)$`,"i"),transitional:new RegExp(`^((?:${a})|(?:::)(?:${a})?)${t}\\.${t}\\.${t}\\.${t}(${i})?$`,"i")};function d(s,c){if(s.indexOf("::")!==s.lastIndexOf("::"))return null;let h=0,f=-1,m=(s.match(u.zoneIndex)||[])[0],g,x;for(m&&(m=m.substring(1),s=s.replace(/%.+$/,""));(f=s.indexOf(":",f+1))>=0;)h++;if(s.substr(0,2)==="::"&&h--,s.substr(-2,2)==="::"&&h--,h>c)return null;for(x=c-h,g=":";x--;)g+="0:";return s=s.replace("::",g),s[0]===":"&&(s=s.slice(1)),s[s.length-1]===":"&&(s=s.slice(0,-1)),c=function(){let T=s.split(":"),$=[];for(let M=0;M<T.length;M++)$.push(parseInt(T[M],16));return $}(),{parts:c,zoneId:m}}function l(s,c,h,f){if(s.length!==c.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");let m=0,g;for(;f>0;){if(g=h-f,g<0&&(g=0),s[m]>>g!==c[m]>>g)return!1;f-=h,m+=1}return!0}function b(s){if(o.test(s))return parseInt(s,16);if(s[0]==="0"&&!isNaN(parseInt(s[1],10))){if(n.test(s))return parseInt(s,8);throw new Error(`ipaddr: cannot parse ${s} as octal`)}return parseInt(s,10)}function w(s,c){for(;s.length<c;)s=`0${s}`;return s}let p={};p.IPv4=function(){function s(c){if(c.length!==4)throw new Error("ipaddr: ipv4 octet count should be 4");let h,f;for(h=0;h<c.length;h++)if(f=c[h],!(0<=f&&f<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=c}return s.prototype.SpecialRanges={unspecified:[[new s([0,0,0,0]),8]],broadcast:[[new s([255,255,255,255]),32]],multicast:[[new s([224,0,0,0]),4]],linkLocal:[[new s([169,254,0,0]),16]],loopback:[[new s([127,0,0,0]),8]],carrierGradeNat:[[new s([100,64,0,0]),10]],private:[[new s([10,0,0,0]),8],[new s([172,16,0,0]),12],[new s([192,168,0,0]),16]],reserved:[[new s([192,0,0,0]),24],[new s([192,0,2,0]),24],[new s([192,88,99,0]),24],[new s([198,18,0,0]),15],[new s([198,51,100,0]),24],[new s([203,0,113,0]),24],[new s([240,0,0,0]),4]]},s.prototype.kind=function(){return"ipv4"},s.prototype.match=function(c,h){let f;if(h===void 0&&(f=c,c=f[0],h=f[1]),c.kind()!=="ipv4")throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return l(this.octets,c.octets,8,h)},s.prototype.prefixLengthFromSubnetMask=function(){let c=0,h=!1,f={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},m,g,x;for(m=3;m>=0;m-=1)if(g=this.octets[m],g in f){if(x=f[g],h&&x!==0)return null;x!==8&&(h=!0),c+=x}else return null;return 32-c},s.prototype.range=function(){return p.subnetMatch(this,this.SpecialRanges)},s.prototype.toByteArray=function(){return this.octets.slice(0)},s.prototype.toIPv4MappedAddress=function(){return p.IPv6.parse(`::ffff:${this.toString()}`)},s.prototype.toNormalizedString=function(){return this.toString()},s.prototype.toString=function(){return this.octets.join(".")},s}(),p.IPv4.broadcastAddressFromCIDR=function(s){try{let c=this.parseCIDR(s),h=c[0].toByteArray(),f=this.subnetMaskFromPrefixLength(c[1]).toByteArray(),m=[],g=0;for(;g<4;)m.push(parseInt(h[g],10)|parseInt(f[g],10)^255),g++;return new this(m)}catch{throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},p.IPv4.isIPv4=function(s){return this.parser(s)!==null},p.IPv4.isValid=function(s){try{return new this(this.parser(s)),!0}catch{return!1}},p.IPv4.isValidFourPartDecimal=function(s){return!!(p.IPv4.isValid(s)&&s.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},p.IPv4.networkAddressFromCIDR=function(s){let c,h,f,m,g;try{for(c=this.parseCIDR(s),f=c[0].toByteArray(),g=this.subnetMaskFromPrefixLength(c[1]).toByteArray(),m=[],h=0;h<4;)m.push(parseInt(f[h],10)&parseInt(g[h],10)),h++;return new this(m)}catch{throw new Error("ipaddr: the address does not have IPv4 CIDR format")}},p.IPv4.parse=function(s){let c=this.parser(s);if(c===null)throw new Error("ipaddr: string is not formatted like an IPv4 Address");return new this(c)},p.IPv4.parseCIDR=function(s){let c;if(c=s.match(/^(.+)\/(\d+)$/)){let h=parseInt(c[2]);if(h>=0&&h<=32){let f=[this.parse(c[1]),h];return Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f}}throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},p.IPv4.parser=function(s){let c,h,f;if(c=s.match(e.fourOctet))return function(){let m=c.slice(1,6),g=[];for(let x=0;x<m.length;x++)h=m[x],g.push(b(h));return g}();if(c=s.match(e.longValue)){if(f=b(c[1]),f>4294967295||f<0)throw new Error("ipaddr: address outside defined range");return function(){let m=[],g;for(g=0;g<=24;g+=8)m.push(f>>g&255);return m}().reverse()}else return(c=s.match(e.twoOctet))?function(){let m=c.slice(1,4),g=[];if(f=b(m[1]),f>16777215||f<0)throw new Error("ipaddr: address outside defined range");return g.push(b(m[0])),g.push(f>>16&255),g.push(f>>8&255),g.push(f&255),g}():(c=s.match(e.threeOctet))?function(){let m=c.slice(1,5),g=[];if(f=b(m[2]),f>65535||f<0)throw new Error("ipaddr: address outside defined range");return g.push(b(m[0])),g.push(b(m[1])),g.push(f>>8&255),g.push(f&255),g}():null},p.IPv4.subnetMaskFromPrefixLength=function(s){if(s=parseInt(s),s<0||s>32)throw new Error("ipaddr: invalid IPv4 prefix length");let c=[0,0,0,0],h=0,f=Math.floor(s/8);for(;h<f;)c[h]=255,h++;return f<4&&(c[f]=Math.pow(2,s%8)-1<<8-s%8),new this(c)},p.IPv6=function(){function s(c,h){let f,m;if(c.length===16)for(this.parts=[],f=0;f<=14;f+=2)this.parts.push(c[f]<<8|c[f+1]);else if(c.length===8)this.parts=c;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(f=0;f<this.parts.length;f++)if(m=this.parts[f],!(0<=m&&m<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");h&&(this.zoneId=h)}return s.prototype.SpecialRanges={unspecified:[new s([0,0,0,0,0,0,0,0]),128],linkLocal:[new s([65152,0,0,0,0,0,0,0]),10],multicast:[new s([65280,0,0,0,0,0,0,0]),8],loopback:[new s([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new s([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new s([0,0,0,0,0,65535,0,0]),96],rfc6145:[new s([0,0,0,0,65535,0,0,0]),96],rfc6052:[new s([100,65435,0,0,0,0,0,0]),96],"6to4":[new s([8194,0,0,0,0,0,0,0]),16],teredo:[new s([8193,0,0,0,0,0,0,0]),32],reserved:[[new s([8193,3512,0,0,0,0,0,0]),32]],benchmarking:[new s([8193,2,0,0,0,0,0,0]),48],amt:[new s([8193,3,0,0,0,0,0,0]),32],as112v6:[new s([8193,4,274,0,0,0,0,0]),48],deprecated:[new s([8193,16,0,0,0,0,0,0]),28],orchid2:[new s([8193,32,0,0,0,0,0,0]),28]},s.prototype.isIPv4MappedAddress=function(){return this.range()==="ipv4Mapped"},s.prototype.kind=function(){return"ipv6"},s.prototype.match=function(c,h){let f;if(h===void 0&&(f=c,c=f[0],h=f[1]),c.kind()!=="ipv6")throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return l(this.parts,c.parts,16,h)},s.prototype.prefixLengthFromSubnetMask=function(){let c=0,h=!1,f={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},m,g;for(let x=7;x>=0;x-=1)if(m=this.parts[x],m in f){if(g=f[m],h&&g!==0)return null;g!==16&&(h=!0),c+=g}else return null;return 128-c},s.prototype.range=function(){return p.subnetMatch(this,this.SpecialRanges)},s.prototype.toByteArray=function(){let c,h=[],f=this.parts;for(let m=0;m<f.length;m++)c=f[m],h.push(c>>8),h.push(c&255);return h},s.prototype.toFixedLengthString=function(){let c=function(){let f=[];for(let m=0;m<this.parts.length;m++)f.push(w(this.parts[m].toString(16),4));return f}.call(this).join(":"),h="";return this.zoneId&&(h=`%${this.zoneId}`),c+h},s.prototype.toIPv4Address=function(){if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");let c=this.parts.slice(-2),h=c[0],f=c[1];return new p.IPv4([h>>8,h&255,f>>8,f&255])},s.prototype.toNormalizedString=function(){let c=function(){let f=[];for(let m=0;m<this.parts.length;m++)f.push(this.parts[m].toString(16));return f}.call(this).join(":"),h="";return this.zoneId&&(h=`%${this.zoneId}`),c+h},s.prototype.toRFC5952String=function(){let c=/((^|:)(0(:|$)){2,})/g,h=this.toNormalizedString(),f=0,m=-1,g;for(;g=c.exec(h);)g[0].length>m&&(f=g.index,m=g[0].length);return m<0?h:`${h.substring(0,f)}::${h.substring(f+m)}`},s.prototype.toString=function(){return this.toRFC5952String()},s}(),p.IPv6.broadcastAddressFromCIDR=function(s){try{let c=this.parseCIDR(s),h=c[0].toByteArray(),f=this.subnetMaskFromPrefixLength(c[1]).toByteArray(),m=[],g=0;for(;g<16;)m.push(parseInt(h[g],10)|parseInt(f[g],10)^255),g++;return new this(m)}catch(c){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${c})`)}},p.IPv6.isIPv6=function(s){return this.parser(s)!==null},p.IPv6.isValid=function(s){if(typeof s=="string"&&s.indexOf(":")===-1)return!1;try{let c=this.parser(s);return new this(c.parts,c.zoneId),!0}catch{return!1}},p.IPv6.networkAddressFromCIDR=function(s){let c,h,f,m,g;try{for(c=this.parseCIDR(s),f=c[0].toByteArray(),g=this.subnetMaskFromPrefixLength(c[1]).toByteArray(),m=[],h=0;h<16;)m.push(parseInt(f[h],10)&parseInt(g[h],10)),h++;return new this(m)}catch(x){throw new Error(`ipaddr: the address does not have IPv6 CIDR format (${x})`)}},p.IPv6.parse=function(s){let c=this.parser(s);if(c.parts===null)throw new Error("ipaddr: string is not formatted like an IPv6 Address");return new this(c.parts,c.zoneId)},p.IPv6.parseCIDR=function(s){let c,h,f;if((h=s.match(/^(.+)\/(\d+)$/))&&(c=parseInt(h[2]),c>=0&&c<=128))return f=[this.parse(h[1]),c],Object.defineProperty(f,"toString",{value:function(){return this.join("/")}}),f;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},p.IPv6.parser=function(s){let c,h,f,m,g,x;if(f=s.match(u.deprecatedTransitional))return this.parser(`::ffff:${f[1]}`);if(u.native.test(s))return d(s,8);if((f=s.match(u.transitional))&&(x=f[6]||"",c=d(f[1].slice(0,-1)+x,6),c.parts)){for(g=[parseInt(f[2]),parseInt(f[3]),parseInt(f[4]),parseInt(f[5])],h=0;h<g.length;h++)if(m=g[h],!(0<=m&&m<=255))return null;return c.parts.push(g[0]<<8|g[1]),c.parts.push(g[2]<<8|g[3]),{parts:c.parts,zoneId:c.zoneId}}return null},p.IPv6.subnetMaskFromPrefixLength=function(s){if(s=parseInt(s),s<0||s>128)throw new Error("ipaddr: invalid IPv6 prefix length");let c=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],h=0,f=Math.floor(s/8);for(;h<f;)c[h]=255,h++;return f<16&&(c[f]=Math.pow(2,s%8)-1<<8-s%8),new this(c)},p.fromByteArray=function(s){let c=s.length;if(c===4)return new p.IPv4(s);if(c===16)return new p.IPv6(s);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},p.isValid=function(s){return p.IPv6.isValid(s)||p.IPv4.isValid(s)},p.parse=function(s){if(p.IPv6.isValid(s))return p.IPv6.parse(s);if(p.IPv4.isValid(s))return p.IPv4.parse(s);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},p.parseCIDR=function(s){try{return p.IPv6.parseCIDR(s)}catch{try{return p.IPv4.parseCIDR(s)}catch{throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},p.process=function(s){let c=this.parse(s);return c.kind()==="ipv6"&&c.isIPv4MappedAddress()?c.toIPv4Address():c},p.subnetMatch=function(s,c,h){let f,m,g,x;h==null&&(h="unicast");for(m in c)if(Object.prototype.hasOwnProperty.call(c,m)){for(g=c[m],g[0]&&!(g[0]instanceof Array)&&(g=[g]),f=0;f<g.length;f++)if(x=g[f],s.kind()===x[0].kind()&&s.match.apply(s,x))return m}return h},typeof ae<"u"&&ae.exports?ae.exports=p:r.ipaddr=p})(Wn)});var gs={};k(gs,{dcutr:()=>ms,multicodec:()=>It});var bs=Symbol.for("@libp2p/connection");var ys=Symbol.for("@libp2p/content-routing");var vs=Symbol.for("@libp2p/peer-discovery");var Ss=Symbol.for("@libp2p/peer-id");var Ps=Symbol.for("@libp2p/peer-routing");var Lr;(function(r){r.Accept="accept",r.Ignore="ignore",r.Reject="reject"})(Lr||(Lr={}));var Rs=Symbol.for("@libp2p/transport");var Pr;(function(r){r[r.FATAL_ALL=0]="FATAL_ALL",r[r.NO_FATAL=1]="NO_FATAL"})(Pr||(Pr={}));var z=class extends Error{code;props;constructor(t,e,n){super(t),this.code=e,this.name=n?.name??"CodeError",this.props=n??{}}};var it="ERR_INVALID_MESSAGE";var le=class extends Event{detail;constructor(t,e){super(t,e),this.detail=e?.detail}},Ms=globalThis.CustomEvent??le;var we={};k(we,{base58btc:()=>P,base58flickr:()=>ho});function so(r,t){if(r.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),n=0;n<e.length;n++)e[n]=255;for(var o=0;o<r.length;o++){var i=r.charAt(o),a=i.charCodeAt(0);if(e[a]!==255)throw new TypeError(i+" is ambiguous");e[a]=o}var u=r.length,d=r.charAt(0),l=Math.log(u)/Math.log(256),b=Math.log(256)/Math.log(u);function w(c){if(c instanceof Uint8Array||(ArrayBuffer.isView(c)?c=new Uint8Array(c.buffer,c.byteOffset,c.byteLength):Array.isArray(c)&&(c=Uint8Array.from(c))),!(c instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(c.length===0)return"";for(var h=0,f=0,m=0,g=c.length;m!==g&&c[m]===0;)m++,h++;for(var x=(g-m)*b+1>>>0,T=new Uint8Array(x);m!==g;){for(var $=c[m],M=0,V=x-1;($!==0||M<f)&&V!==-1;V--,M++)$+=256*T[V]>>>0,T[V]=$%u>>>0,$=$/u>>>0;if($!==0)throw new Error("Non-zero carry");f=M,m++}for(var Q=x-f;Q!==x&&T[Q]===0;)Q++;for(var kt=d.repeat(h);Q<x;++Q)kt+=r.charAt(T[Q]);return kt}function p(c){if(typeof c!="string")throw new TypeError("Expected String");if(c.length===0)return new Uint8Array;var h=0;if(c[h]!==" "){for(var f=0,m=0;c[h]===d;)f++,h++;for(var g=(c.length-h)*l+1>>>0,x=new Uint8Array(g);c[h];){var T=e[c.charCodeAt(h)];if(T===255)return;for(var $=0,M=g-1;(T!==0||$<m)&&M!==-1;M--,$++)T+=u*x[M]>>>0,x[M]=T%256>>>0,T=T/256>>>0;if(T!==0)throw new Error("Non-zero carry");m=$,h++}if(c[h]!==" "){for(var V=g-m;V!==g&&x[V]===0;)V++;for(var Q=new Uint8Array(f+(g-V)),kt=f;V!==g;)Q[kt++]=x[V++];return Q}}}function s(c){var h=p(c);if(h)return h;throw new Error(`Non-${t} character`)}return{encode:w,decodeUnsafe:p,decode:s}}var ao=so,co=ao,Nr=co;var ua=new Uint8Array(0);var Dr=(r,t)=>{if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0},J=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")};var Fr=r=>new TextEncoder().encode(r),Rr=r=>new TextDecoder().decode(r);var de=class{constructor(t,e,n){this.name=t,this.prefix=e,this.baseEncode=n}encode(t){if(t instanceof Uint8Array)return`${this.prefix}${this.baseEncode(t)}`;throw Error("Unknown type, must be binary type")}},pe=class{constructor(t,e,n){if(this.name=t,this.prefix=e,e.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=e.codePointAt(0),this.baseDecode=n}decode(t){if(typeof t=="string"){if(t.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(t)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(t.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(t){return Cr(this,t)}},me=class{constructor(t){this.decoders=t}or(t){return Cr(this,t)}decode(t){let e=t[0],n=this.decoders[e];if(n)return n.decode(t);throw RangeError(`Unable to decode multibase string ${JSON.stringify(t)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}},Cr=(r,t)=>new me({...r.decoders||{[r.prefix]:r},...t.decoders||{[t.prefix]:t}}),ge=class{constructor(t,e,n,o){this.name=t,this.prefix=e,this.baseEncode=n,this.baseDecode=o,this.encoder=new de(t,e,n),this.decoder=new pe(t,e,o)}encode(t){return this.encoder.encode(t)}decode(t){return this.decoder.decode(t)}},ft=({name:r,prefix:t,encode:e,decode:n})=>new ge(r,t,e,n),Y=({prefix:r,name:t,alphabet:e})=>{let{encode:n,decode:o}=Nr(e,t);return ft({prefix:r,name:t,encode:n,decode:i=>J(o(i))})},uo=(r,t,e,n)=>{let o={};for(let b=0;b<t.length;++b)o[t[b]]=b;let i=r.length;for(;r[i-1]==="=";)--i;let a=new Uint8Array(i*e/8|0),u=0,d=0,l=0;for(let b=0;b<i;++b){let w=o[r[b]];if(w===void 0)throw new SyntaxError(`Non-${n} character`);d=d<<e|w,u+=e,u>=8&&(u-=8,a[l++]=255&d>>u)}if(u>=e||255&d<<8-u)throw new SyntaxError("Unexpected end of data");return a},fo=(r,t,e)=>{let n=t[t.length-1]==="=",o=(1<<e)-1,i="",a=0,u=0;for(let d=0;d<r.length;++d)for(u=u<<8|r[d],a+=8;a>e;)a-=e,i+=t[o&u>>a];if(a&&(i+=t[o&u<<e-a]),n)for(;i.length*e&7;)i+="=";return i},A=({name:r,prefix:t,bitsPerChar:e,alphabet:n})=>ft({prefix:t,name:r,encode(o){return fo(o,n,e)},decode(o){return uo(o,n,e,r)}});var P=Y({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),ho=Y({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var be={};k(be,{base32:()=>K,base32hex:()=>go,base32hexpad:()=>bo,base32hexpadupper:()=>xo,base32hexupper:()=>wo,base32pad:()=>po,base32padupper:()=>mo,base32upper:()=>lo,base32z:()=>yo});var K=A({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),lo=A({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),po=A({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),mo=A({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),go=A({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),wo=A({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),bo=A({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),xo=A({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),yo=A({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Io=kr,Ur=128,Ao=127,vo=~Ao,Eo=Math.pow(2,31);function kr(r,t,e){t=t||[],e=e||0;for(var n=e;r>=Eo;)t[e++]=r&255|Ur,r/=128;for(;r&vo;)t[e++]=r&255|Ur,r>>>=7;return t[e]=r|0,kr.bytes=e-n+1,t}var So=xe,Lo=128,$r=127;function xe(r,n){var e=0,n=n||0,o=0,i=n,a,u=r.length;do{if(i>=u)throw xe.bytes=0,new RangeError("Could not decode varint");a=r[i++],e+=o<28?(a&$r)<<o:(a&$r)*Math.pow(2,o),o+=7}while(a>=Lo);return xe.bytes=i-n,e}var Po=Math.pow(2,7),No=Math.pow(2,14),Do=Math.pow(2,21),Fo=Math.pow(2,28),Ro=Math.pow(2,35),To=Math.pow(2,42),Co=Math.pow(2,49),Uo=Math.pow(2,56),$o=Math.pow(2,63),ko=function(r){return r<Po?1:r<No?2:r<Do?3:r<Fo?4:r<Ro?5:r<To?6:r<Co?7:r<Uo?8:r<$o?9:10},Mo={encode:Io,decode:So,encodingLength:ko},Bo=Mo,At=Bo;var vt=(r,t=0)=>[At.decode(r,t),At.decode.bytes],ht=(r,t,e=0)=>(At.encode(r,t,e),t),lt=r=>At.encodingLength(r);var st=(r,t)=>{let e=t.byteLength,n=lt(r),o=n+lt(e),i=new Uint8Array(o+e);return ht(r,i,0),ht(e,i,n),i.set(t,o),new dt(r,e,t,i)},Ot=r=>{let t=J(r),[e,n]=vt(t),[o,i]=vt(t.subarray(n)),a=t.subarray(n+i);if(a.byteLength!==o)throw new Error("Incorrect length");return new dt(e,o,a,t)},Mr=(r,t)=>{if(r===t)return!0;{let e=t;return r.code===e.code&&r.size===e.size&&e.bytes instanceof Uint8Array&&Dr(r.bytes,e.bytes)}},dt=class{constructor(t,e,n,o){this.code=t,this.size=e,this.digest=n,this.bytes=o}};var Br=(r,t)=>{let{bytes:e,version:n}=r;switch(n){case 0:return _o(e,ye(r),t||P.encoder);default:return Vo(e,ye(r),t||K.encoder)}};var Or=new WeakMap,ye=r=>{let t=Or.get(r);if(t==null){let e=new Map;return Or.set(r,e),e}return t},tt=class r{constructor(t,e,n,o){this.code=e,this.version=t,this.multihash=n,this.bytes=o,this["/"]=o}get asCID(){return this}get byteOffset(){return this.bytes.byteOffset}get byteLength(){return this.bytes.byteLength}toV0(){switch(this.version){case 0:return this;case 1:{let{code:t,multihash:e}=this;if(t!==Et)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(e.code!==zo)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(e)}default:throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`)}}toV1(){switch(this.version){case 0:{let{code:t,digest:e}=this.multihash,n=st(t,e);return r.createV1(this.code,n)}case 1:return this;default:throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`)}}equals(t){return r.equals(this,t)}static equals(t,e){let n=e;return n&&t.code===n.code&&t.version===n.version&&Mr(t.multihash,n.multihash)}toString(t){return Br(this,t)}toJSON(){return{"/":Br(this)}}link(){return this}get[Symbol.toStringTag](){return"CID"}[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(t){if(t==null)return null;let e=t;if(e instanceof r)return e;if(e["/"]!=null&&e["/"]===e.bytes||e.asCID===e){let{version:n,code:o,multihash:i,bytes:a}=e;return new r(n,o,i,a||_r(n,o,i.bytes))}else if(e[jo]===!0){let{version:n,multihash:o,code:i}=e,a=Ot(o);return r.create(n,i,a)}else return null}static create(t,e,n){if(typeof e!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(t){case 0:{if(e!==Et)throw new Error(`Version 0 CID must use dag-pb (code: ${Et}) block encoding`);return new r(t,e,n,n.bytes)}case 1:{let o=_r(t,e,n.bytes);return new r(t,e,n,o)}default:throw new Error("Invalid version")}}static createV0(t){return r.create(0,Et,t)}static createV1(t,e){return r.create(1,t,e)}static decode(t){let[e,n]=r.decodeFirst(t);if(n.length)throw new Error("Incorrect length");return e}static decodeFirst(t){let e=r.inspectBytes(t),n=e.size-e.multihashSize,o=J(t.subarray(n,n+e.multihashSize));if(o.byteLength!==e.multihashSize)throw new Error("Incorrect length");let i=o.subarray(e.multihashSize-e.digestSize),a=new dt(e.multihashCode,e.digestSize,i,o);return[e.version===0?r.createV0(a):r.createV1(e.codec,a),t.subarray(e.size)]}static inspectBytes(t){let e=0,n=()=>{let[w,p]=vt(t.subarray(e));return e+=p,w},o=n(),i=Et;if(o===18?(o=0,e=0):i=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let a=e,u=n(),d=n(),l=e+d,b=l-a;return{version:o,codec:i,multihashCode:u,digestSize:d,multihashSize:b,size:l}}static parse(t,e){let[n,o]=Oo(t,e),i=r.decode(o);if(i.version===0&&t[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ye(i).set(n,t),i}},Oo=(r,t)=>{switch(r[0]){case"Q":{let e=t||P;return[P.prefix,e.decode(`${P.prefix}${r}`)]}case P.prefix:{let e=t||P;return[P.prefix,e.decode(r)]}case K.prefix:{let e=t||K;return[K.prefix,e.decode(r)]}default:{if(t==null)throw Error("To parse non base32 or base58btc encoded CID multibase decoder must be provided");return[r[0],t.decode(r)]}}},_o=(r,t,e)=>{let{prefix:n}=e;if(n!==P.prefix)throw Error(`Cannot string encode V0 in ${e.name} encoding`);let o=t.get(n);if(o==null){let i=e.encode(r).slice(1);return t.set(n,i),i}else return o},Vo=(r,t,e)=>{let{prefix:n}=e,o=t.get(n);if(o==null){let i=e.encode(r);return t.set(n,i),i}else return o},Et=112,zo=18,_r=(r,t,e)=>{let n=lt(r),o=n+lt(t),i=new Uint8Array(o+e.byteLength);return ht(r,i,0),ht(t,i,n),i.set(e,o),i},jo=Symbol.for("@ipld/js-cid/CID");function _t(r,t){if(r===t)return!0;if(r.byteLength!==t.byteLength)return!1;for(let e=0;e<r.byteLength;e++)if(r[e]!==t[e])return!1;return!0}var Ie={};k(Ie,{base10:()=>Go});var Go=Y({prefix:"9",name:"base10",alphabet:"0123456789"});var Ae={};k(Ae,{base16:()=>Wo,base16upper:()=>qo});var Wo=A({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),qo=A({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var ve={};k(ve,{base2:()=>Xo});var Xo=A({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var Ee={};k(Ee,{base256emoji:()=>Zo});var Vr=Array.from("\u{1F680}\u{1FA90}\u2604\u{1F6F0}\u{1F30C}\u{1F311}\u{1F312}\u{1F313}\u{1F314}\u{1F315}\u{1F316}\u{1F317}\u{1F318}\u{1F30D}\u{1F30F}\u{1F30E}\u{1F409}\u2600\u{1F4BB}\u{1F5A5}\u{1F4BE}\u{1F4BF}\u{1F602}\u2764\u{1F60D}\u{1F923}\u{1F60A}\u{1F64F}\u{1F495}\u{1F62D}\u{1F618}\u{1F44D}\u{1F605}\u{1F44F}\u{1F601}\u{1F525}\u{1F970}\u{1F494}\u{1F496}\u{1F499}\u{1F622}\u{1F914}\u{1F606}\u{1F644}\u{1F4AA}\u{1F609}\u263A\u{1F44C}\u{1F917}\u{1F49C}\u{1F614}\u{1F60E}\u{1F607}\u{1F339}\u{1F926}\u{1F389}\u{1F49E}\u270C\u2728\u{1F937}\u{1F631}\u{1F60C}\u{1F338}\u{1F64C}\u{1F60B}\u{1F497}\u{1F49A}\u{1F60F}\u{1F49B}\u{1F642}\u{1F493}\u{1F929}\u{1F604}\u{1F600}\u{1F5A4}\u{1F603}\u{1F4AF}\u{1F648}\u{1F447}\u{1F3B6}\u{1F612}\u{1F92D}\u2763\u{1F61C}\u{1F48B}\u{1F440}\u{1F62A}\u{1F611}\u{1F4A5}\u{1F64B}\u{1F61E}\u{1F629}\u{1F621}\u{1F92A}\u{1F44A}\u{1F973}\u{1F625}\u{1F924}\u{1F449}\u{1F483}\u{1F633}\u270B\u{1F61A}\u{1F61D}\u{1F634}\u{1F31F}\u{1F62C}\u{1F643}\u{1F340}\u{1F337}\u{1F63B}\u{1F613}\u2B50\u2705\u{1F97A}\u{1F308}\u{1F608}\u{1F918}\u{1F4A6}\u2714\u{1F623}\u{1F3C3}\u{1F490}\u2639\u{1F38A}\u{1F498}\u{1F620}\u261D\u{1F615}\u{1F33A}\u{1F382}\u{1F33B}\u{1F610}\u{1F595}\u{1F49D}\u{1F64A}\u{1F639}\u{1F5E3}\u{1F4AB}\u{1F480}\u{1F451}\u{1F3B5}\u{1F91E}\u{1F61B}\u{1F534}\u{1F624}\u{1F33C}\u{1F62B}\u26BD\u{1F919}\u2615\u{1F3C6}\u{1F92B}\u{1F448}\u{1F62E}\u{1F646}\u{1F37B}\u{1F343}\u{1F436}\u{1F481}\u{1F632}\u{1F33F}\u{1F9E1}\u{1F381}\u26A1\u{1F31E}\u{1F388}\u274C\u270A\u{1F44B}\u{1F630}\u{1F928}\u{1F636}\u{1F91D}\u{1F6B6}\u{1F4B0}\u{1F353}\u{1F4A2}\u{1F91F}\u{1F641}\u{1F6A8}\u{1F4A8}\u{1F92C}\u2708\u{1F380}\u{1F37A}\u{1F913}\u{1F619}\u{1F49F}\u{1F331}\u{1F616}\u{1F476}\u{1F974}\u25B6\u27A1\u2753\u{1F48E}\u{1F4B8}\u2B07\u{1F628}\u{1F31A}\u{1F98B}\u{1F637}\u{1F57A}\u26A0\u{1F645}\u{1F61F}\u{1F635}\u{1F44E}\u{1F932}\u{1F920}\u{1F927}\u{1F4CC}\u{1F535}\u{1F485}\u{1F9D0}\u{1F43E}\u{1F352}\u{1F617}\u{1F911}\u{1F30A}\u{1F92F}\u{1F437}\u260E\u{1F4A7}\u{1F62F}\u{1F486}\u{1F446}\u{1F3A4}\u{1F647}\u{1F351}\u2744\u{1F334}\u{1F4A3}\u{1F438}\u{1F48C}\u{1F4CD}\u{1F940}\u{1F922}\u{1F445}\u{1F4A1}\u{1F4A9}\u{1F450}\u{1F4F8}\u{1F47B}\u{1F910}\u{1F92E}\u{1F3BC}\u{1F975}\u{1F6A9}\u{1F34E}\u{1F34A}\u{1F47C}\u{1F48D}\u{1F4E3}\u{1F942}"),Ho=Vr.reduce((r,t,e)=>(r[e]=t,r),[]),Qo=Vr.reduce((r,t,e)=>(r[t.codePointAt(0)]=e,r),[]);function Jo(r){return r.reduce((t,e)=>(t+=Ho[e],t),"")}function Ko(r){let t=[];for(let e of r){let n=Qo[e.codePointAt(0)];if(n===void 0)throw new Error(`Non-base256emoji character: ${e}`);t.push(n)}return new Uint8Array(t)}var Zo=ft({prefix:"\u{1F680}",name:"base256emoji",encode:Jo,decode:Ko});var Se={};k(Se,{base36:()=>Yo,base36upper:()=>ti});var Yo=Y({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),ti=Y({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Pe={};k(Pe,{base64:()=>ei,base64pad:()=>ri,base64url:()=>Le,base64urlpad:()=>ni});var ei=A({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),ri=A({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Le=A({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),ni=A({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Ne={};k(Ne,{base8:()=>oi});var oi=A({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var De={};k(De,{identity:()=>ii});var ii=ft({prefix:"\0",name:"identity",encode:r=>Rr(r),decode:r=>Fr(r)});var Ca=new TextEncoder,Ua=new TextDecoder;var Fe={};k(Fe,{identity:()=>fi});var zr=0,ci="identity",jr=J,ui=r=>st(zr,jr(r)),fi={code:zr,name:ci,encode:jr,digest:ui};var Ce={};k(Ce,{sha256:()=>hi,sha512:()=>li});var Te=({name:r,code:t,encode:e})=>new Re(r,t,e),Re=class{constructor(t,e,n){this.name=t,this.code=e,this.encode=n}digest(t){if(t instanceof Uint8Array){let e=this.encode(t);return e instanceof Uint8Array?st(this.code,e):e.then(n=>st(this.code,n))}else throw Error("Unknown type, must be binary type")}};var Wr=r=>async t=>new Uint8Array(await crypto.subtle.digest(r,t)),hi=Te({name:"sha2-256",code:18,encode:Wr("SHA-256")}),li=Te({name:"sha2-512",code:19,encode:Wr("SHA-512")});var St={...De,...ve,...Ne,...Ie,...Ae,...be,...Se,...we,...Pe,...Ee},za={...Ce,...Fe};function et(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function Z(r=0){return globalThis.Buffer?.alloc!=null?et(globalThis.Buffer.alloc(r)):new Uint8Array(r)}function N(r=0){return globalThis.Buffer?.allocUnsafe!=null?et(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function Xr(r,t,e,n){return{name:r,prefix:t,encoder:{name:r,prefix:t,encode:e},decoder:{decode:n}}}var qr=Xr("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Ue=Xr("ascii","a",r=>{let t="a";for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return t},r=>{r=r.substring(1);let t=N(r.length);for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}),di={utf8:qr,"utf-8":qr,hex:St.base16,latin1:Ue,ascii:Ue,binary:Ue,...St},Vt=di;function C(r,t="utf8"){let e=Vt[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?globalThis.Buffer.from(r.buffer,r.byteOffset,r.byteLength).toString("utf8"):e.encoder.encode(r).substring(1)}var pi=Math.pow(2,7),mi=Math.pow(2,14),gi=Math.pow(2,21),$e=Math.pow(2,28),ke=Math.pow(2,35),Me=Math.pow(2,42),Be=Math.pow(2,49),y=128,D=127;function F(r){if(r<pi)return 1;if(r<mi)return 2;if(r<gi)return 3;if(r<$e)return 4;if(r<ke)return 5;if(r<Me)return 6;if(r<Be)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function wi(r,t,e=0){switch(F(r)){case 8:t[e++]=r&255|y,r/=128;case 7:t[e++]=r&255|y,r/=128;case 6:t[e++]=r&255|y,r/=128;case 5:t[e++]=r&255|y,r/=128;case 4:t[e++]=r&255|y,r>>>=7;case 3:t[e++]=r&255|y,r>>>=7;case 2:t[e++]=r&255|y,r>>>=7;case 1:{t[e++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return t}function bi(r,t,e=0){switch(F(r)){case 8:t.set(e++,r&255|y),r/=128;case 7:t.set(e++,r&255|y),r/=128;case 6:t.set(e++,r&255|y),r/=128;case 5:t.set(e++,r&255|y),r/=128;case 4:t.set(e++,r&255|y),r>>>=7;case 3:t.set(e++,r&255|y),r>>>=7;case 2:t.set(e++,r&255|y),r>>>=7;case 1:{t.set(e++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return t}function xi(r,t){let e=r[t],n=0;if(n+=e&D,e<y||(e=r[t+1],n+=(e&D)<<7,e<y)||(e=r[t+2],n+=(e&D)<<14,e<y)||(e=r[t+3],n+=(e&D)<<21,e<y)||(e=r[t+4],n+=(e&D)*$e,e<y)||(e=r[t+5],n+=(e&D)*ke,e<y)||(e=r[t+6],n+=(e&D)*Me,e<y)||(e=r[t+7],n+=(e&D)*Be,e<y))return n;throw new RangeError("Could not decode varint")}function yi(r,t){let e=r.get(t),n=0;if(n+=e&D,e<y||(e=r.get(t+1),n+=(e&D)<<7,e<y)||(e=r.get(t+2),n+=(e&D)<<14,e<y)||(e=r.get(t+3),n+=(e&D)<<21,e<y)||(e=r.get(t+4),n+=(e&D)*$e,e<y)||(e=r.get(t+5),n+=(e&D)*ke,e<y)||(e=r.get(t+6),n+=(e&D)*Me,e<y)||(e=r.get(t+7),n+=(e&D)*Be,e<y))return n;throw new RangeError("Could not decode varint")}function rt(r,t,e=0){return t==null&&(t=N(F(r))),t instanceof Uint8Array?wi(r,t,e):bi(r,t,e)}function j(r,t=0){return r instanceof Uint8Array?xi(r,t):yi(r,t)}function B(r,t){if(globalThis.Buffer!=null)return et(globalThis.Buffer.concat(r,t));t==null&&(t=r.reduce((o,i)=>o+i.length,0));let e=N(t),n=0;for(let o of r)e.set(o,n),n+=o.length;return et(e)}var zt=class{index=0;input="";new(t){return this.index=0,this.input=t,this}readAtomically(t){let e=this.index,n=t();return n===void 0&&(this.index=e),n}parseWith(t){let e=t();if(this.index===this.input.length)return e}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(t){return this.readAtomically(()=>{let e=this.readChar();if(e===t)return e})}readSeparator(t,e,n){return this.readAtomically(()=>{if(!(e>0&&this.readGivenChar(t)===void 0))return n()})}readNumber(t,e,n,o){return this.readAtomically(()=>{let i=0,a=0,u=this.peekChar();if(u===void 0)return;let d=u==="0",l=2**(8*o)-1;for(;;){let b=this.readAtomically(()=>{let w=this.readChar();if(w===void 0)return;let p=Number.parseInt(w,t);if(!Number.isNaN(p))return p});if(b===void 0)break;if(i*=t,i+=b,i>l||(a+=1,e!==void 0&&a>e))return}if(a!==0)return!n&&d&&a>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let t=new Uint8Array(4);for(let e=0;e<t.length;e++){let n=this.readSeparator(".",e,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;t[e]=n}return t})}readIPv6Addr(){let t=e=>{for(let n=0;n<e.length/2;n++){let o=n*2;if(n<e.length-3){let a=this.readSeparator(":",n,()=>this.readIPv4Addr());if(a!==void 0)return e[o]=a[0],e[o+1]=a[1],e[o+2]=a[2],e[o+3]=a[3],[o+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[o,!1];e[o]=i>>8,e[o+1]=i&255}return[e.length,!1]};return this.readAtomically(()=>{let e=new Uint8Array(16),[n,o]=t(e);if(n===16)return e;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),a=16-(n+2),[u]=t(i.subarray(0,a));return e.set(i.subarray(0,u),16-u),e})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Hr=45,Ii=15,mt=new zt;function Oe(r){if(!(r.length>Ii))return mt.new(r).parseWith(()=>mt.readIPv4Addr())}function _e(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Hr))return mt.new(r).parseWith(()=>mt.readIPv6Addr())}function jt(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Hr))return mt.new(r).parseWith(()=>mt.readIPAddr())}var hc=parseInt("0xFFFF",16),lc=new Uint8Array([0,0,0,0,0,0,0,0,0,0,255,255]);function Pt(r,t="utf8"){let e=Vt[t];if(e==null)throw new Error(`Unsupported encoding "${t}"`);return(t==="utf8"||t==="utf-8")&&globalThis.Buffer!=null&&globalThis.Buffer.from!=null?et(globalThis.Buffer.from(r,"utf-8")):e.decoder.decode(`${e.prefix}${r}`)}function Gt(r){return!!Oe(r)}function Wt(r){return!!_e(r)}function gt(r){return!!jt(r)}var Kr=Gt,Li=Wt,Ve=function(r){let t=0;if(r=r.toString().trim(),Kr(r)){let e=new Uint8Array(t+4);return r.split(/\./g).forEach(n=>{e[t++]=parseInt(n,10)&255}),e}if(Li(r)){let e=r.split(":",8),n;for(n=0;n<e.length;n++){let i=Kr(e[n]),a;i&&(a=Ve(e[n]),e[n]=C(a.slice(0,2),"base16")),a!=null&&++n<8&&e.splice(n,0,C(a.slice(2,4),"base16"))}if(e[0]==="")for(;e.length<8;)e.unshift("0");else if(e[e.length-1]==="")for(;e.length<8;)e.push("0");else if(e.length<8){for(n=0;n<e.length&&e[n]!=="";n++);let i=[n,1];for(n=9-e.length;n>0;n--)i.push("0");e.splice.apply(e,i)}let o=new Uint8Array(t+16);for(n=0;n<e.length;n++){let i=parseInt(e[n],16);o[t++]=i>>8&255,o[t++]=i&255}return o}throw new Error("invalid ip address")},Zr=function(r,t=0,e){t=~~t,e=e??r.length-t;let n=new DataView(r.buffer);if(e===4){let o=[];for(let i=0;i<e;i++)o.push(r[t+i]);return o.join(".")}if(e===16){let o=[];for(let i=0;i<e;i+=2)o.push(n.getUint16(t+i).toString(16));return o.join(":").replace(/(^|:)0(:0)*:0(:|$)/,"$1::$3").replace(/:{3,4}/,"::")}return""};var wt={},ze={},Ni=[[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"],[777,-1,"memory"]];Ni.forEach(r=>{let t=Di(...r);ze[t.code]=t,wt[t.name]=t});function Di(r,t,e,n,o){return{code:r,size:t,name:e,resolvable:!!n,path:!!o}}function I(r){if(typeof r=="number"){if(ze[r]!=null)return ze[r];throw new Error(`no protocol with code: ${r}`)}else if(typeof r=="string"){if(wt[r]!=null)return wt[r];throw new Error(`no protocol with name: ${r}`)}throw new Error(`invalid protocol id type: ${typeof r}`)}var Zc=I("ip4"),Yc=I("ip6"),tu=I("ipcidr");function Ge(r,t){switch(I(r).code){case 4:case 41:return Ri(t);case 42:return en(t);case 6:case 273:case 33:case 132:return nn(t).toString();case 53:case 54:case 55:case 56:case 400:case 449:case 777:return en(t);case 421:return $i(t);case 444:return rn(t);case 445:return rn(t);case 466:return Ui(t);default:return C(t,"base16")}}function We(r,t){switch(I(r).code){case 4:return Yr(t);case 41:return Yr(t);case 42:return tn(t);case 6:case 273:case 33:case 132:return qe(parseInt(t,10));case 53:case 54:case 55:case 56:case 400:case 449:case 777:return tn(t);case 421:return Ti(t);case 444:return ki(t);case 445:return Mi(t);case 466:return Ci(t);default:return Pt(t,"base16")}}var je=Object.values(St).map(r=>r.decoder),Fi=function(){let r=je[0].or(je[1]);return je.slice(2).forEach(t=>r=r.or(t)),r}();function Yr(r){if(!gt(r))throw new Error("invalid ip address");return Ve(r)}function Ri(r){let t=Zr(r,0,r.length);if(t==null)throw new Error("ipBuff is required");if(!gt(t))throw new Error("invalid ip address");return t}function qe(r){let t=new ArrayBuffer(2);return new DataView(t).setUint16(0,r),new Uint8Array(t)}function nn(r){return new DataView(r.buffer).getUint16(r.byteOffset)}function tn(r){let t=Pt(r),e=Uint8Array.from(rt(t.length));return B([e,t],e.length+t.length)}function en(r){let t=j(r);if(r=r.slice(F(t)),r.length!==t)throw new Error("inconsistent lengths");return C(r)}function Ti(r){let t;r[0]==="Q"||r[0]==="1"?t=Ot(P.decode(`z${r}`)).bytes:t=tt.parse(r).multihash.bytes;let e=Uint8Array.from(rt(t.length));return B([e,t],e.length+t.length)}function Ci(r){let t=Fi.decode(r),e=Uint8Array.from(rt(t.length));return B([e,t],e.length+t.length)}function Ui(r){let t=j(r),e=r.slice(F(t));if(e.length!==t)throw new Error("inconsistent lengths");return"u"+C(e,"base64url")}function $i(r){let t=j(r),e=r.slice(F(t));if(e.length!==t)throw new Error("inconsistent lengths");return C(e,"base58btc")}function ki(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==16)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion address.`);let e=K.decode("b"+t[0]),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=qe(n);return B([e,o],e.length+o.length)}function Mi(r){let t=r.split(":");if(t.length!==2)throw new Error(`failed to parse onion addr: ["'${t.join('", "')}'"]' does not contain a port number`);if(t[0].length!==56)throw new Error(`failed to parse onion addr: ${t[0]} not a Tor onion3 address.`);let e=K.decode(`b${t[0]}`),n=parseInt(t[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=qe(n);return B([e,o],e.length+o.length)}function rn(r){let t=r.slice(0,r.length-2),e=r.slice(r.length-2),n=C(t,"base32"),o=nn(e);return`${n}:${o}`}function on(r){r=Xe(r);let t=[],e=[],n=null,o=r.split("/").slice(1);if(o.length===1&&o[0]==="")return{bytes:new Uint8Array,string:"/",tuples:[],stringTuples:[],path:null};for(let i=0;i<o.length;i++){let a=o[i],u=I(a);if(u.size===0){t.push([u.code]),e.push([u.code]);continue}if(i++,i>=o.length)throw an("invalid address: "+r);if(u.path===!0){n=Xe(o.slice(i).join("/")),t.push([u.code,We(u.code,n)]),e.push([u.code,n]);break}let d=We(u.code,o[i]);t.push([u.code,d]),e.push([u.code,Ge(u.code,d)])}return{string:sn(e),bytes:Qe(t),tuples:t,stringTuples:e,path:n}}function He(r){let t=[],e=[],n=null,o=0;for(;o<r.length;){let i=j(r,o),a=F(i),u=I(i),d=Bi(u,r.slice(o+a));if(d===0){t.push([i]),e.push([i]),o+=a;continue}let l=r.slice(o+a,o+a+d);if(o+=d+a,o>r.length)throw an("Invalid address Uint8Array: "+C(r,"base16"));t.push([i,l]);let b=Ge(i,l);if(e.push([i,b]),u.path===!0){n=b;break}}return{bytes:Uint8Array.from(r),string:sn(e),tuples:t,stringTuples:e,path:n}}function sn(r){let t=[];return r.map(e=>{let n=I(e[0]);return t.push(n.name),e.length>1&&e[1]!=null&&t.push(e[1]),null}),Xe(t.join("/"))}function Qe(r){return B(r.map(t=>{let e=I(t[0]),n=Uint8Array.from(rt(e.code));return t.length>1&&t[1]!=null&&(n=B([n,t[1]])),n}))}function Bi(r,t){if(r.size>0)return r.size/8;if(r.size===0)return 0;{let e=j(t instanceof Uint8Array?t:Uint8Array.from(t));return e+F(e)}}function Xe(r){return"/"+r.trim().split("/").filter(t=>t).join("/")}function an(r){return new Error("Error parsing address: "+r)}var Oi=Symbol.for("nodejs.util.inspect.custom"),Je=Symbol.for("@multiformats/js-multiaddr/multiaddr"),_i=[I("dns").code,I("dns4").code,I("dns6").code,I("dnsaddr").code],qt=class r{bytes;#e;#t;#r;#n;[Je]=!0;constructor(t){t==null&&(t="");let e;if(t instanceof Uint8Array)e=He(t);else if(typeof t=="string"){if(t.length>0&&t.charAt(0)!=="/")throw new Error(`multiaddr "${t}" must start with a "/"`);e=on(t)}else if(un(t))e=He(t.bytes);else throw new Error("addr must be a string, Buffer, or another Multiaddr");this.bytes=e.bytes,this.#e=e.string,this.#t=e.tuples,this.#r=e.stringTuples,this.#n=e.path}toString(){return this.#e}toJSON(){return this.toString()}toOptions(){let t,e,n,o,i="",a=I("tcp"),u=I("udp"),d=I("ip4"),l=I("ip6"),b=I("dns6"),w=I("ip6zone");for(let[s,c]of this.stringTuples())s===w.code&&(i=`%${c??""}`),_i.includes(s)&&(e=a.name,o=443,n=`${c??""}${i}`,t=s===b.code?6:4),(s===a.code||s===u.code)&&(e=I(s).name,o=parseInt(c??"")),(s===d.code||s===l.code)&&(e=I(s).name,n=`${c??""}${i}`,t=s===l.code?6:4);if(t==null||e==null||n==null||o==null)throw new Error('multiaddr must have a valid format: "/{ip4, ip6, dns4, dns6, dnsaddr}/{address}/{tcp, udp}/{port}".');return{family:t,host:n,transport:e,port:o}}protos(){return this.#t.map(([t])=>Object.assign({},I(t)))}protoCodes(){return this.#t.map(([t])=>t)}protoNames(){return this.#t.map(([t])=>I(t).name)}tuples(){return this.#t}stringTuples(){return this.#r}encapsulate(t){return t=new r(t),new r(this.toString()+t.toString())}decapsulate(t){let e=t.toString(),n=this.toString(),o=n.lastIndexOf(e);if(o<0)throw new Error(`Address ${this.toString()} does not contain subaddress: ${t.toString()}`);return new r(n.slice(0,o))}decapsulateCode(t){let e=this.tuples();for(let n=e.length-1;n>=0;n--)if(e[n][0]===t)return new r(Qe(e.slice(0,n)));return this}getPeerId(){try{let t=[];this.stringTuples().forEach(([n,o])=>{n===wt.p2p.code&&t.push([n,o]),n===wt["p2p-circuit"].code&&(t=[])});let e=t.pop();if(e?.[1]!=null){let n=e[1];return n[0]==="Q"||n[0]==="1"?C(P.decode(`z${n}`),"base58btc"):C(tt.parse(n).multihash.bytes,"base58btc")}return null}catch{return null}}getPath(){return this.#n}equals(t){return _t(this.bytes,t.bytes)}async resolve(t){let e=this.protos().find(i=>i.resolvable);if(e==null)return[this];let n=cn.get(e.name);if(n==null)throw new z(`no available resolver for ${e.name}`,"ERR_NO_AVAILABLE_RESOLVER");return(await n(this,t)).map(i=>new r(i))}nodeAddress(){let t=this.toOptions();if(t.transport!=="tcp"&&t.transport!=="udp")throw new Error(`multiaddr must have a valid format - no protocol with name: "${t.transport}". Must have a valid transport protocol: "{tcp, udp}"`);return{family:t.family,address:t.host,port:t.port}}isThinWaistAddress(t){let e=(t??this).protos();return!(e.length!==2||e[0].code!==4&&e[0].code!==41||e[1].code!==6&&e[1].code!==273)}[Oi](){return`Multiaddr(${this.#e})`}};var cn=new Map;function un(r){return!!r?.[Je]}function Ke(r){return new qt(r)}var fn=()=>{let r=new Error("Delay aborted");return r.name="AbortError",r},Vi=new WeakMap;function zi({clearTimeout:r,setTimeout:t}={}){return(e,{value:n,signal:o}={})=>{if(o?.aborted)return Promise.reject(fn());let i,a,u,d=r??clearTimeout,l=()=>{d(i),u(fn())},b=()=>{o&&o.removeEventListener("abort",l)},w=new Promise((p,s)=>{a=()=>{b(),p(n)},u=s,i=(t??setTimeout)(a,e)});return o&&o.addEventListener("abort",l,{once:!0}),Vi.set(w,()=>{d(i),i=null,a()}),w}}var ji=zi(),hn=ji;var dn=Symbol.for("@achingbrain/uint8arraylist");function ln(r,t){if(t==null||t<0)throw new RangeError("index is out of bounds");let e=0;for(let n of r){let o=e+n.byteLength;if(t<o)return{buf:n,index:t-e};e=o}throw new RangeError("index is out of bounds")}function Xt(r){return!!r?.[dn]}var O=class r{bufs;length;[dn]=!0;constructor(...t){this.bufs=[],this.length=0,t.length>0&&this.appendAll(t)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...t){this.appendAll(t)}appendAll(t){let e=0;for(let n of t)if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.push(n);else if(Xt(n))e+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}prepend(...t){this.prependAll(t)}prependAll(t){let e=0;for(let n of t.reverse())if(n instanceof Uint8Array)e+=n.byteLength,this.bufs.unshift(n);else if(Xt(n))e+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=e}get(t){let e=ln(this.bufs,t);return e.buf[e.index]}set(t,e){let n=ln(this.bufs,t);n.buf[n.index]=e}write(t,e=0){if(t instanceof Uint8Array)for(let n=0;n<t.length;n++)this.set(e+n,t[n]);else if(Xt(t))for(let n=0;n<t.length;n++)this.set(e+n,t.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(t){if(t=Math.trunc(t),!(Number.isNaN(t)||t<=0)){if(t===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(t>=this.bufs[0].byteLength)t-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(t),this.length-=t;break}}}slice(t,e){let{bufs:n,length:o}=this._subList(t,e);return B(n,o)}subarray(t,e){let{bufs:n,length:o}=this._subList(t,e);return n.length===1?n[0]:B(n,o)}sublist(t,e){let{bufs:n,length:o}=this._subList(t,e),i=new r;return i.length=o,i.bufs=[...n],i}_subList(t,e){if(t=t??0,e=e??this.length,t<0&&(t=this.length+t),e<0&&(e=this.length+e),t<0||e>this.length)throw new RangeError("index is out of bounds");if(t===e)return{bufs:[],length:0};if(t===0&&e===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let i=0;i<this.bufs.length;i++){let a=this.bufs[i],u=o,d=u+a.byteLength;if(o=d,t>=d)continue;let l=t>=u&&t<d,b=e>u&&e<=d;if(l&&b){if(t===u&&e===d){n.push(a);break}let w=t-u;n.push(a.subarray(w,w+(e-t)));break}if(l){if(t===0){n.push(a);continue}n.push(a.subarray(t-u));continue}if(b){if(e===d){n.push(a);break}n.push(a.subarray(0,e-u));break}n.push(a)}return{bufs:n,length:e-t}}indexOf(t,e=0){if(!Xt(t)&&!(t instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=t instanceof Uint8Array?t:t.subarray();if(e=Number(e??0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let i=256,a=new Int32Array(i);for(let w=0;w<i;w++)a[w]=-1;for(let w=0;w<o;w++)a[n[w]]=w;let u=a,d=this.byteLength-n.byteLength,l=n.byteLength-1,b;for(let w=e;w<=d;w+=b){b=0;for(let p=l;p>=0;p--){let s=this.get(w+p);if(n[p]!==s){b=Math.max(1,p-u[s]);break}}if(b===0)return w}return-1}getInt8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getInt8(0)}setInt8(t,e){let n=N(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,e),this.write(n,t)}getInt16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,e)}setInt16(t,e,n){let o=Z(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,e,n),this.write(o,t)}getInt32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,e)}setInt32(t,e,n){let o=Z(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,e,n),this.write(o,t)}getBigInt64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,e)}setBigInt64(t,e,n){let o=Z(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,e,n),this.write(o,t)}getUint8(t){let e=this.subarray(t,t+1);return new DataView(e.buffer,e.byteOffset,e.byteLength).getUint8(0)}setUint8(t,e){let n=N(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,e),this.write(n,t)}getUint16(t,e){let n=this.subarray(t,t+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,e)}setUint16(t,e,n){let o=Z(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,e,n),this.write(o,t)}getUint32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,e)}setUint32(t,e,n){let o=Z(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,e,n),this.write(o,t)}getBigUint64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,e)}setBigUint64(t,e,n){let o=Z(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,e,n),this.write(o,t)}getFloat32(t,e){let n=this.subarray(t,t+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,e)}setFloat32(t,e,n){let o=Z(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,e,n),this.write(o,t)}getFloat64(t,e){let n=this.subarray(t,t+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,e)}setFloat64(t,e,n){let o=Z(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,e,n),this.write(o,t)}equals(t){if(t==null||!(t instanceof r)||t.bufs.length!==this.bufs.length)return!1;for(let e=0;e<this.bufs.length;e++)if(!_t(this.bufs[e],t.bufs[e]))return!1;return!0}static fromUint8Arrays(t,e){let n=new r;return n.bufs=t,e==null&&(e=t.reduce((o,i)=>o+i.byteLength,0)),n.length=e,n}};function bt(){let r={};return r.promise=new Promise((t,e)=>{r.resolve=t,r.reject=e}),r}var Ht=class extends Error{type;code;constructor(t,e){super(t??"The operation was aborted"),this.type="aborted",this.name="AbortError",this.code=e??"ABORT_ERR"}};async function pn(r,t,e){if(t==null)return r;if(t.aborted)return Promise.reject(new Ht(e?.errorMessage,e?.errorCode));let n,o=new Ht(e?.errorMessage,e?.errorCode);try{return await Promise.race([r,new Promise((i,a)=>{n=()=>{a(o)},t.addEventListener("abort",n)})])}finally{n!=null&&t.removeEventListener("abort",n)}}var Ze=class{needNext;haveNext;ended;nextResult;constructor(){this.ended=!1,this.needNext=bt(),this.needNext.resolve(),this.haveNext=bt()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("Have next but next was undefined");let t=this.nextResult;return this.nextResult=void 0,this.needNext.resolve(),this.needNext=bt(),t}async throw(t){return this.ended=!0,t!=null&&this.haveNext.reject(t),{done:!0,value:void 0}}async return(){let t={done:!0,value:void 0};return await this._push(void 0),t}async push(t,e){await this._push(t,e)}async end(t,e){t!=null?await this.throw(t):await this._push(void 0,e)}async _push(t,e){if(t!=null&&this.ended)throw new Error("Cannot push value onto an ended pushable");this.nextResult!=null&&await this.needNext.promise,t!=null?this.nextResult={done:!1,value:t}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=bt(),await pn(this.needNext.promise,e?.signal,e)}};function mn(){return new Ze}var Qt=class extends Error{code;constructor(t,e){super(t),this.code=e}},Ye=class extends Qt{type;constructor(t){super(t,"ABORT_ERR"),this.type="aborted"}};function gn(r,t){let e=mn();r.sink(e).catch(async a=>{await e.end(a)}),r.sink=async a=>{for await(let u of a)await e.push(u);await e.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 o=new O;return{read:async(a,u)=>{u?.signal?.throwIfAborted();let d,l=new Promise((b,w)=>{d=()=>{w(new Ye("Read aborted"))},u?.signal?.addEventListener("abort",d)});try{if(a==null){let{done:w,value:p}=await Promise.race([n.next(),l]);return w===!0?new O:p}for(;o.byteLength<a;){let{value:w,done:p}=await Promise.race([n.next(),l]);if(p===!0)throw new Qt("unexpected end of input","ERR_UNEXPECTED_EOF");o.append(w)}let b=o.sublist(0,a);return o.consume(a),b}finally{d!=null&&u?.signal?.removeEventListener("abort",d)}},write:async(a,u)=>{u?.signal?.throwIfAborted(),a instanceof Uint8Array?await e.push(a,u):await e.push(a.subarray(),u)},unwrap:()=>{if(o.byteLength>0){let a=r.source;r.source=async function*(){t?.yieldBytes===!1?yield o:yield*o,yield*a}()}return r}}}function Jt(r){return r[Symbol.asyncIterator]!=null}var Kt=r=>{let t=F(r),e=N(t);return rt(r,e),Kt.bytes=t,e};Kt.bytes=0;function Nt(r,t){t=t??{};let e=t.lengthEncoder??Kt;function*n(o){let i=e(o.byteLength);i instanceof Uint8Array?yield i:yield*i,o instanceof Uint8Array?yield o:yield*o}return Jt(r)?async function*(){for await(let o of r)yield*n(o)}():function*(){for(let o of r)yield*n(o)}()}Nt.single=(r,t)=>{t=t??{};let e=t.lengthEncoder??Kt;return new O(e(r.byteLength),r)};var xt=he(xn(),1);var Wi=8,qi=1024*1024*4,at;(function(r){r[r.LENGTH=0]="LENGTH",r[r.DATA=1]="DATA"})(at||(at={}));var er=r=>{let t=j(r);return er.bytes=F(t),t};er.bytes=0;function tr(r,t){let e=new O,n=at.LENGTH,o=-1,i=t?.lengthDecoder??er,a=t?.maxLengthLength??Wi,u=t?.maxDataLength??qi;function*d(){for(;e.byteLength>0;){if(n===at.LENGTH)try{if(o=i(e),o<0)throw(0,xt.default)(new Error("invalid message length"),"ERR_INVALID_MSG_LENGTH");if(o>u)throw(0,xt.default)(new Error("message length too long"),"ERR_MSG_DATA_TOO_LONG");let l=i.bytes;e.consume(l),t?.onLength!=null&&t.onLength(o),n=at.DATA}catch(l){if(l instanceof RangeError){if(e.byteLength>a)throw(0,xt.default)(new Error("message length length too long"),"ERR_MSG_LENGTH_TOO_LONG");break}throw l}if(n===at.DATA){if(e.byteLength<o)break;let l=e.sublist(0,o);e.consume(o),t?.onData!=null&&t.onData(l),yield l,n=at.LENGTH}}}return Jt(r)?async function*(){for await(let l of r)e.append(l),yield*d();if(e.byteLength>0)throw(0,xt.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}():function*(){for(let l of r)e.append(l),yield*d();if(e.byteLength>0)throw(0,xt.default)(new Error("unexpected end of input"),"ERR_UNEXPECTED_EOF")}()}tr.fromReader=(r,t)=>{let e=1,n=async function*(){for(;;)try{let{done:i,value:a}=await r.next(e);if(i===!0)return;a!=null&&(yield a)}catch(i){if(i.code==="ERR_UNDER_READ")return{done:!0,value:null};throw i}finally{e=1}}();return tr(n,{...t??{},onLength:i=>{e=i}})};var Zt=class extends Error{code;constructor(t,e){super(t),this.code=e}},yn=r=>j(r);yn.bytes=0;function In(r,t={}){let e=gn(r,t);return t.maxDataLength!=null&&t.maxLengthLength==null&&(t.maxLengthLength=F(t.maxDataLength)),{read:async o=>{let i=-1,a=new O,u=t?.lengthDecoder??yn;for(;;){a.append(await e.read(1,o));try{i=u(a)}catch(d){if(d instanceof RangeError)continue;throw d}if(t?.maxLengthLength!=null&&a.byteLength>t.maxLengthLength)throw new Zt("message length length too long","ERR_MSG_LENGTH_TOO_LONG");if(i>-1)break}if(t?.maxDataLength!=null&&i>t.maxDataLength)throw new Zt("message length too long","ERR_MSG_DATA_TOO_LONG");return e.read(i,o)},write:async(o,i)=>{await e.write(Nt.single(o,t),i)},writeV:async(o,i)=>{let a=new O(...o.map(u=>Nt.single(u,t)));await e.write(a,i)},unwrap:()=>e.unwrap()}}function rr(r,t){let e=In(r,t),n={read:async(o,i)=>{let a=await e.read(i);return o.decode(a)},write:async(o,i,a)=>{await e.write(i.encode(o),a)},writeV:async(o,i,a)=>{await e.writeV(o.map(u=>i.encode(u)),a)},pb:o=>({read:async i=>n.read(o,i),write:async(i,a)=>n.write(i,o,a),writeV:async(i,a)=>n.writeV(i,o,a),unwrap:()=>n}),unwrap:()=>e.unwrap()};return n}var nr=new Float32Array([-0]),nt=new Uint8Array(nr.buffer);function An(r,t,e){nr[0]=r,t[e]=nt[0],t[e+1]=nt[1],t[e+2]=nt[2],t[e+3]=nt[3]}function vn(r,t){return nt[0]=r[t],nt[1]=r[t+1],nt[2]=r[t+2],nt[3]=r[t+3],nr[0]}var or=new Float64Array([-0]),R=new Uint8Array(or.buffer);function En(r,t,e){or[0]=r,t[e]=R[0],t[e+1]=R[1],t[e+2]=R[2],t[e+3]=R[3],t[e+4]=R[4],t[e+5]=R[5],t[e+6]=R[6],t[e+7]=R[7]}function Sn(r,t){return R[0]=r[t],R[1]=r[t+1],R[2]=r[t+2],R[3]=r[t+3],R[4]=r[t+4],R[5]=r[t+5],R[6]=r[t+6],R[7]=r[t+7],or[0]}var Hi=BigInt(Number.MAX_SAFE_INTEGER),Qi=BigInt(Number.MIN_SAFE_INTEGER),U=class r{lo;hi;constructor(t,e){this.lo=t|0,this.hi=e|0}toNumber(t=!1){if(!t&&this.hi>>>31>0){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(e+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(t=!1){if(t)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let e=~this.lo+1>>>0,n=~this.hi>>>0;return e===0&&(n=n+1>>>0),-(BigInt(e)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(t=!1){return this.toBigInt(t).toString()}zzEncode(){let t=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^t)>>>0,this.lo=(this.lo<<1^t)>>>0,this}zzDecode(){let t=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^t)>>>0,this.hi=(this.hi>>>1^t)>>>0,this}length(){let t=this.lo,e=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?e===0?t<16384?t<128?1:2:t<2097152?3:4:e<16384?e<128?5:6:e<2097152?7:8:n<128?9:10}static fromBigInt(t){if(t===0n)return ct;if(t<Hi&&t>Qi)return this.fromNumber(Number(t));let e=t<0n;e&&(t=-t);let n=t>>32n,o=t-(n<<32n);return e&&(n=~n|0n,o=~o|0n,++o>Ln&&(o=0n,++n>Ln&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(t){if(t===0)return ct;let e=t<0;e&&(t=-t);let n=t>>>0,o=(t-n)/4294967296>>>0;return e&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(t){return typeof t=="number"?r.fromNumber(t):typeof t=="bigint"?r.fromBigInt(t):typeof t=="string"?r.fromBigInt(BigInt(t)):t.low!=null||t.high!=null?new r(t.low>>>0,t.high>>>0):ct}},ct=new U(0,0);ct.toBigInt=function(){return 0n};ct.zzEncode=ct.zzDecode=function(){return this};ct.length=function(){return 1};var Ln=4294967296n;function Pn(r){let t=0,e=0;for(let n=0;n<r.length;++n)e=r.charCodeAt(n),e<128?t+=1:e<2048?t+=2:(e&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,t+=4):t+=3;return t}function Nn(r,t,e){if(e-t<1)return"";let o,i=[],a=0,u;for(;t<e;)u=r[t++],u<128?i[a++]=u:u>191&&u<224?i[a++]=(u&31)<<6|r[t++]&63:u>239&&u<365?(u=((u&7)<<18|(r[t++]&63)<<12|(r[t++]&63)<<6|r[t++]&63)-65536,i[a++]=55296+(u>>10),i[a++]=56320+(u&1023)):i[a++]=(u&15)<<12|(r[t++]&63)<<6|r[t++]&63,a>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,i)),a=0);return o!=null?(a>0&&o.push(String.fromCharCode.apply(String,i.slice(0,a))),o.join("")):String.fromCharCode.apply(String,i.slice(0,a))}function ir(r,t,e){let n=e,o,i;for(let a=0;a<r.length;++a)o=r.charCodeAt(a),o<128?t[e++]=o:o<2048?(t[e++]=o>>6|192,t[e++]=o&63|128):(o&64512)===55296&&((i=r.charCodeAt(a+1))&64512)===56320?(o=65536+((o&1023)<<10)+(i&1023),++a,t[e++]=o>>18|240,t[e++]=o>>12&63|128,t[e++]=o>>6&63|128,t[e++]=o&63|128):(t[e++]=o>>12|224,t[e++]=o>>6&63|128,t[e++]=o&63|128);return e-n}function G(r,t){return RangeError(`index out of range: ${r.pos} + ${t??1} > ${r.len}`)}function Yt(r,t){return(r[t-4]|r[t-3]<<8|r[t-2]<<16|r[t-1]<<24)>>>0}var sr=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(t){this.buf=t,this.pos=0,this.len=t.length}uint32(){let t=4294967295;if(t=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(t=(t|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(t=(t|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return t;if((this.pos+=5)>this.len)throw this.pos=this.len,G(this,10);return t}int32(){return this.uint32()|0}sint32(){let t=this.uint32();return t>>>1^-(t&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw G(this,4);return Yt(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw G(this,4);return Yt(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw G(this,4);let t=vn(this.buf,this.pos);return this.pos+=4,t}double(){if(this.pos+8>this.len)throw G(this,4);let t=Sn(this.buf,this.pos);return this.pos+=8,t}bytes(){let t=this.uint32(),e=this.pos,n=this.pos+t;if(n>this.len)throw G(this,t);return this.pos+=t,e===n?new Uint8Array(0):this.buf.subarray(e,n)}string(){let t=this.bytes();return Nn(t,0,t.length)}skip(t){if(typeof t=="number"){if(this.pos+t>this.len)throw G(this,t);this.pos+=t}else do if(this.pos>=this.len)throw G(this);while(this.buf[this.pos++]&128);return this}skipType(t){switch(t){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(t=this.uint32()&7)!==4;)this.skipType(t);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${t} at offset ${this.pos}`)}return this}readLongVarint(){let t=new U(0,0),e=0;if(this.len-this.pos>4){for(;e<4;++e)if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t;if(t.lo=(t.lo|(this.buf[this.pos]&127)<<28)>>>0,t.hi=(t.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return t;e=0}else{for(;e<3;++e){if(this.pos>=this.len)throw G(this);if(t.lo=(t.lo|(this.buf[this.pos]&127)<<e*7)>>>0,this.buf[this.pos++]<128)return t}return t.lo=(t.lo|(this.buf[this.pos++]&127)<<e*7)>>>0,t}if(this.len-this.pos>4){for(;e<5;++e)if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}else for(;e<5;++e){if(this.pos>=this.len)throw G(this);if(t.hi=(t.hi|(this.buf[this.pos]&127)<<e*7+3)>>>0,this.buf[this.pos++]<128)return t}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw G(this,8);let t=Yt(this.buf,this.pos+=4),e=Yt(this.buf,this.pos+=4);return new U(t,e)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){return this.readLongVarint().toNumber(!0)}uint64String(){return this.readLongVarint().toString(!0)}sint64(){return this.readLongVarint().zzDecode().toBigInt()}sint64Number(){return this.readLongVarint().zzDecode().toNumber()}sint64String(){return this.readLongVarint().zzDecode().toString()}fixed64(){return this.readFixed64().toBigInt()}fixed64Number(){return this.readFixed64().toNumber()}fixed64String(){return this.readFixed64().toString()}sfixed64(){return this.readFixed64().toBigInt()}sfixed64Number(){return this.readFixed64().toNumber()}sfixed64String(){return this.readFixed64().toString()}};function ar(r){return new sr(r instanceof Uint8Array?r:r.subarray())}function cr(r,t){let e=ar(r);return t.decode(e)}function ur(r){let t=r??8192,e=t>>>1,n,o=t;return function(a){if(a<1||a>e)return N(a);o+a>t&&(n=N(t),o=0);let u=n.subarray(o,o+=a);return o&7&&(o=(o|7)+1),u}}var ut=class{fn;len;next;val;constructor(t,e,n){this.fn=t,this.len=e,this.next=void 0,this.val=n}};function fr(){}var lr=class{head;tail;len;next;constructor(t){this.head=t.head,this.tail=t.tail,this.len=t.len,this.next=t.states}},Ji=ur();function Ki(r){return globalThis.Buffer!=null?N(r):Ji(r)}var Rt=class{len;head;tail;states;constructor(){this.len=0,this.head=new ut(fr,0,0),this.tail=this.head,this.states=null}_push(t,e,n){return this.tail=this.tail.next=new ut(t,e,n),this.len+=e,this}uint32(t){return this.len+=(this.tail=this.tail.next=new dr((t=t>>>0)<128?1:t<16384?2:t<2097152?3:t<268435456?4:5,t)).len,this}int32(t){return t<0?this._push(Dt,10,U.fromNumber(t)):this.uint32(t)}sint32(t){return this.uint32((t<<1^t>>31)>>>0)}uint64(t){let e=U.fromBigInt(t);return this._push(Dt,e.length(),e)}uint64Number(t){let e=U.fromNumber(t);return this._push(Dt,e.length(),e)}uint64String(t){return this.uint64(BigInt(t))}int64(t){return this.uint64(t)}int64Number(t){return this.uint64Number(t)}int64String(t){return this.uint64String(t)}sint64(t){let e=U.fromBigInt(t).zzEncode();return this._push(Dt,e.length(),e)}sint64Number(t){let e=U.fromNumber(t).zzEncode();return this._push(Dt,e.length(),e)}sint64String(t){return this.sint64(BigInt(t))}bool(t){return this._push(hr,1,t?1:0)}fixed32(t){return this._push(Ft,4,t>>>0)}sfixed32(t){return this.fixed32(t)}fixed64(t){let e=U.fromBigInt(t);return this._push(Ft,4,e.lo)._push(Ft,4,e.hi)}fixed64Number(t){let e=U.fromNumber(t);return this._push(Ft,4,e.lo)._push(Ft,4,e.hi)}fixed64String(t){return this.fixed64(BigInt(t))}sfixed64(t){return this.fixed64(t)}sfixed64Number(t){return this.fixed64Number(t)}sfixed64String(t){return this.fixed64String(t)}float(t){return this._push(An,4,t)}double(t){return this._push(En,8,t)}bytes(t){let e=t.length>>>0;return e===0?this._push(hr,1,0):this.uint32(e)._push(Yi,e,t)}string(t){let e=Pn(t);return e!==0?this.uint32(e)._push(ir,e,t):this._push(hr,1,0)}fork(){return this.states=new lr(this),this.head=this.tail=new ut(fr,0,0),this.len=0,this}reset(){return this.states!=null?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new ut(fr,0,0),this.len=0),this}ldelim(){let t=this.head,e=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=t.next,this.tail=e,this.len+=n),this}finish(){let t=this.head.next,e=Ki(this.len),n=0;for(;t!=null;)t.fn(t.val,e,n),n+=t.len,t=t.next;return e}};function hr(r,t,e){t[e]=r&255}function Zi(r,t,e){for(;r>127;)t[e++]=r&127|128,r>>>=7;t[e]=r}var dr=class extends ut{next;constructor(t,e){super(Zi,t,e),this.next=void 0}};function Dt(r,t,e){for(;r.hi!==0;)t[e++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)t[e++]=r.lo&127|128,r.lo=r.lo>>>7;t[e++]=r.lo}function Ft(r,t,e){t[e]=r&255,t[e+1]=r>>>8&255,t[e+2]=r>>>16&255,t[e+3]=r>>>24}function Yi(r,t,e){t.set(r,e)}globalThis.Buffer!=null&&(Rt.prototype.bytes=function(r){let t=r.length>>>0;return this.uint32(t),t>0&&this._push(ts,t,r),this},Rt.prototype.string=function(r){let t=globalThis.Buffer.byteLength(r);return this.uint32(t),t>0&&this._push(es,t,r),this});function ts(r,t,e){t.set(r,e)}function es(r,t,e){r.length<40?ir(r,t,e):t.utf8Write!=null?t.utf8Write(r,e):t.set(Pt(r),e)}function pr(){return new Rt}function mr(r,t){let e=pr();return t.encode(r,e,{lengthDelimited:!1}),e.finish()}var yt;(function(r){r[r.VARINT=0]="VARINT",r[r.BIT64=1]="BIT64",r[r.LENGTH_DELIMITED=2]="LENGTH_DELIMITED",r[r.START_GROUP=3]="START_GROUP",r[r.END_GROUP=4]="END_GROUP",r[r.BIT32=5]="BIT32"})(yt||(yt={}));function te(r,t,e,n){return{name:r,type:t,encode:e,decode:n}}function gr(r){function t(o){if(r[o.toString()]==null)throw new Error("Invalid enum value");return r[o]}let e=function(i,a){let u=t(i);a.int32(u)},n=function(i){let a=i.int32();return t(a)};return te("enum",yt.VARINT,e,n)}function wr(r,t){return te("message",yt.LENGTH_DELIMITED,r,t)}var W;(function(r){let t;(function(o){o.UNUSED="UNUSED",o.CONNECT="CONNECT",o.SYNC="SYNC"})(t=r.Type||(r.Type={}));let e;(function(o){o[o.UNUSED=0]="UNUSED",o[o.CONNECT=100]="CONNECT",o[o.SYNC=300]="SYNC"})(e||(e={})),function(o){o.codec=()=>gr(e)}(t=r.Type||(r.Type={}));let n;r.codec=()=>(n==null&&(n=wr((o,i,a={})=>{if(a.lengthDelimited!==!1&&i.fork(),o.type!=null&&(i.uint32(8),r.Type.codec().encode(o.type,i)),o.observedAddresses!=null)for(let u of o.observedAddresses)i.uint32(18),i.bytes(u);a.lengthDelimited!==!1&&i.ldelim()},(o,i)=>{let a={observedAddresses:[]},u=i==null?o.len:o.pos+i;for(;o.pos<u;){let d=o.uint32();switch(d>>>3){case 1:a.type=r.Type.codec().decode(o);break;case 2:a.observedAddresses.push(o.bytes());break;default:o.skipType(d&7);break}}return a})),n),r.encode=o=>mr(o,r.codec()),r.decode=o=>cr(o,r.codec())})(W||(W={}));var rs=r=>r.toString().split("/").slice(1),Tt=r=>({match:t=>t.length<1?!1:r(t[0])?t.slice(1):!1,pattern:"fn"}),v=r=>({match:t=>Tt(e=>e===r).match(t),pattern:r}),ne=()=>({match:r=>Tt(t=>typeof t=="string").match(r),pattern:"{string}"}),Fn=()=>({match:r=>Tt(t=>!isNaN(parseInt(t))).match(r),pattern:"{number}"}),_=()=>({match:r=>{if(r.length<2||r[0]!=="p2p"&&r[0]!=="ipfs")return!1;if(r[1].startsWith("Q")||r[1].startsWith("1"))try{P.decode(`z${r[1]}`)}catch{return!1}else return!1;return r.slice(2)},pattern:"/p2p/{peerid}"}),ee=()=>({match:r=>{if(r.length<2||r[0]!=="certhash")return!1;try{Le.decode(r[1])}catch{return!1}return r.slice(2)},pattern:"/certhash/{certhash}"}),X=r=>({match:t=>{let e=r.match(t);return e===!1?t:e},pattern:`optional(${r.pattern})`}),H=(...r)=>({match:t=>{let e;for(let n of r){let o=n.match(t);o!==!1&&(e==null||o.length<e.length)&&(e=o)}return e??!1},pattern:`or(${r.map(t=>t.pattern).join(", ")})`}),E=(...r)=>({match:t=>{for(let e of r){let n=e.match(t);if(n===!1)return!1;t=n}return t},pattern:`and(${r.map(t=>t.pattern).join(", ")})`});function L(...r){function t(o){let i=rs(o);for(let a of r){let u=a.match(i);if(u===!1)return!1;i=u}return i}function e(o){return t(o)!==!1}function n(o){let i=t(o);return i===!1?!1:i.length===0}return{matches:e,exactMatch:n}}var xr=E(v("dns4"),ne()),yr=E(v("dns6"),ne()),Ir=E(v("dnsaddr"),ne()),Rn=E(v("dns"),ne()),Mf=L(xr),Bf=L(yr),Of=L(Ir),Tn=L(H(Rn,Ir,xr,yr)),Cn=E(v("ip4"),Tt(Gt)),Un=E(v("ip6"),Tt(Wt)),$n=H(Cn,Un),Ct=H($n,Rn,xr,yr,Ir),_f=L(Ct),Vf=L(Cn),zf=L(Un),kn=L($n),oe=E(Ct,v("tcp"),Fn()),Ut=E(Ct,v("udp"),Fn()),ns=H(oe,Ut),jf=L(oe),Gf=L(Ut),Ar=E(Ut,v("quic")),ie=E(Ut,v("quic-v1")),os=H(Ar,ie),Wf=L(Ar),qf=L(ie),br=H(Ct,oe,Ut,Ar,ie),Mn=H(E(br,v("ws"),X(_()))),Xf=L(Mn),Bn=H(E(br,v("wss"),X(_())),E(br,v("tls"),v("ws"),X(_()))),Hf=L(Bn),On=E(ns,v("webrtc-direct"),ee(),X(ee()),X(_())),Qf=L(On),_n=E(ie,v("webtransport"),ee(),ee(),X(_())),Jf=L(_n),re=H(Mn,Bn,E(oe,X(_())),E(os,X(_())),E(Ct,X(_())),On,_n,_()),Kf=L(re),is=E(re,v("p2p-circuit"),_()),Vn=L(is),ss=H(E(re,v("p2p-circuit"),v("webrtc"),_()),E(re,v("webrtc"),X(_())),v("webrtc")),Zf=L(ss);var Hn=he(zn(),1);var jn="[a-fA-F\\d:]",ot=r=>r&&r.includeBoundaries?`(?:(?<=\\s|^)(?=${jn})|(?<=${jn})(?=\\s|$))`:"",q="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",S="[a-fA-F\\d]{1,4}",se=`
|
|
3
3
|
(?:
|
|
4
4
|
(?:${S}:){7}(?:${S}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
|
|
5
|
-
(?:${S}:){6}(?:${
|
|
6
|
-
(?:${S}:){5}(?::${
|
|
7
|
-
(?:${S}:){4}(?:(?::${S}){0,1}:${
|
|
8
|
-
(?:${S}:){3}(?:(?::${S}){0,2}:${
|
|
9
|
-
(?:${S}:){2}(?:(?::${S}){0,3}:${
|
|
10
|
-
(?:${S}:){1}(?:(?::${S}){0,4}:${
|
|
11
|
-
(?::(?:(?::${S}){0,5}:${
|
|
5
|
+
(?:${S}:){6}(?:${q}|:${S}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
|
|
6
|
+
(?:${S}:){5}(?::${q}|(?::${S}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
|
|
7
|
+
(?:${S}:){4}(?:(?::${S}){0,1}:${q}|(?::${S}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
|
|
8
|
+
(?:${S}:){3}(?:(?::${S}){0,2}:${q}|(?::${S}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
|
|
9
|
+
(?:${S}:){2}(?:(?::${S}){0,3}:${q}|(?::${S}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
|
|
10
|
+
(?:${S}:){1}(?:(?::${S}){0,4}:${q}|(?::${S}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
|
|
11
|
+
(?::(?:(?::${S}){0,5}:${q}|(?::${S}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
|
|
12
12
|
)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
|
|
13
|
-
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),
|
|
13
|
+
`.replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),as=new RegExp(`(?:^${q}$)|(?:^${se}$)`),cs=new RegExp(`^${q}$`),us=new RegExp(`^${se}$`),vr=r=>r&&r.exact?as:new RegExp(`(?:${ot(r)}${q}${ot(r)})|(?:${ot(r)}${se}${ot(r)})`,"g");vr.v4=r=>r&&r.exact?cs:new RegExp(`${ot(r)}${q}${ot(r)}`,"g");vr.v6=r=>r&&r.exact?us:new RegExp(`${ot(r)}${se}${ot(r)}`,"g");var Gn=vr;var Qn=he(qn(),1),{isValid:fs,parse:hs}=Qn.default,ls=["0.0.0.0/8","10.0.0.0/8","100.64.0.0/10","127.0.0.0/8","169.254.0.0/16","172.16.0.0/12","192.0.0.0/24","192.0.0.0/29","192.0.0.8/32","192.0.0.9/32","192.0.0.10/32","192.0.0.170/32","192.0.0.171/32","192.0.2.0/24","192.31.196.0/24","192.52.193.0/24","192.88.99.0/24","192.168.0.0/16","192.175.48.0/24","198.18.0.0/15","198.51.100.0/24","203.0.113.0/24","240.0.0.0/4","255.255.255.255/32"],ds=ls.map(r=>new Hn.Netmask(r));function ps(r){for(let t of ds)if(t.contains(r))return!0;return!1}function Xn(r){return/^::$/.test(r)||/^::1$/.test(r)||/^::f{4}:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^::f{4}:0.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^64:ff9b::([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)||/^100::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001::([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:2[0-9a-fA-F]:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2001:db8:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^2002:([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4}):?([0-9a-fA-F]{0,4})$/.test(r)||/^f[c-d]([0-9a-fA-F]{2,2}):/i.test(r)||/^fe[8-9a-bA-B][0-9a-fA-F]:/i.test(r)||/^ff([0-9a-fA-F]{2,2}):/i.test(r)}var Jn=r=>{if(fs(r)){let t=hs(r);if(t.kind()==="ipv4")return ps(t.toNormalizedString());if(t.kind()==="ipv6")return Xn(r)}else if(gt(r)&&Gn.v6().test(r))return Xn(r)};var Kn=Jn;function Er(r,t){return Vn.matches(r)||t.transportForMultiaddr(r)==null?!1:Tn.matches(r)?!0:kn.matches(r)?Kn(r.toOptions().host)===!1:!1}var Zn=1024*4,Yn=100,ce={timeout:5e3,retries:3,maxInboundStreams:1,maxOutboundStreams:1},ue=class{started;timeout;retries;maxInboundStreams;maxOutboundStreams;peerStore;registrar;connectionManager;addressManager;transportManager;topologyId;log;constructor(t,e){this.log=t.logger.forComponent("libp2p:dcutr"),this.started=!1,this.peerStore=t.peerStore,this.registrar=t.registrar,this.addressManager=t.addressManager,this.connectionManager=t.connectionManager,this.transportManager=t.transportManager,this.timeout=e.timeout??ce.timeout,this.retries=e.retries??ce.retries,this.maxInboundStreams=e.maxInboundStreams??ce.maxInboundStreams,this.maxOutboundStreams=e.maxOutboundStreams??ce.maxOutboundStreams}isStarted(){return this.started}async start(){this.started||(this.topologyId=await this.registrar.register(It,{notifyOnTransient:!0,onConnect:(t,e)=>{e.transient&&e.direction==="inbound"&&this.upgradeInbound(e).catch(n=>{this.log.error("error during outgoing DCUtR attempt",n)})}}),await this.registrar.handle(It,t=>{this.handleIncomingUpgrade(t.stream,t.connection).catch(e=>{this.log.error("error during incoming DCUtR attempt",e),t.stream.abort(e)})},{maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams,runOnTransientConnection:!0}),this.started=!0)}async stop(){await this.registrar.unhandle(It),this.topologyId!=null&&this.registrar.unregister(this.topologyId),this.started=!1}async upgradeInbound(t){if(await this.attemptUnilateralConnectionUpgrade(t))return;let e;for(let n=0;n<this.retries;n++){let o={signal:AbortSignal.timeout(this.timeout)};try{e=await t.newStream([It],{signal:o.signal,runOnTransientConnection:!0});let i=rr(e,{maxDataLength:Zn}).pb(W);this.log("B sending connect to %p",t.remotePeer);let a=Date.now();await i.write({type:W.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(w=>w.bytes)},o),this.log("B receiving connect from %p",t.remotePeer);let u=await i.read(o);if(u.type!==W.Type.CONNECT)throw this.log("A sent wrong message type"),new z("DCUtR message type was incorrect",it);let d=this.getDialableMultiaddrs(u.observedAddresses);if(d.length===0)throw this.log("A did not have any dialable multiaddrs"),new z("DCUtR connect message had no multiaddrs",it);let l=Date.now()-a;this.log("A sending sync, rtt %dms",l),await i.write({type:W.Type.SYNC,observedAddresses:[]},o),this.log("A waiting for half RTT"),await hn(l/2),this.log("B dialing",d);let b=await this.connectionManager.openConnection(d,{signal:o.signal,priority:Yn});this.log("DCUtR to %p succeeded to address %a, closing relayed connection",t.remotePeer,b.remoteAddr),await t.close(o);break}catch(i){if(this.log.error("error while attempting DCUtR on attempt %d of %d",n+1,this.retries,i),e?.abort(i),n===this.retries)throw i}finally{e!=null&&await e.close(o)}}}async attemptUnilateralConnectionUpgrade(t){let n=(await this.peerStore.get(t.remotePeer)).addresses.map(o=>{let i=o.multiaddr;return i.getPeerId()==null?i.encapsulate(`/p2p/${t.remotePeer}`):i}).filter(o=>Er(o,this.transportManager));if(n.length>0){let o=AbortSignal.timeout(this.timeout);try{this.log("attempting unilateral connection upgrade to %a",n);let i=await this.connectionManager.openConnection(n,{signal:o,force:!0});if(i.transient)throw new Error("Could not open a new, non-transient, connection");return this.log("unilateral connection upgrade to %p succeeded via %a, closing relayed connection",t.remotePeer,i.remoteAddr),await t.close({signal:o}),!0}catch(i){this.log.error("unilateral connection upgrade to %p on addresses %a failed",t.remotePeer,n,i)}}else this.log("peer %p has no public addresses, not attempting unilateral connection upgrade",t.remotePeer);return!1}async handleIncomingUpgrade(t,e){let n={signal:AbortSignal.timeout(this.timeout)};try{let o=rr(t,{maxDataLength:Zn}).pb(W);this.log("A receiving connect");let i=await o.read(n);if(i.type!==W.Type.CONNECT)throw this.log("B sent wrong message type"),new z("DCUtR message type was incorrect",it);if(i.observedAddresses.length===0)throw this.log("B sent no multiaddrs"),new z("DCUtR connect message had no multiaddrs",it);let a=this.getDialableMultiaddrs(i.observedAddresses);if(a.length===0)throw this.log("B had no dialable multiaddrs"),new z("DCUtR connect message had no dialable multiaddrs",it);if(this.log("A sending connect"),await o.write({type:W.Type.CONNECT,observedAddresses:this.addressManager.getAddresses().map(l=>l.bytes)}),this.log("A receiving sync"),(await o.read(n)).type!==W.Type.SYNC)throw new z("DCUtR message type was incorrect",it);this.log("A dialing",a);let d=await this.connectionManager.openConnection(a,{signal:n.signal,priority:Yn,force:!0});this.log("DCUtR to %p succeeded via %a, closing relayed connection",e.remotePeer,d.remoteAddr),await e.close(n)}catch(o){this.log.error("incoming DCUtR from %p failed",e.remotePeer,o),t.abort(o)}finally{await t.close(n)}}getDialableMultiaddrs(t){let e=[];for(let n of t)if(!(n==null||n.length===0))try{let o=Ke(n);if(!Er(o,this.transportManager))continue;e.push(o)}catch{}return e}};var It="/libp2p/dcutr";function ms(r={}){return t=>new ue(t,r)}return io(gs);})();
|
|
14
14
|
return Libp2PDcutr}));
|
package/dist/src/dcutr.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { type Multiaddr } from '@multiformats/multiaddr';
|
|
2
2
|
import type { DCUtRServiceComponents, DCUtRServiceInit } from './index.js';
|
|
3
|
-
import type { Connection, Stream } from '@libp2p/interface
|
|
4
|
-
import type { Startable } from '@libp2p/interface/startable';
|
|
3
|
+
import type { Connection, Stream, Startable } from '@libp2p/interface';
|
|
5
4
|
export declare class DefaultDCUtRService implements Startable {
|
|
6
5
|
private started;
|
|
7
6
|
private readonly timeout;
|
|
@@ -14,6 +13,7 @@ export declare class DefaultDCUtRService implements Startable {
|
|
|
14
13
|
private readonly addressManager;
|
|
15
14
|
private readonly transportManager;
|
|
16
15
|
private topologyId?;
|
|
16
|
+
private readonly log;
|
|
17
17
|
constructor(components: DCUtRServiceComponents, init: DCUtRServiceInit);
|
|
18
18
|
isStarted(): boolean;
|
|
19
19
|
start(): Promise<void>;
|
package/dist/src/dcutr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dcutr.d.ts","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dcutr.d.ts","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAa,MAAM,yBAAyB,CAAA;AAMnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC1E,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,EAAa,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAiBzF,qBAAa,mBAAoB,YAAW,SAAS;IACnD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,UAAU,CAAC,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;gBAEf,UAAU,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB;IAevE,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAyCvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAU5B;;;;OAIG;IACG,cAAc,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkGnE;;;OAGG;IACG,kCAAkC,CAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA0D1F;;;;OAIG;IACG,qBAAqB,CAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmE1F;;OAEG;IACH,qBAAqB,CAAE,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,EAAE;CAqB1F"}
|
package/dist/src/dcutr.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { CodeError, ERR_INVALID_MESSAGE } from '@libp2p/interface
|
|
2
|
-
import { logger } from '@libp2p/logger';
|
|
1
|
+
import { CodeError, ERR_INVALID_MESSAGE } from '@libp2p/interface';
|
|
3
2
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
4
3
|
import delay from 'delay';
|
|
5
4
|
import { pbStream } from 'it-protobuf-stream';
|
|
6
5
|
import { HolePunch } from './pb/message.js';
|
|
7
6
|
import { isPublicAndDialable } from './utils.js';
|
|
8
7
|
import { multicodec } from './index.js';
|
|
9
|
-
const log = logger('libp2p:dcutr');
|
|
10
8
|
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#rpc-messages
|
|
11
9
|
const MAX_DCUTR_MESSAGE_SIZE = 1024 * 4;
|
|
12
10
|
// ensure the dial has a high priority to jump to the head of the dial queue
|
|
@@ -31,7 +29,9 @@ export class DefaultDCUtRService {
|
|
|
31
29
|
addressManager;
|
|
32
30
|
transportManager;
|
|
33
31
|
topologyId;
|
|
32
|
+
log;
|
|
34
33
|
constructor(components, init) {
|
|
34
|
+
this.log = components.logger.forComponent('libp2p:dcutr');
|
|
35
35
|
this.started = false;
|
|
36
36
|
this.peerStore = components.peerStore;
|
|
37
37
|
this.registrar = components.registrar;
|
|
@@ -65,13 +65,13 @@ export class DefaultDCUtRService {
|
|
|
65
65
|
}
|
|
66
66
|
this.upgradeInbound(connection)
|
|
67
67
|
.catch(err => {
|
|
68
|
-
log.error('error during outgoing DCUtR attempt', err);
|
|
68
|
+
this.log.error('error during outgoing DCUtR attempt', err);
|
|
69
69
|
});
|
|
70
70
|
}
|
|
71
71
|
});
|
|
72
72
|
await this.registrar.handle(multicodec, (data) => {
|
|
73
73
|
void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {
|
|
74
|
-
log.error('error during incoming DCUtR attempt', err);
|
|
74
|
+
this.log.error('error during incoming DCUtR attempt', err);
|
|
75
75
|
data.stream.abort(err);
|
|
76
76
|
});
|
|
77
77
|
}, {
|
|
@@ -120,49 +120,49 @@ export class DefaultDCUtRService {
|
|
|
120
120
|
// 2. B sends to A a Connect message containing its observed (and
|
|
121
121
|
// possibly predicted) addresses from identify and starts a timer
|
|
122
122
|
// to measure RTT of the relay connection.
|
|
123
|
-
log('B sending connect to %p', relayedConnection.remotePeer);
|
|
123
|
+
this.log('B sending connect to %p', relayedConnection.remotePeer);
|
|
124
124
|
const connectTimer = Date.now();
|
|
125
125
|
await pb.write({
|
|
126
126
|
type: HolePunch.Type.CONNECT,
|
|
127
127
|
observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
|
|
128
128
|
}, options);
|
|
129
|
-
log('B receiving connect from %p', relayedConnection.remotePeer);
|
|
129
|
+
this.log('B receiving connect from %p', relayedConnection.remotePeer);
|
|
130
130
|
// 4. Upon receiving the Connect, B sends a Sync message
|
|
131
131
|
const connect = await pb.read(options);
|
|
132
132
|
if (connect.type !== HolePunch.Type.CONNECT) {
|
|
133
|
-
log('A sent wrong message type');
|
|
133
|
+
this.log('A sent wrong message type');
|
|
134
134
|
throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);
|
|
135
135
|
}
|
|
136
136
|
const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);
|
|
137
137
|
if (multiaddrs.length === 0) {
|
|
138
|
-
log('A did not have any dialable multiaddrs');
|
|
138
|
+
this.log('A did not have any dialable multiaddrs');
|
|
139
139
|
throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE);
|
|
140
140
|
}
|
|
141
141
|
const rtt = Date.now() - connectTimer;
|
|
142
|
-
log('A sending sync, rtt %dms', rtt);
|
|
142
|
+
this.log('A sending sync, rtt %dms', rtt);
|
|
143
143
|
await pb.write({
|
|
144
144
|
type: HolePunch.Type.SYNC,
|
|
145
145
|
observedAddresses: []
|
|
146
146
|
}, options);
|
|
147
|
-
log('A waiting for half RTT');
|
|
147
|
+
this.log('A waiting for half RTT');
|
|
148
148
|
// ..and starts a timer for half the RTT measured from the time between
|
|
149
149
|
// sending the initial Connect and receiving the response
|
|
150
150
|
await delay(rtt / 2);
|
|
151
151
|
// TODO: when we have a QUIC transport, the dial step is different - for
|
|
152
152
|
// now we only have tcp support
|
|
153
153
|
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
|
|
154
|
-
log('B dialing', multiaddrs);
|
|
154
|
+
this.log('B dialing', multiaddrs);
|
|
155
155
|
// Upon expiry of the timer, B dials the address to A.
|
|
156
156
|
const conn = await this.connectionManager.openConnection(multiaddrs, {
|
|
157
157
|
signal: options.signal,
|
|
158
158
|
priority: DCUTR_DIAL_PRIORITY
|
|
159
159
|
});
|
|
160
|
-
log('DCUtR to %p succeeded to address %a, closing relayed connection', relayedConnection.remotePeer, conn.remoteAddr);
|
|
160
|
+
this.log('DCUtR to %p succeeded to address %a, closing relayed connection', relayedConnection.remotePeer, conn.remoteAddr);
|
|
161
161
|
await relayedConnection.close(options);
|
|
162
162
|
break;
|
|
163
163
|
}
|
|
164
164
|
catch (err) {
|
|
165
|
-
log.error('error while attempting DCUtR on attempt %d of %d', i + 1, this.retries, err);
|
|
165
|
+
this.log.error('error while attempting DCUtR on attempt %d of %d', i + 1, this.retries, err);
|
|
166
166
|
stream?.abort(err);
|
|
167
167
|
if (i === this.retries) {
|
|
168
168
|
throw err;
|
|
@@ -201,7 +201,7 @@ export class DefaultDCUtRService {
|
|
|
201
201
|
if (publicAddresses.length > 0) {
|
|
202
202
|
const signal = AbortSignal.timeout(this.timeout);
|
|
203
203
|
try {
|
|
204
|
-
log('attempting unilateral connection upgrade to %a', publicAddresses);
|
|
204
|
+
this.log('attempting unilateral connection upgrade to %a', publicAddresses);
|
|
205
205
|
// force-dial the multiaddr(s), otherwise `connectionManager.openConnection`
|
|
206
206
|
// will return the existing relayed connection
|
|
207
207
|
const connection = await this.connectionManager.openConnection(publicAddresses, {
|
|
@@ -211,18 +211,18 @@ export class DefaultDCUtRService {
|
|
|
211
211
|
if (connection.transient) {
|
|
212
212
|
throw new Error('Could not open a new, non-transient, connection');
|
|
213
213
|
}
|
|
214
|
-
log('unilateral connection upgrade to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
|
|
214
|
+
this.log('unilateral connection upgrade to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
|
|
215
215
|
await relayedConnection.close({
|
|
216
216
|
signal
|
|
217
217
|
});
|
|
218
218
|
return true;
|
|
219
219
|
}
|
|
220
220
|
catch (err) {
|
|
221
|
-
log.error('unilateral connection upgrade to %p on addresses %a failed', relayedConnection.remotePeer, publicAddresses, err);
|
|
221
|
+
this.log.error('unilateral connection upgrade to %p on addresses %a failed', relayedConnection.remotePeer, publicAddresses, err);
|
|
222
222
|
}
|
|
223
223
|
}
|
|
224
224
|
else {
|
|
225
|
-
log('peer %p has no public addresses, not attempting unilateral connection upgrade', relayedConnection.remotePeer);
|
|
225
|
+
this.log('peer %p has no public addresses, not attempting unilateral connection upgrade', relayedConnection.remotePeer);
|
|
226
226
|
}
|
|
227
227
|
// no public addresses or failed to dial public addresses
|
|
228
228
|
return false;
|
|
@@ -240,29 +240,29 @@ export class DefaultDCUtRService {
|
|
|
240
240
|
const pb = pbStream(stream, {
|
|
241
241
|
maxDataLength: MAX_DCUTR_MESSAGE_SIZE
|
|
242
242
|
}).pb(HolePunch);
|
|
243
|
-
log('A receiving connect');
|
|
243
|
+
this.log('A receiving connect');
|
|
244
244
|
// 3. Upon receiving the Connect, A responds back with a Connect message
|
|
245
245
|
// containing its observed (and possibly predicted) addresses.
|
|
246
246
|
const connect = await pb.read(options);
|
|
247
247
|
if (connect.type !== HolePunch.Type.CONNECT) {
|
|
248
|
-
log('B sent wrong message type');
|
|
248
|
+
this.log('B sent wrong message type');
|
|
249
249
|
throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);
|
|
250
250
|
}
|
|
251
251
|
if (connect.observedAddresses.length === 0) {
|
|
252
|
-
log('B sent no multiaddrs');
|
|
252
|
+
this.log('B sent no multiaddrs');
|
|
253
253
|
throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE);
|
|
254
254
|
}
|
|
255
255
|
const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses);
|
|
256
256
|
if (multiaddrs.length === 0) {
|
|
257
|
-
log('B had no dialable multiaddrs');
|
|
257
|
+
this.log('B had no dialable multiaddrs');
|
|
258
258
|
throw new CodeError('DCUtR connect message had no dialable multiaddrs', ERR_INVALID_MESSAGE);
|
|
259
259
|
}
|
|
260
|
-
log('A sending connect');
|
|
260
|
+
this.log('A sending connect');
|
|
261
261
|
await pb.write({
|
|
262
262
|
type: HolePunch.Type.CONNECT,
|
|
263
263
|
observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
|
|
264
264
|
});
|
|
265
|
-
log('A receiving sync');
|
|
265
|
+
this.log('A receiving sync');
|
|
266
266
|
const sync = await pb.read(options);
|
|
267
267
|
if (sync.type !== HolePunch.Type.SYNC) {
|
|
268
268
|
throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE);
|
|
@@ -271,17 +271,17 @@ export class DefaultDCUtRService {
|
|
|
271
271
|
// now we only have tcp support
|
|
272
272
|
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
|
|
273
273
|
// Upon receiving the Sync, A immediately dials the address to B
|
|
274
|
-
log('A dialing', multiaddrs);
|
|
274
|
+
this.log('A dialing', multiaddrs);
|
|
275
275
|
const connection = await this.connectionManager.openConnection(multiaddrs, {
|
|
276
276
|
signal: options.signal,
|
|
277
277
|
priority: DCUTR_DIAL_PRIORITY,
|
|
278
278
|
force: true
|
|
279
279
|
});
|
|
280
|
-
log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
|
|
280
|
+
this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr);
|
|
281
281
|
await relayedConnection.close(options);
|
|
282
282
|
}
|
|
283
283
|
catch (err) {
|
|
284
|
-
log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err);
|
|
284
|
+
this.log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err);
|
|
285
285
|
stream.abort(err);
|
|
286
286
|
}
|
|
287
287
|
finally {
|
package/dist/src/dcutr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dcutr.js","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"dcutr.js","sourceRoot":"","sources":["../../src/dcutr.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* import { circuitRelayTransport } from 'libp2p/circuit-relay'
|
|
17
17
|
* import { tcp } from '@libp2p/tcp'
|
|
18
18
|
* import { identify } from '@libp2p/identify'
|
|
19
|
-
* import {
|
|
19
|
+
* import { dcutr } from '@libp2p/dcutr'
|
|
20
20
|
*
|
|
21
21
|
* const node = await createLibp2p({
|
|
22
22
|
* transports: [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* ],
|
|
26
26
|
* services: {
|
|
27
27
|
* identify: identify(),
|
|
28
|
-
* dcutr:
|
|
28
|
+
* dcutr: dcutr()
|
|
29
29
|
* }
|
|
30
30
|
* })
|
|
31
31
|
*
|
|
@@ -52,11 +52,8 @@
|
|
|
52
52
|
* }
|
|
53
53
|
* ```
|
|
54
54
|
*/
|
|
55
|
-
import type { PeerStore } from '@libp2p/interface
|
|
56
|
-
import type { AddressManager } from '@libp2p/interface-internal
|
|
57
|
-
import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager';
|
|
58
|
-
import type { Registrar } from '@libp2p/interface-internal/registrar';
|
|
59
|
-
import type { TransportManager } from '@libp2p/interface-internal/transport-manager';
|
|
55
|
+
import type { ComponentLogger, PeerStore } from '@libp2p/interface';
|
|
56
|
+
import type { AddressManager, ConnectionManager, Registrar, TransportManager } from '@libp2p/interface-internal';
|
|
60
57
|
export interface DCUtRServiceInit {
|
|
61
58
|
/**
|
|
62
59
|
* How long we should wait for the connection upgrade to complete (default: 5s)
|
|
@@ -83,10 +80,11 @@ export interface DCUtRServiceComponents {
|
|
|
83
80
|
registrar: Registrar;
|
|
84
81
|
addressManager: AddressManager;
|
|
85
82
|
transportManager: TransportManager;
|
|
83
|
+
logger: ComponentLogger;
|
|
86
84
|
}
|
|
87
85
|
/**
|
|
88
86
|
* The DCUtR protocol
|
|
89
87
|
*/
|
|
90
88
|
export declare const multicodec = "/libp2p/dcutr";
|
|
91
|
-
export declare function
|
|
89
|
+
export declare function dcutr(init?: DCUtRServiceInit): (components: DCUtRServiceComponents) => unknown;
|
|
92
90
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAEhH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAE1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,SAAS,EAAE,SAAS,CAAA;IACpB,cAAc,EAAE,cAAc,CAAA;IAC9B,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,kBAAkB,CAAA;AAEzC,wBAAgB,KAAK,CAAE,IAAI,GAAE,gBAAqB,GAAG,CAAC,UAAU,EAAE,sBAAsB,KAAK,OAAO,CAEnG"}
|
package/dist/src/index.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* import { circuitRelayTransport } from 'libp2p/circuit-relay'
|
|
17
17
|
* import { tcp } from '@libp2p/tcp'
|
|
18
18
|
* import { identify } from '@libp2p/identify'
|
|
19
|
-
* import {
|
|
19
|
+
* import { dcutr } from '@libp2p/dcutr'
|
|
20
20
|
*
|
|
21
21
|
* const node = await createLibp2p({
|
|
22
22
|
* transports: [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* ],
|
|
26
26
|
* services: {
|
|
27
27
|
* identify: identify(),
|
|
28
|
-
* dcutr:
|
|
28
|
+
* dcutr: dcutr()
|
|
29
29
|
* }
|
|
30
30
|
* })
|
|
31
31
|
*
|
|
@@ -57,7 +57,7 @@ import { DefaultDCUtRService } from './dcutr.js';
|
|
|
57
57
|
* The DCUtR protocol
|
|
58
58
|
*/
|
|
59
59
|
export const multicodec = '/libp2p/dcutr';
|
|
60
|
-
export function
|
|
60
|
+
export function dcutr(init = {}) {
|
|
61
61
|
return (components) => new DefaultDCUtRService(components, init);
|
|
62
62
|
}
|
|
63
63
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAqChD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAA;AAEzC,MAAM,UAAU,KAAK,CAAE,OAAyB,EAAE;IAChD,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AAClE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/pb/message.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,+BAA+B;AAC/B,oDAAoD;AACpD,8EAA8E;AAC9E,0DAA0D;AAE1D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AASpF,MAAM,KAAW,SAAS,CAgFzB;AAhFD,WAAiB,SAAS;IACxB,IAAY,IAIX;IAJD,WAAY,IAAI;QACd,yBAAiB,CAAA;QACjB,2BAAmB,CAAA;QACnB,qBAAa,CAAA;IACf,CAAC,EAJW,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAIf;IAED,IAAK,YAIJ;IAJD,WAAK,YAAY;QACf,mDAAU,CAAA;QACV,uDAAa,CAAA;QACb,iDAAU,CAAA;IACZ,CAAC,EAJI,YAAY,KAAZ,YAAY,QAIhB;IAED,WAAiB,IAAI;QACN,UAAK,GAAG,GAAgB,EAAE;YACrC,OAAO,WAAW,CAAO,YAAY,CAAC,CAAA;QACxC,CAAC,CAAA;IACH,CAAC,EAJgB,IAAI,GAAJ,cAAI,KAAJ,cAAI,QAIpB;IAED,IAAI,MAAwB,CAAA;IAEf,eAAK,GAAG,GAAqB,EAAE;QAC1C,IAAI,MAAM,IAAI,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/pb/message.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Multiaddr } from '@multiformats/multiaddr';
|
|
2
|
-
import type { TransportManager } from '@libp2p/interface-internal
|
|
2
|
+
import type { TransportManager } from '@libp2p/interface-internal';
|
|
3
3
|
/**
|
|
4
4
|
* Returns true if the passed multiaddr is public, not relayed and we have a
|
|
5
5
|
* transport that can dial it
|
package/dist/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAElE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,GAAG,OAAO,CAuB/F"}
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,SAAS,MAAM,YAAY,CAAA;AAGlC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAE,EAAa,EAAE,gBAAkC;IACpF,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,SAAS,MAAM,YAAY,CAAA;AAGlC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAE,EAAa,EAAE,gBAAkC;IACpF,uBAAuB;IACvB,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA;IAE5D,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QACtB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,qCAAqC;IACrC,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,0CAA0C;IAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,CAAA;AACjD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/dcutr",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0-06e6d235f",
|
|
4
4
|
"description": "Implementation of the DCUtR Protocol",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
|
-
"homepage": "https://github.com/libp2p/js-libp2p/tree/
|
|
6
|
+
"homepage": "https://github.com/libp2p/js-libp2p/tree/main/packages/protocol-dcutr#readme",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/libp2p/js-libp2p.git"
|
|
@@ -11,6 +11,10 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/libp2p/js-libp2p/issues"
|
|
13
13
|
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"access": "public",
|
|
16
|
+
"provenance": true
|
|
17
|
+
},
|
|
14
18
|
"type": "module",
|
|
15
19
|
"types": "./dist/src/index.d.ts",
|
|
16
20
|
"files": [
|
|
@@ -47,18 +51,17 @@
|
|
|
47
51
|
"dep-check": "aegir dep-check"
|
|
48
52
|
},
|
|
49
53
|
"dependencies": {
|
|
50
|
-
"@libp2p/interface": "
|
|
51
|
-
"@libp2p/interface-internal": "
|
|
52
|
-
"@multiformats/multiaddr": "^12.1.
|
|
54
|
+
"@libp2p/interface": "1.0.0-06e6d235f",
|
|
55
|
+
"@libp2p/interface-internal": "0.1.10-06e6d235f",
|
|
56
|
+
"@multiformats/multiaddr": "^12.1.10",
|
|
53
57
|
"@multiformats/multiaddr-matcher": "^1.1.0",
|
|
54
58
|
"delay": "^6.0.0",
|
|
55
59
|
"it-protobuf-stream": "^1.0.2",
|
|
56
|
-
"private-ip": "^3.0.
|
|
60
|
+
"private-ip": "^3.0.1",
|
|
57
61
|
"protons-runtime": "^5.0.0",
|
|
58
62
|
"uint8arraylist": "^2.4.3"
|
|
59
63
|
},
|
|
60
64
|
"devDependencies": {
|
|
61
|
-
"@libp2p/logger": "^3.0.2",
|
|
62
65
|
"aegir": "^41.0.2",
|
|
63
66
|
"protons": "^7.3.0",
|
|
64
67
|
"sinon": "^17.0.0",
|
package/src/dcutr.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { CodeError, ERR_INVALID_MESSAGE } from '@libp2p/interface
|
|
2
|
-
import { logger } from '@libp2p/logger'
|
|
1
|
+
import { CodeError, ERR_INVALID_MESSAGE } from '@libp2p/interface'
|
|
3
2
|
import { type Multiaddr, multiaddr } from '@multiformats/multiaddr'
|
|
4
3
|
import delay from 'delay'
|
|
5
4
|
import { pbStream } from 'it-protobuf-stream'
|
|
@@ -7,15 +6,8 @@ import { HolePunch } from './pb/message.js'
|
|
|
7
6
|
import { isPublicAndDialable } from './utils.js'
|
|
8
7
|
import { multicodec } from './index.js'
|
|
9
8
|
import type { DCUtRServiceComponents, DCUtRServiceInit } from './index.js'
|
|
10
|
-
import type { Connection, Stream } from '@libp2p/interface
|
|
11
|
-
import type {
|
|
12
|
-
import type { Startable } from '@libp2p/interface/startable'
|
|
13
|
-
import type { AddressManager } from '@libp2p/interface-internal/address-manager'
|
|
14
|
-
import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
|
|
15
|
-
import type { Registrar } from '@libp2p/interface-internal/registrar'
|
|
16
|
-
import type { TransportManager } from '@libp2p/interface-internal/src/transport-manager/index.js'
|
|
17
|
-
|
|
18
|
-
const log = logger('libp2p:dcutr')
|
|
9
|
+
import type { Logger, Connection, Stream, PeerStore, Startable } from '@libp2p/interface'
|
|
10
|
+
import type { AddressManager, ConnectionManager, Registrar, TransportManager } from '@libp2p/interface-internal'
|
|
19
11
|
|
|
20
12
|
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#rpc-messages
|
|
21
13
|
const MAX_DCUTR_MESSAGE_SIZE = 1024 * 4
|
|
@@ -43,8 +35,10 @@ export class DefaultDCUtRService implements Startable {
|
|
|
43
35
|
private readonly addressManager: AddressManager
|
|
44
36
|
private readonly transportManager: TransportManager
|
|
45
37
|
private topologyId?: string
|
|
38
|
+
private readonly log: Logger
|
|
46
39
|
|
|
47
40
|
constructor (components: DCUtRServiceComponents, init: DCUtRServiceInit) {
|
|
41
|
+
this.log = components.logger.forComponent('libp2p:dcutr')
|
|
48
42
|
this.started = false
|
|
49
43
|
this.peerStore = components.peerStore
|
|
50
44
|
this.registrar = components.registrar
|
|
@@ -84,14 +78,14 @@ export class DefaultDCUtRService implements Startable {
|
|
|
84
78
|
|
|
85
79
|
this.upgradeInbound(connection)
|
|
86
80
|
.catch(err => {
|
|
87
|
-
log.error('error during outgoing DCUtR attempt', err)
|
|
81
|
+
this.log.error('error during outgoing DCUtR attempt', err)
|
|
88
82
|
})
|
|
89
83
|
}
|
|
90
84
|
})
|
|
91
85
|
|
|
92
86
|
await this.registrar.handle(multicodec, (data) => {
|
|
93
87
|
void this.handleIncomingUpgrade(data.stream, data.connection).catch(err => {
|
|
94
|
-
log.error('error during incoming DCUtR attempt', err)
|
|
88
|
+
this.log.error('error during incoming DCUtR attempt', err)
|
|
95
89
|
data.stream.abort(err)
|
|
96
90
|
})
|
|
97
91
|
}, {
|
|
@@ -150,38 +144,38 @@ export class DefaultDCUtRService implements Startable {
|
|
|
150
144
|
// 2. B sends to A a Connect message containing its observed (and
|
|
151
145
|
// possibly predicted) addresses from identify and starts a timer
|
|
152
146
|
// to measure RTT of the relay connection.
|
|
153
|
-
log('B sending connect to %p', relayedConnection.remotePeer)
|
|
147
|
+
this.log('B sending connect to %p', relayedConnection.remotePeer)
|
|
154
148
|
const connectTimer = Date.now()
|
|
155
149
|
await pb.write({
|
|
156
150
|
type: HolePunch.Type.CONNECT,
|
|
157
151
|
observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
|
|
158
152
|
}, options)
|
|
159
153
|
|
|
160
|
-
log('B receiving connect from %p', relayedConnection.remotePeer)
|
|
154
|
+
this.log('B receiving connect from %p', relayedConnection.remotePeer)
|
|
161
155
|
// 4. Upon receiving the Connect, B sends a Sync message
|
|
162
156
|
const connect = await pb.read(options)
|
|
163
157
|
|
|
164
158
|
if (connect.type !== HolePunch.Type.CONNECT) {
|
|
165
|
-
log('A sent wrong message type')
|
|
159
|
+
this.log('A sent wrong message type')
|
|
166
160
|
throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE)
|
|
167
161
|
}
|
|
168
162
|
|
|
169
163
|
const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses)
|
|
170
164
|
|
|
171
165
|
if (multiaddrs.length === 0) {
|
|
172
|
-
log('A did not have any dialable multiaddrs')
|
|
166
|
+
this.log('A did not have any dialable multiaddrs')
|
|
173
167
|
throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE)
|
|
174
168
|
}
|
|
175
169
|
|
|
176
170
|
const rtt = Date.now() - connectTimer
|
|
177
171
|
|
|
178
|
-
log('A sending sync, rtt %dms', rtt)
|
|
172
|
+
this.log('A sending sync, rtt %dms', rtt)
|
|
179
173
|
await pb.write({
|
|
180
174
|
type: HolePunch.Type.SYNC,
|
|
181
175
|
observedAddresses: []
|
|
182
176
|
}, options)
|
|
183
177
|
|
|
184
|
-
log('A waiting for half RTT')
|
|
178
|
+
this.log('A waiting for half RTT')
|
|
185
179
|
// ..and starts a timer for half the RTT measured from the time between
|
|
186
180
|
// sending the initial Connect and receiving the response
|
|
187
181
|
await delay(rtt / 2)
|
|
@@ -190,19 +184,19 @@ export class DefaultDCUtRService implements Startable {
|
|
|
190
184
|
// now we only have tcp support
|
|
191
185
|
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
|
|
192
186
|
|
|
193
|
-
log('B dialing', multiaddrs)
|
|
187
|
+
this.log('B dialing', multiaddrs)
|
|
194
188
|
// Upon expiry of the timer, B dials the address to A.
|
|
195
189
|
const conn = await this.connectionManager.openConnection(multiaddrs, {
|
|
196
190
|
signal: options.signal,
|
|
197
191
|
priority: DCUTR_DIAL_PRIORITY
|
|
198
192
|
})
|
|
199
193
|
|
|
200
|
-
log('DCUtR to %p succeeded to address %a, closing relayed connection', relayedConnection.remotePeer, conn.remoteAddr)
|
|
194
|
+
this.log('DCUtR to %p succeeded to address %a, closing relayed connection', relayedConnection.remotePeer, conn.remoteAddr)
|
|
201
195
|
await relayedConnection.close(options)
|
|
202
196
|
|
|
203
197
|
break
|
|
204
198
|
} catch (err: any) {
|
|
205
|
-
log.error('error while attempting DCUtR on attempt %d of %d', i + 1, this.retries, err)
|
|
199
|
+
this.log.error('error while attempting DCUtR on attempt %d of %d', i + 1, this.retries, err)
|
|
206
200
|
stream?.abort(err)
|
|
207
201
|
|
|
208
202
|
if (i === this.retries) {
|
|
@@ -247,7 +241,7 @@ export class DefaultDCUtRService implements Startable {
|
|
|
247
241
|
const signal = AbortSignal.timeout(this.timeout)
|
|
248
242
|
|
|
249
243
|
try {
|
|
250
|
-
log('attempting unilateral connection upgrade to %a', publicAddresses)
|
|
244
|
+
this.log('attempting unilateral connection upgrade to %a', publicAddresses)
|
|
251
245
|
|
|
252
246
|
// force-dial the multiaddr(s), otherwise `connectionManager.openConnection`
|
|
253
247
|
// will return the existing relayed connection
|
|
@@ -260,7 +254,7 @@ export class DefaultDCUtRService implements Startable {
|
|
|
260
254
|
throw new Error('Could not open a new, non-transient, connection')
|
|
261
255
|
}
|
|
262
256
|
|
|
263
|
-
log('unilateral connection upgrade to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr)
|
|
257
|
+
this.log('unilateral connection upgrade to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr)
|
|
264
258
|
|
|
265
259
|
await relayedConnection.close({
|
|
266
260
|
signal
|
|
@@ -268,10 +262,10 @@ export class DefaultDCUtRService implements Startable {
|
|
|
268
262
|
|
|
269
263
|
return true
|
|
270
264
|
} catch (err) {
|
|
271
|
-
log.error('unilateral connection upgrade to %p on addresses %a failed', relayedConnection.remotePeer, publicAddresses, err)
|
|
265
|
+
this.log.error('unilateral connection upgrade to %p on addresses %a failed', relayedConnection.remotePeer, publicAddresses, err)
|
|
272
266
|
}
|
|
273
267
|
} else {
|
|
274
|
-
log('peer %p has no public addresses, not attempting unilateral connection upgrade', relayedConnection.remotePeer)
|
|
268
|
+
this.log('peer %p has no public addresses, not attempting unilateral connection upgrade', relayedConnection.remotePeer)
|
|
275
269
|
}
|
|
276
270
|
|
|
277
271
|
// no public addresses or failed to dial public addresses
|
|
@@ -293,35 +287,35 @@ export class DefaultDCUtRService implements Startable {
|
|
|
293
287
|
maxDataLength: MAX_DCUTR_MESSAGE_SIZE
|
|
294
288
|
}).pb(HolePunch)
|
|
295
289
|
|
|
296
|
-
log('A receiving connect')
|
|
290
|
+
this.log('A receiving connect')
|
|
297
291
|
// 3. Upon receiving the Connect, A responds back with a Connect message
|
|
298
292
|
// containing its observed (and possibly predicted) addresses.
|
|
299
293
|
const connect = await pb.read(options)
|
|
300
294
|
|
|
301
295
|
if (connect.type !== HolePunch.Type.CONNECT) {
|
|
302
|
-
log('B sent wrong message type')
|
|
296
|
+
this.log('B sent wrong message type')
|
|
303
297
|
throw new CodeError('DCUtR message type was incorrect', ERR_INVALID_MESSAGE)
|
|
304
298
|
}
|
|
305
299
|
|
|
306
300
|
if (connect.observedAddresses.length === 0) {
|
|
307
|
-
log('B sent no multiaddrs')
|
|
301
|
+
this.log('B sent no multiaddrs')
|
|
308
302
|
throw new CodeError('DCUtR connect message had no multiaddrs', ERR_INVALID_MESSAGE)
|
|
309
303
|
}
|
|
310
304
|
|
|
311
305
|
const multiaddrs = this.getDialableMultiaddrs(connect.observedAddresses)
|
|
312
306
|
|
|
313
307
|
if (multiaddrs.length === 0) {
|
|
314
|
-
log('B had no dialable multiaddrs')
|
|
308
|
+
this.log('B had no dialable multiaddrs')
|
|
315
309
|
throw new CodeError('DCUtR connect message had no dialable multiaddrs', ERR_INVALID_MESSAGE)
|
|
316
310
|
}
|
|
317
311
|
|
|
318
|
-
log('A sending connect')
|
|
312
|
+
this.log('A sending connect')
|
|
319
313
|
await pb.write({
|
|
320
314
|
type: HolePunch.Type.CONNECT,
|
|
321
315
|
observedAddresses: this.addressManager.getAddresses().map(ma => ma.bytes)
|
|
322
316
|
})
|
|
323
317
|
|
|
324
|
-
log('A receiving sync')
|
|
318
|
+
this.log('A receiving sync')
|
|
325
319
|
const sync = await pb.read(options)
|
|
326
320
|
|
|
327
321
|
if (sync.type !== HolePunch.Type.SYNC) {
|
|
@@ -333,17 +327,17 @@ export class DefaultDCUtRService implements Startable {
|
|
|
333
327
|
// https://github.com/libp2p/specs/blob/master/relay/DCUtR.md#the-protocol
|
|
334
328
|
|
|
335
329
|
// Upon receiving the Sync, A immediately dials the address to B
|
|
336
|
-
log('A dialing', multiaddrs)
|
|
330
|
+
this.log('A dialing', multiaddrs)
|
|
337
331
|
const connection = await this.connectionManager.openConnection(multiaddrs, {
|
|
338
332
|
signal: options.signal,
|
|
339
333
|
priority: DCUTR_DIAL_PRIORITY,
|
|
340
334
|
force: true
|
|
341
335
|
})
|
|
342
336
|
|
|
343
|
-
log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr)
|
|
337
|
+
this.log('DCUtR to %p succeeded via %a, closing relayed connection', relayedConnection.remotePeer, connection.remoteAddr)
|
|
344
338
|
await relayedConnection.close(options)
|
|
345
339
|
} catch (err: any) {
|
|
346
|
-
log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err)
|
|
340
|
+
this.log.error('incoming DCUtR from %p failed', relayedConnection.remotePeer, err)
|
|
347
341
|
stream.abort(err)
|
|
348
342
|
} finally {
|
|
349
343
|
await stream.close(options)
|
package/src/index.ts
CHANGED
|
@@ -54,11 +54,8 @@
|
|
|
54
54
|
*/
|
|
55
55
|
|
|
56
56
|
import { DefaultDCUtRService } from './dcutr.js'
|
|
57
|
-
import type { PeerStore } from '@libp2p/interface
|
|
58
|
-
import type { AddressManager } from '@libp2p/interface-internal
|
|
59
|
-
import type { ConnectionManager } from '@libp2p/interface-internal/connection-manager'
|
|
60
|
-
import type { Registrar } from '@libp2p/interface-internal/registrar'
|
|
61
|
-
import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
|
|
57
|
+
import type { ComponentLogger, PeerStore } from '@libp2p/interface'
|
|
58
|
+
import type { AddressManager, ConnectionManager, Registrar, TransportManager } from '@libp2p/interface-internal'
|
|
62
59
|
|
|
63
60
|
export interface DCUtRServiceInit {
|
|
64
61
|
/**
|
|
@@ -90,6 +87,7 @@ export interface DCUtRServiceComponents {
|
|
|
90
87
|
registrar: Registrar
|
|
91
88
|
addressManager: AddressManager
|
|
92
89
|
transportManager: TransportManager
|
|
90
|
+
logger: ComponentLogger
|
|
93
91
|
}
|
|
94
92
|
|
|
95
93
|
/**
|
package/src/utils.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Multiaddr } from '@multiformats/multiaddr'
|
|
2
2
|
import { Circuit, IP, DNS } from '@multiformats/multiaddr-matcher'
|
|
3
3
|
import isPrivate from 'private-ip'
|
|
4
|
-
import type { TransportManager } from '@libp2p/interface-internal
|
|
4
|
+
import type { TransportManager } from '@libp2p/interface-internal'
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Returns true if the passed multiaddr is public, not relayed and we have a
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"DCUtRServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceComponents.html",
|
|
3
|
-
".:DCUtRServiceComponents": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceComponents.html",
|
|
4
|
-
"DCUtRServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceInit.html",
|
|
5
|
-
".:DCUtRServiceInit": "https://libp2p.github.io/js-libp2p/interfaces/_libp2p_dcutr.DCUtRServiceInit.html",
|
|
6
|
-
"multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_dcutr.multicodec.html",
|
|
7
|
-
".:multicodec": "https://libp2p.github.io/js-libp2p/variables/_libp2p_dcutr.multicodec.html",
|
|
8
|
-
"dcutr": "https://libp2p.github.io/js-libp2p/functions/_libp2p_dcutr.dcutr.html",
|
|
9
|
-
".:dcutr": "https://libp2p.github.io/js-libp2p/functions/_libp2p_dcutr.dcutr.html"
|
|
10
|
-
}
|