@libp2p/kad-dht 16.2.0-2151144c3 → 16.2.0-811a29f8a
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +1 -4
- package/dist/index.min.js.map +4 -4
- package/package.json +11 -11
package/dist/index.min.js
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
(function (root, factory) {(typeof module === 'object' && module.exports) ? module.exports = factory() : root.Libp2PKadDht = factory()}(typeof self !== 'undefined' ? self : this, function () {
|
|
2
|
-
"use strict";var Libp2PKadDht=(()=>{var X4=Object.create;var U1=Object.defineProperty;var J4=Object.getOwnPropertyDescriptor;var e6=Object.getOwnPropertyNames;var t6=Object.getPrototypeOf,r6=Object.prototype.hasOwnProperty;var Do=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ae=(r,e)=>{for(var t in e)U1(r,t,{get:e[t],enumerable:!0})},_2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of e6(e))!r6.call(r,o)&&o!==t&&U1(r,o,{get:()=>e[o],enumerable:!(n=J4(e,o))||n.enumerable});return r};var n6=(r,e,t)=>(t=r!=null?X4(t6(r)):{},_2(e||!r||!r.__esModule?U1(t,"default",{value:r,enumerable:!0}):t,r)),o6=r=>_2(U1({},"__esModule",{value:!0}),r);var xs=Do(Or=>{"use strict";Object.defineProperty(Or,"__esModule",{value:!0});Or.Netmask4Impl=void 0;Or.ip2long=Br;Or.long2ip=nt;function nt(r){let e=(r&-16777216)>>>24,t=(r&255<<16)>>>16,n=(r&65280)>>>8,o=r&255;return[e,t,n,o].join(".")}var qa=48,Fa=97,Va=65;function Ha(r){let e=0,t=10,n="9",o=0;r.length>1&&r[o]==="0"&&(r[o+1]==="x"||r[o+1]==="X"?(o+=2,t=16):"0"<=r[o+1]&&r[o+1]<="9"&&(o++,t=8,n="7"));let i=o;for(;o<r.length;){if("0"<=r[o]&&r[o]<=n)e=e*t+(r.charCodeAt(o)-qa)>>>0;else if(t===16)if("a"<=r[o]&&r[o]<="f")e=e*t+(10+r.charCodeAt(o)-Fa)>>>0;else if("A"<=r[o]&&r[o]<="F")e=e*t+(10+r.charCodeAt(o)-Va)>>>0;else break;else break;if(e>4294967295)throw new Error("too large");o++}if(o===i)throw new Error("empty octet");return[e,o]}function Br(r){let e=[];for(let t=0;t<=3&&r.length!==0;t++){if(t>0){if(r[0]!==".")throw new Error("Invalid IP");r=r.substring(1)}let[n,o]=Ha(r);r=r.substring(o),e.push(n)}if(r.length!==0)throw new Error("Invalid IP");switch(e.length){case 1:if(e[0]>4294967295)throw new Error("Invalid IP");return e[0]>>>0;case 2:if(e[0]>255||e[1]>16777215)throw new Error("Invalid IP");return(e[0]<<24|e[1])>>>0;case 3:if(e[0]>255||e[1]>255||e[2]>65535)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2])>>>0;case 4:if(e[0]>255||e[1]>255||e[2]>255||e[3]>255)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0;default:throw new Error("Invalid IP")}}var bs=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(!n){let o=e.split("/",2);e=o[0],n=o[1]}if(n||(n=32),typeof n=="string"&&n.indexOf(".")>-1){try{this.maskLong=Br(n)}catch{throw new Error("Invalid mask: "+n)}this.bitmask=NaN;for(let o=32;o>=0;o--)if(this.maskLong===4294967295<<32-o>>>0){this.bitmask=o;break}}else if(n||n===0)this.bitmask=parseInt(n,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(Br(e)&this.maskLong)>>>0}catch{throw new Error("Invalid net address: "+e)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+n);this.size=Math.pow(2,32-this.bitmask),this.base=nt(this.netLong),this.mask=nt(this.maskLong),this.hostmask=nt(~this.maskLong),this.first=this.bitmask<=30?nt(this.netLong+1):this.base,this.last=this.bitmask<=30?nt(this.netLong+this.size-2):nt(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?nt(this.netLong+this.size-1):void 0}contains(e){return typeof e=="string"&&(e.indexOf("/")>0||e.split(".").length!==4)&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):(Br(e)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0}next(e=1){return new r(nt(this.netLong+this.size*e),this.mask)}forEach(e){let t=Br(this.first),n=Br(this.last),o=0;for(;t<=n;)e(nt(t),t,o),o++,t++}toString(){return this.base+"/"+this.bitmask}};Or.Netmask4Impl=bs});var M3=Do(Nr=>{"use strict";Object.defineProperty(Nr,"__esModule",{value:!0});Nr.Netmask6Impl=void 0;Nr.ip6bigint=Es;Nr.bigint2ip6=ar;var za=xs(),ws=(1n<<128n)-1n;function Es(r){let e=r.indexOf("%");e!==-1&&(r=r.substring(0,e));let t=r.lastIndexOf(":");if(t!==-1&&r.indexOf(".",t)!==-1){let n=r.substring(t+1),o=(0,za.ip2long)(n),i=r.substring(0,t+1)+"0:0";return N3(i)&~0xffffffffn|BigInt(o)}return N3(r)}function N3(r){let e=r.indexOf("::"),t;if(e!==-1){let o=r.substring(0,e),i=r.substring(e+2),s=o===""?[]:o.split(":"),a=i===""?[]:i.split(":"),c=8-s.length-a.length;if(c<0)throw new Error("Invalid IPv6: too many groups");t=[...s,...Array(c).fill("0"),...a]}else t=r.split(":");if(t.length!==8)throw new Error("Invalid IPv6: expected 8 groups, got "+t.length);let n=0n;for(let o=0;o<8;o++){let i=t[o];if(i.length===0||i.length>4)throw new Error('Invalid IPv6: bad group "'+i+'"');let s=parseInt(i,16);if(isNaN(s)||s<0||s>65535)throw new Error('Invalid IPv6: bad group "'+i+'"');n=n<<16n|BigInt(s)}return n}function ar(r){if(r<0n||r>ws)throw new Error("Invalid IPv6 address value");let e=[];for(let s=0;s<8;s++)e.unshift(Number(r&0xffffn)),r>>=16n;let t=-1,n=0,o=-1,i=0;for(let s=0;s<8;s++)e[s]===0?o===-1?(o=s,i=1):i++:(i>n&&i>=2&&(t=o,n=i),o=-1,i=0);if(i>n&&i>=2&&(t=o,n=i),t!==-1&&t+n===8&&t>0)return e.slice(0,t).map(a=>a.toString(16)).join(":")+"::";if(t===0)return"::"+e.slice(n).map(a=>a.toString(16)).join(":");if(t>0){let s=e.slice(0,t).map(c=>c.toString(16)),a=e.slice(t+n).map(c=>c.toString(16));return s.join(":")+"::"+a.join(":")}else return e.map(s=>s.toString(16)).join(":")}var vs=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(n==null){let o=e.indexOf("/");o!==-1?(n=parseInt(e.substring(o+1),10),e=e.substring(0,o)):n=128}if(isNaN(n)||n<0||n>128)throw new Error("Invalid mask for IPv6: "+n);this.bitmask=n,this.bitmask===0?this.maskBigint=0n:this.maskBigint=ws>>BigInt(128-this.bitmask)<<BigInt(128-this.bitmask);try{this.netBigint=Es(e)&this.maskBigint}catch{throw new Error("Invalid IPv6 net address: "+e)}this.size=Number(1n<<BigInt(128-this.bitmask)),this.base=ar(this.netBigint),this.mask=ar(this.maskBigint),this.hostmask=ar(~this.maskBigint&ws),this.first=this.base,this.last=ar(this.netBigint+(1n<<BigInt(128-this.bitmask))-1n),this.broadcast=void 0}contains(e){return typeof e=="string"&&e.indexOf("/")>0&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.last):(Es(e)&this.maskBigint)===this.netBigint}next(e=1){let t=1n<<BigInt(128-this.bitmask);return new r(ar(this.netBigint+t*BigInt(e)),this.bitmask)}forEach(e){let t=this.netBigint,n=1n<<BigInt(128-this.bitmask),o=this.netBigint+n-1n,i=0;for(;t<=o;)e(ar(t),Number(t),i),i++,t++}toString(){return this.base+"/"+this.bitmask}};Nr.Netmask6Impl=vs});var U3=Do(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.long2ip=Nt.ip2long=Nt.Netmask=void 0;var _n=xs();Object.defineProperty(Nt,"ip2long",{enumerable:!0,get:function(){return _n.ip2long}});Object.defineProperty(Nt,"long2ip",{enumerable:!0,get:function(){return _n.long2ip}});var $a=M3(),Ss=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");(e.indexOf("/")!==-1?e.substring(0,e.indexOf("/")):e).indexOf(":")!==-1?this._impl=new $a.Netmask6Impl(e,t):this._impl=new _n.Netmask4Impl(e,t),this.base=this._impl.base,this.mask=this._impl.mask,this.hostmask=this._impl.hostmask,this.bitmask=this._impl.bitmask,this.size=this._impl.size,this.first=this._impl.first,this.last=this._impl.last,this.broadcast=this._impl.broadcast,this._impl instanceof _n.Netmask4Impl?(this.maskLong=this._impl.maskLong,this.netLong=this._impl.netLong):(this.maskLong=0,this.netLong=0)}contains(e){return typeof e=="string"&&(e.indexOf("/")>0?e=new r(e):e.indexOf(":")===-1&&e.split(".").length!==4&&(e=new r(e))),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):this._impl.contains(e)}next(e=1){let t=this._impl.next(e);return new r(t.base,t.bitmask)}forEach(e){this._impl.forEach(e)}toString(){return this._impl.toString()}};Nt.Netmask=Ss});var q7={};Ae(q7,{EventTypes:()=>E2,MessageType:()=>$,Record:()=>le,kadDHT:()=>K7,passthroughMapper:()=>U4,removePrivateAddressesMapper:()=>eo,removePublicAddressesMapper:()=>M4});var I2=Symbol.for("@libp2p/content-routing");var Ke=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var V=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},it=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}};var qe=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}};var K1=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},q1=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}};var Te=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var F1=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}};var jt=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var A2=Symbol.for("@libp2p/peer-discovery");var Ro=Symbol.for("@libp2p/peer-id");var T2=Symbol.for("@libp2p/peer-routing");var P2="keep-alive";function C2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Gr(...r){let e=[];for(let t of r)C2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function V1(...r){let e=[];for(let t of r)C2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}function i6(r){return typeof r?.handleEvent=="function"}function s6(r){return(r!==!0&&r!==!1&&r?.once)??!1}var Pe=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){let o=s6(n);super.addEventListener(e,s=>{if(o){let a=this.#e.get(s.type);a!=null&&(a=a.filter(({callback:c})=>c!==t),this.#e.set(s.type,a))}i6(t)?t.handleEvent(s):t(s)},n);let i=this.#e.get(e);i==null&&(i=[],this.#e.set(e,i)),i.push({callback:t,once:o})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:i})=>i!==t),this.#e.set(e,o))}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var D2=Symbol.for("@libp2p/service-capabilities"),R2=Symbol.for("@libp2p/service-dependencies");var Yr=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},H1=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var L2={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new H1("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Oe=L2;var No={};Ae(No,{base58btc:()=>te,base58flickr:()=>d6});var A9=new Uint8Array(0);function k2(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function st(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")}function B2(r){return new TextEncoder().encode(r)}function O2(r){return new TextDecoder().decode(r)}function a6(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var i=r.charAt(o),s=i.charCodeAt(0);if(t[s]!==255)throw new TypeError(i+" is ambiguous");t[s]=o}var a=r.length,c=r.charAt(0),l=Math.log(a)/Math.log(256),u=Math.log(256)/Math.log(a);function f(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var E=0,g=0,y=0,_=p.length;y!==_&&p[y]===0;)y++,E++;for(var w=(_-y)*u+1>>>0,A=new Uint8Array(w);y!==_;){for(var D=p[y],N=0,q=w-1;(D!==0||N<g)&&q!==-1;q--,N++)D+=256*A[q]>>>0,A[q]=D%a>>>0,D=D/a>>>0;if(D!==0)throw new Error("Non-zero carry");g=N,y++}for(var S=w-g;S!==w&&A[S]===0;)S++;for(var v=c.repeat(E);S<w;++S)v+=r.charAt(A[S]);return v}function h(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;var E=0;if(p[E]!==" "){for(var g=0,y=0;p[E]===c;)g++,E++;for(var _=(p.length-E)*l+1>>>0,w=new Uint8Array(_);p[E];){var A=t[p.charCodeAt(E)];if(A===255)return;for(var D=0,N=_-1;(A!==0||D<y)&&N!==-1;N--,D++)A+=a*w[N]>>>0,w[N]=A%256>>>0,A=A/256>>>0;if(A!==0)throw new Error("Non-zero carry");y=D,E++}if(p[E]!==" "){for(var q=_-y;q!==_&&w[q]===0;)q++;for(var S=new Uint8Array(g+(_-q)),v=g;q!==_;)S[v++]=w[q++];return S}}}function d(p){var E=h(p);if(E)return E;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:h,decode:d}}var c6=a6,u6=c6,M2=u6;var Lo=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},ko=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return U2(this,e)}},Bo=class{decoders;constructor(e){this.decoders=e}or(e){return U2(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function U2(r,e){return new Bo({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Oo=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new Lo(e,t,n),this.decoder=new ko(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function gr({name:r,prefix:e,encode:t,decode:n}){return new Oo(r,e,t,n)}function _t({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=M2(t,r);return gr({prefix:e,name:r,encode:n,decode:i=>st(o(i))})}function l6(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*t/8|0),s=0,a=0,c=0;for(let l=0;l<o;++l){let u=e[r[l]];if(u===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|u,s+=t,s>=8&&(s-=8,i[c++]=255&a>>s)}if(s>=t||(255&a<<8-s)!==0)throw new SyntaxError("Unexpected end of data");return i}function f6(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,i="",s=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],s+=8;s>t;)s-=t,i+=e[o&a>>s];if(s!==0&&(i+=e[o&a<<t-s]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function h6(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function ae({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=h6(n);return gr({prefix:e,name:r,encode(i){return f6(i,n,t)},decode(i){return l6(i,o,t,r)}})}var te=_t({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),d6=_t({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Mo={};Ae(Mo,{base32:()=>It,base32hex:()=>y6,base32hexpad:()=>x6,base32hexpadupper:()=>w6,base32hexupper:()=>b6,base32pad:()=>m6,base32padupper:()=>g6,base32upper:()=>p6,base32z:()=>E6});var It=ae({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),p6=ae({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),m6=ae({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),g6=ae({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),y6=ae({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),b6=ae({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),x6=ae({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),w6=ae({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),E6=ae({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Uo={};Ae(Uo,{base36:()=>jr,base36upper:()=>v6});var jr=_t({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),v6=_t({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var S6=F2,K2=128,_6=127,I6=~_6,A6=Math.pow(2,31);function F2(r,e,t){e=e||[],t=t||0;for(var n=t;r>=A6;)e[t++]=r&255|K2,r/=128;for(;r&I6;)e[t++]=r&255|K2,r>>>=7;return e[t]=r|0,F2.bytes=t-n+1,e}var T6=Ko,P6=128,q2=127;function Ko(r,n){var t=0,n=n||0,o=0,i=n,s,a=r.length;do{if(i>=a)throw Ko.bytes=0,new RangeError("Could not decode varint");s=r[i++],t+=o<28?(s&q2)<<o:(s&q2)*Math.pow(2,o),o+=7}while(s>=P6);return Ko.bytes=i-n,t}var C6=Math.pow(2,7),D6=Math.pow(2,14),R6=Math.pow(2,21),L6=Math.pow(2,28),k6=Math.pow(2,35),B6=Math.pow(2,42),O6=Math.pow(2,49),N6=Math.pow(2,56),M6=Math.pow(2,63),U6=function(r){return r<C6?1:r<D6?2:r<R6?3:r<L6?4:r<k6?5:r<B6?6:r<O6?7:r<N6?8:r<M6?9:10},K6={encode:S6,decode:T6,encodingLength:U6},q6=K6,Qr=q6;function Zr(r,e=0){return[Qr.decode(r,e),Qr.decode.bytes]}function yr(r,e,t=0){return Qr.encode(r,e,t),e}function br(r){return Qr.encodingLength(r)}function Qe(r,e){let t=e.byteLength,n=br(r),o=n+br(t),i=new Uint8Array(o+t);return yr(r,i,0),yr(t,i,n),i.set(e,o),new xr(r,t,e,i)}function fe(r){let e=st(r),[t,n]=Zr(e),[o,i]=Zr(e.subarray(n)),s=e.subarray(n+i);if(s.byteLength!==o)throw new Error("Incorrect length");return new xr(t,o,s,e)}function V2(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&k2(r.bytes,t.bytes)}}var xr=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function H2(r,e){let{bytes:t,version:n}=r;return n===0?V6(t,qo(r),e??te.encoder):H6(t,qo(r),e??It.encoder)}var z2=new WeakMap;function qo(r){let e=z2.get(r);if(e==null){let t=new Map;return z2.set(r,t),t}return e}var W=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,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:e,multihash:t}=this;if(e!==Wr)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==z6)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}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:e,digest:t}=this.multihash,n=Qe(e,t);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(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&V2(e.multihash,n.multihash)}toString(e){return H2(this,e)}toJSON(){return{"/":H2(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:i,bytes:s}=t;return new r(n,o,i,s??$2(n,o,i.bytes))}else if(t[$6]===!0){let{version:n,multihash:o,code:i}=t,s=fe(o);return r.create(n,i,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==Wr)throw new Error(`Version 0 CID must use dag-pb (code: ${Wr}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=$2(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,Wr,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=st(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=o.subarray(t.multihashSize-t.digestSize),s=new xr(t.multihashCode,t.digestSize,i,o);return[t.version===0?r.createV0(s):r.createV1(t.codec,s),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,h]=Zr(e.subarray(t));return t+=h,f},o=n(),i=Wr;if(o===18?(o=0,t=0):i=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let s=t,a=n(),c=n(),l=t+c,u=l-s;return{version:o,codec:i,multihashCode:a,digestSize:c,multihashSize:u,size:l}}static parse(e,t){let[n,o]=F6(e,t),i=r.decode(o);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return qo(i).set(n,e),i}};function F6(r,e){switch(r[0]){case"Q":{let t=e??te;return[te.prefix,t.decode(`${te.prefix}${r}`)]}case te.prefix:{let t=e??te;return[te.prefix,t.decode(r)]}case It.prefix:{let t=e??It;return[It.prefix,t.decode(r)]}case jr.prefix:{let t=e??jr;return[jr.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function V6(r,e,t){let{prefix:n}=t;if(n!==te.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return o}function H6(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let i=t.encode(r);return e.set(n,i),i}else return o}var Wr=112,z6=18;function $2(r,e,t){let n=br(r),o=n+br(e),i=new Uint8Array(o+t.byteLength);return yr(r,i,0),yr(e,i,n),i.set(t,o),i}var $6=Symbol.for("@ipld/js-cid/CID");var Fo={};Ae(Fo,{identity:()=>Fe});var G2=0,G6="identity",Y2=st;function Y6(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Qe(G2,Y2(r))}var Fe={code:G2,name:G6,encode:Y2,digest:Y6};function Z(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function we(r=0){return new Uint8Array(r)}function Ee(r=0){return new Uint8Array(r)}function Me(r,e){e==null&&(e=r.reduce((o,i)=>o+i.length,0));let t=Ee(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}var Q2=Symbol.for("@achingbrain/uint8arraylist");function j2(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function $1(r){return!!r?.[Q2]}var he=class r{bufs;length;[Q2]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if($1(n))t+=n.byteLength,this.bufs.push(...n.bufs);else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if($1(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=j2(this.bufs,e);return t.buf[t.index]}set(e,t){let n=j2(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if($1(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Me(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Me(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),i=new r;return i.length=o,i.bufs=[...n],i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:this.bufs,length:this.length};let n=[],o=0;for(let i=0;i<this.bufs.length;i++){let s=this.bufs[i],a=o,c=a+s.byteLength;if(o=c,e>=c)continue;let l=e>=a&&e<c,u=t>a&&t<=c;if(l&&u){if(e===a&&t===c){n.push(s);break}let f=e-a;n.push(s.subarray(f,f+(t-e)));break}if(l){if(e===0){n.push(s);continue}n.push(s.subarray(e-a));continue}if(u){if(t===c){n.push(s);break}n.push(s.subarray(0,t-a));break}n.push(s)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!$1(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let i=256,s=new Int32Array(i);for(let f=0;f<i;f++)s[f]=-1;for(let f=0;f<o;f++)s[n[f]]=f;let a=s,c=this.byteLength-n.byteLength,l=n.byteLength-1,u;for(let f=t;f<=c;f+=u){u=0;for(let h=l;h>=0;h--){let d=this.get(f+h);if(n[h]!==d){u=Math.max(1,h-a[d]);break}}if(u===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=Ee(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=we(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=we(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=we(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=Ee(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=we(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=we(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=we(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=we(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=we(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Z(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,i)=>o+i.byteLength,0)),n.length=t,n}};var Vo={};Ae(Vo,{base10:()=>Q6});var Q6=_t({prefix:"9",name:"base10",alphabet:"0123456789"});var Ho={};Ae(Ho,{base16:()=>Z6,base16upper:()=>W6});var Z6=ae({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),W6=ae({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var zo={};Ae(zo,{base2:()=>X6});var X6=ae({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var $o={};Ae($o,{base256emoji:()=>n5});var Z2=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}"),J6=Z2.reduce((r,e,t)=>(r[t]=e,r),[]),e5=Z2.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function t5(r){return r.reduce((e,t)=>(e+=J6[t],e),"")}function r5(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=e5[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var n5=gr({prefix:"\u{1F680}",name:"base256emoji",encode:t5,decode:r5});var Yo={};Ae(Yo,{base64:()=>o5,base64pad:()=>i5,base64url:()=>Go,base64urlpad:()=>s5});var o5=ae({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),i5=ae({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Go=ae({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),s5=ae({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var jo={};Ae(jo,{base8:()=>a5});var a5=ae({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var Qo={};Ae(Qo,{identity:()=>c5});var c5=gr({prefix:"\0",name:"identity",encode:r=>O2(r),decode:r=>B2(r)});var cc=new TextEncoder,uc=new TextDecoder;var W2=85;var Xo={};Ae(Xo,{sha256:()=>at,sha512:()=>f5});var l5=20;function Wo({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new Zo(r,e,t,n,o)}var Zo=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,i){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??l5,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?J2(n,this.code,t?.truncate):n.then(o=>J2(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function J2(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Qe(e,r)}function t0(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var at=Wo({name:"sha2-256",code:18,encode:t0("SHA-256")}),f5=Wo({name:"sha2-512",code:19,encode:t0("SHA-512")});var Xr={...Qo,...zo,...jo,...Vo,...Ho,...Mo,...Uo,...No,...Yo,...$o},Ec={...Xo,...Fo};function n0(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var r0=n0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),Jo=n0("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=Ee(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),h5={utf8:r0,"utf-8":r0,hex:Xr.base16,latin1:Jo,ascii:Jo,binary:Jo,...Xr},G1=h5;function U(r,e="utf8"){let t=G1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function O(r,e="utf8"){let t=G1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var d5=parseInt("11111",2),ei=parseInt("10000000",2),p5=parseInt("01111111",2),o0={0:Jr,1:Jr,2:m5,3:b5,4:x5,5:y5,6:g5,16:Jr,22:Jr,48:Jr};function ct(r,e={offset:0}){let t=r[e.offset]&d5;if(e.offset++,o0[t]!=null)return o0[t](r,e);throw new Error("No decoder for tag "+t)}function e1(r,e){let t=0;if((r[e.offset]&ei)===ei){let n=r[e.offset]&p5,o="0x";e.offset++;for(let i=0;i<n;i++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function Jr(r,e){e1(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=ct(r,e);if(n===null)break;t.push(n)}return t}function m5(r,e){let t=e1(r,e),n=e.offset,o=e.offset+t,i=[];for(let s=n;s<o;s++)s===n&&r[s]===0||i.push(r[s]);return e.offset+=t,Uint8Array.from(i)}function g5(r,e){let t=e1(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let i=0,s=0;o<40?(i=0,s=o):o<80?(i=1,s=o-40):(i=2,s=o-80);let a=`${i}.${s}`,c=[];for(;e.offset<n;){let l=r[e.offset];if(e.offset++,c.push(l&127),l<128){c.reverse();let u=0;for(let f=0;f<c.length;f++)u+=c[f]<<f*7;a+=`.${u}`,c=[]}}return a}function y5(r,e){return e.offset++,null}function b5(r,e){let t=e1(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function x5(r,e){let t=e1(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function w5(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new he;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function ti(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=w5(r.byteLength);return new he(Uint8Array.from([e.byteLength|ei]),e)}function Ce(r){let e=new he,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new he(Uint8Array.from([2]),ti(e),e)}function Y1(r){let e=Uint8Array.from([0]),t=new he(e,r);return new he(Uint8Array.from([3]),ti(t),t)}function At(r,e=48){let t=new he;for(let n of r)t.append(n);return new he(Uint8Array.from([e]),ti(t),t)}async function i0(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let i=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),i}var E5=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),v5=Uint8Array.from([6,5,43,129,4,0,34]),S5=Uint8Array.from([6,5,43,129,4,0,35]),_5={ext:!0,kty:"EC",crv:"P-256"},I5={ext:!0,kty:"EC",crv:"P-384"},A5={ext:!0,kty:"EC",crv:"P-521"},ri=32,ni=48,oi=66;function ii(r){let e=ct(r);return s0(e)}function s0(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===ri*2+1)return n=O(e.subarray(t,t+ri),"base64url"),o=O(e.subarray(t+ri),"base64url"),new wr({..._5,key_ops:["verify"],x:n,y:o});if(e.byteLength===ni*2+1)return n=O(e.subarray(t,t+ni),"base64url"),o=O(e.subarray(t+ni),"base64url"),new wr({...I5,key_ops:["verify"],x:n,y:o});if(e.byteLength===oi*2+1)return n=O(e.subarray(t,t+oi),"base64url"),o=O(e.subarray(t+oi),"base64url"),new wr({...A5,key_ops:["verify"],x:n,y:o});throw new V(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function a0(r){return At([Ce(Uint8Array.from([1])),At([T5(r.crv)],160),At([Y1(new he(Uint8Array.from([4]),U(r.x??"","base64url"),U(r.y??"","base64url")))],161)]).subarray()}function T5(r){if(r==="P-256")return E5;if(r==="P-384")return v5;if(r==="P-521")return S5;throw new V(`Invalid curve ${r}`)}var wr=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=a0(this.jwk)),this._raw}toMultihash(){return Fe.digest(Tt(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}async verify(e,t,n){return i0(this.jwk,t,e,n)}};function Qt(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"}function Ze(r,e=""){if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new Error(`${t}expected integer >= 0, got ${r}`)}}function F(r,e,t=""){let n=Qt(r),o=r?.length,i=e!==void 0;if(!n||i&&o!==e){let s=t&&`"${t}" `,a=i?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`;throw new Error(s+"expected Uint8Array"+a+", got "+c)}return r}function j1(r){if(typeof r!="function"||typeof r.create!="function")throw new Error("Hash must wrapped by utils.createHasher");Ze(r.outputLen),Ze(r.blockLen)}function Er(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function u0(r,e){F(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new Error('"digestInto() output" expected to be of length >='+t)}function lt(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function Q1(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Ve(r,e){return r<<32-e|r>>>e}var l0=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",P5=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function ft(r){if(F(r),l0)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=P5[r[t]];return e}var ut={_0:48,_9:57,A:65,F:70,a:97,f:102};function c0(r){if(r>=ut._0&&r<=ut._9)return r-ut._0;if(r>=ut.A&&r<=ut.F)return r-(ut.A-10);if(r>=ut.a&&r<=ut.f)return r-(ut.a-10)}function ht(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);if(l0)return Uint8Array.fromHex(r);let e=r.length,t=e/2;if(e%2)throw new Error("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,i=0;o<t;o++,i+=2){let s=c0(r.charCodeAt(i)),a=c0(r.charCodeAt(i+1));if(s===void 0||a===void 0){let c=r[i]+r[i+1];throw new Error('hex string expected, got non-hex character "'+c+'" at index '+i)}n[o]=s*16+a}return n}function De(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];F(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let i=r[n];t.set(i,o),o+=i.length}return t}function si(r,e={}){let t=(o,i)=>r(i).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function vr(r=32){let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return e.getRandomValues(new Uint8Array(r))}var ai=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function f0(r,e,t){return r&e^~r&t}function h0(r,e,t){return r&e^r&t^e&t}var t1=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=Q1(this.buffer)}update(e){Er(this),F(e);let{view:t,buffer:n,blockLen:o}=this,i=e.length;for(let s=0;s<i;){let a=Math.min(o-this.pos,i-s);if(a===o){let c=Q1(e);for(;o<=i-s;s+=o)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Er(this),u0(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;t[s++]=128,lt(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(n,0),s=0);for(let f=s;f<o;f++)t[f]=0;n.setBigUint64(o-8,BigInt(this.length*8),i),this.process(n,0);let a=Q1(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:i,destroyed:s,pos:a}=this;return e.destroyed=s,e.finished=i,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},dt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var ye=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Z1=BigInt(4294967295),d0=BigInt(32);function C5(r,e=!1){return e?{h:Number(r&Z1),l:Number(r>>d0&Z1)}:{h:Number(r>>d0&Z1)|0,l:Number(r&Z1)|0}}function p0(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let i=0;i<t;i++){let{h:s,l:a}=C5(r[i],e);[n[i],o[i]]=[s,a]}return[n,o]}var ci=(r,e,t)=>r>>>t,ui=(r,e,t)=>r<<32-t|e>>>t,Zt=(r,e,t)=>r>>>t|e<<32-t,Wt=(r,e,t)=>r<<32-t|e>>>t,r1=(r,e,t)=>r<<64-t|e>>>t-32,n1=(r,e,t)=>r>>>t-32|e<<64-t;function We(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var m0=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),g0=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,y0=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),b0=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,x0=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),w0=(r,e,t,n,o,i)=>e+t+n+o+i+(r/2**32|0)|0;var R5=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Pt=new Uint32Array(64),li=class extends t1{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:a,H:c}=this;return[e,t,n,o,i,s,a,c]}set(e,t,n,o,i,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)Pt[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let h=Pt[f-15],d=Pt[f-2],p=Ve(h,7)^Ve(h,18)^h>>>3,E=Ve(d,17)^Ve(d,19)^d>>>10;Pt[f]=E+Pt[f-7]+p+Pt[f-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let h=Ve(a,6)^Ve(a,11)^Ve(a,25),d=u+h+f0(a,c,l)+R5[f]+Pt[f]|0,E=(Ve(n,2)^Ve(n,13)^Ve(n,22))+h0(n,o,i)|0;u=l,l=c,c=a,a=s+d|0,s=i,i=o,o=n,n=d+E|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,i,s,a,c,l,u)}roundClean(){lt(Pt)}destroy(){this.set(0,0,0,0,0,0,0,0),lt(this.buffer)}},fi=class extends li{A=dt[0]|0;B=dt[1]|0;C=dt[2]|0;D=dt[3]|0;E=dt[4]|0;F=dt[5]|0;G=dt[6]|0;H=dt[7]|0;constructor(){super(32)}};var E0=p0(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),L5=E0[0],k5=E0[1],Ct=new Uint32Array(80),Dt=new Uint32Array(80),hi=class extends t1{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:i,Cl:s,Dh:a,Dl:c,Eh:l,El:u,Fh:f,Fl:h,Gh:d,Gl:p,Hh:E,Hl:g}=this;return[e,t,n,o,i,s,a,c,l,u,f,h,d,p,E,g]}set(e,t,n,o,i,s,a,c,l,u,f,h,d,p,E,g){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=i|0,this.Cl=s|0,this.Dh=a|0,this.Dl=c|0,this.Eh=l|0,this.El=u|0,this.Fh=f|0,this.Fl=h|0,this.Gh=d|0,this.Gl=p|0,this.Hh=E|0,this.Hl=g|0}process(e,t){for(let w=0;w<16;w++,t+=4)Ct[w]=e.getUint32(t),Dt[w]=e.getUint32(t+=4);for(let w=16;w<80;w++){let A=Ct[w-15]|0,D=Dt[w-15]|0,N=Zt(A,D,1)^Zt(A,D,8)^ci(A,D,7),q=Wt(A,D,1)^Wt(A,D,8)^ui(A,D,7),S=Ct[w-2]|0,v=Dt[w-2]|0,M=Zt(S,v,19)^r1(S,v,61)^ci(S,v,6),H=Wt(S,v,19)^n1(S,v,61)^ui(S,v,6),R=y0(q,H,Dt[w-7],Dt[w-16]),b=b0(R,N,M,Ct[w-7],Ct[w-16]);Ct[w]=b|0,Dt[w]=R|0}let{Ah:n,Al:o,Bh:i,Bl:s,Ch:a,Cl:c,Dh:l,Dl:u,Eh:f,El:h,Fh:d,Fl:p,Gh:E,Gl:g,Hh:y,Hl:_}=this;for(let w=0;w<80;w++){let A=Zt(f,h,14)^Zt(f,h,18)^r1(f,h,41),D=Wt(f,h,14)^Wt(f,h,18)^n1(f,h,41),N=f&d^~f&E,q=h&p^~h&g,S=x0(_,D,q,k5[w],Dt[w]),v=w0(S,y,A,N,L5[w],Ct[w]),M=S|0,H=Zt(n,o,28)^r1(n,o,34)^r1(n,o,39),R=Wt(n,o,28)^n1(n,o,34)^n1(n,o,39),b=n&i^n&a^i&a,x=o&s^o&c^s&c;y=E|0,_=g|0,E=d|0,g=p|0,d=f|0,p=h|0,{h:f,l:h}=We(l|0,u|0,v|0,M|0),l=a|0,u=c|0,a=i|0,c=s|0,i=n|0,s=o|0;let m=m0(M,R,x);n=g0(m,v,H,b),o=m|0}({h:n,l:o}=We(this.Ah|0,this.Al|0,n|0,o|0)),{h:i,l:s}=We(this.Bh|0,this.Bl|0,i|0,s|0),{h:a,l:c}=We(this.Ch|0,this.Cl|0,a|0,c|0),{h:l,l:u}=We(this.Dh|0,this.Dl|0,l|0,u|0),{h:f,l:h}=We(this.Eh|0,this.El|0,f|0,h|0),{h:d,l:p}=We(this.Fh|0,this.Fl|0,d|0,p|0),{h:E,l:g}=We(this.Gh|0,this.Gl|0,E|0,g|0),{h:y,l:_}=We(this.Hh|0,this.Hl|0,y|0,_|0),this.set(n,o,i,s,a,c,l,u,f,h,d,p,E,g,y,_)}roundClean(){lt(Ct,Dt)}destroy(){lt(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},di=class extends hi{Ah=ye[0]|0;Al=ye[1]|0;Bh=ye[2]|0;Bl=ye[3]|0;Ch=ye[4]|0;Cl=ye[5]|0;Dh=ye[6]|0;Dl=ye[7]|0;Eh=ye[8]|0;El=ye[9]|0;Fh=ye[10]|0;Fl=ye[11]|0;Gh=ye[12]|0;Gl=ye[13]|0;Hh=ye[14]|0;Hl=ye[15]|0;constructor(){super(64)}};var v0=si(()=>new fi,ai(1));var S0=si(()=>new di,ai(3));var mi=BigInt(0),pi=BigInt(1);function pt(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new Error(t+"expected boolean, got type="+typeof r)}return r}function _0(r){if(typeof r=="bigint"){if(!W1(r))throw new Error("positive bigint expected, got "+r)}else Ze(r);return r}function o1(r){let e=_0(r).toString(16);return e.length&1?"0"+e:e}function I0(r){if(typeof r!="string")throw new Error("hex string expected, got "+typeof r);return r===""?mi:BigInt("0x"+r)}function Sr(r){return I0(ft(r))}function Xt(r){return I0(ft(J1(F(r)).reverse()))}function X1(r,e){Ze(e),r=_0(r);let t=ht(r.toString(16).padStart(e*2,"0"));if(t.length!==e)throw new Error("number too large");return t}function gi(r,e){return X1(r,e).reverse()}function J1(r){return Uint8Array.from(r)}var W1=r=>typeof r=="bigint"&&mi<=r;function B5(r,e,t){return W1(r)&&W1(e)&&W1(t)&&e<=r&&r<t}function i1(r,e,t,n){if(!B5(e,t,n))throw new Error("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function yi(r){let e;for(e=0;r>mi;r>>=pi,e+=1);return e}var s1=r=>(pi<<BigInt(r))-pi;function A0(r,e,t){if(Ze(r,"hashLen"),Ze(e,"qByteLen"),typeof t!="function")throw new Error("hmacFn must be a function");let n=g=>new Uint8Array(g),o=Uint8Array.of(),i=Uint8Array.of(0),s=Uint8Array.of(1),a=1e3,c=n(r),l=n(r),u=0,f=()=>{c.fill(1),l.fill(0),u=0},h=(...g)=>t(l,De(c,...g)),d=(g=o)=>{l=h(i,g),c=h(),g.length!==0&&(l=h(s,g),c=h())},p=()=>{if(u++>=a)throw new Error("drbg: tried max amount of iterations");let g=0,y=[];for(;g<e;){c=h();let _=c.slice();y.push(_),g+=c.length}return De(...y)};return(g,y)=>{f(),d(g);let _;for(;!(_=y(p()));)d();return f(),_}}function Rt(r,e={},t={}){if(!r||typeof r!="object")throw new Error("expected valid options object");function n(i,s,a){let c=r[i];if(a&&c===void 0)return;let l=typeof c;if(l!==s||c===null)throw new Error(`param "${i}" is invalid: expected ${s}, got ${l}`)}let o=(i,s)=>Object.entries(i).forEach(([a,c])=>n(a,c,s));o(e,!1),o(t,!0)}function _r(r){let e=new WeakMap;return(t,...n)=>{let o=e.get(t);if(o!==void 0)return o;let i=r(t,...n);return e.set(t,i),i}}var Ie=BigInt(0),de=BigInt(1),Jt=BigInt(2),C0=BigInt(3),D0=BigInt(4),R0=BigInt(5),O5=BigInt(7),L0=BigInt(8),N5=BigInt(9),k0=BigInt(16);function ce(r,e){let t=r%e;return t>=Ie?t:e+t}function re(r,e,t){let n=r;for(;e-- >Ie;)n*=n,n%=t;return n}function T0(r,e){if(r===Ie)throw new Error("invert: expected non-zero number");if(e<=Ie)throw new Error("invert: expected positive modulus, got "+e);let t=ce(r,e),n=e,o=Ie,i=de,s=de,a=Ie;for(;t!==Ie;){let l=n/t,u=n%t,f=o-s*l,h=i-a*l;n=t,t=u,o=s,i=a,s=f,a=h}if(n!==de)throw new Error("invert: does not exist");return ce(o,e)}function xi(r,e,t){if(!r.eql(r.sqr(e),t))throw new Error("Cannot find square root")}function B0(r,e){let t=(r.ORDER+de)/D0,n=r.pow(e,t);return xi(r,n,e),n}function M5(r,e){let t=(r.ORDER-R0)/L0,n=r.mul(e,Jt),o=r.pow(n,t),i=r.mul(e,o),s=r.mul(r.mul(i,Jt),o),a=r.mul(i,r.sub(s,r.ONE));return xi(r,a,e),a}function U5(r){let e=Ir(r),t=O0(r),n=t(e,e.neg(e.ONE)),o=t(e,n),i=t(e,e.neg(n)),s=(r+O5)/k0;return(a,c)=>{let l=a.pow(c,s),u=a.mul(l,n),f=a.mul(l,o),h=a.mul(l,i),d=a.eql(a.sqr(u),c),p=a.eql(a.sqr(f),c);l=a.cmov(l,u,d),u=a.cmov(h,f,p);let E=a.eql(a.sqr(u),c),g=a.cmov(l,u,E);return xi(a,g,c),g}}function O0(r){if(r<C0)throw new Error("sqrt is not defined for small field");let e=r-de,t=0;for(;e%Jt===Ie;)e/=Jt,t++;let n=Jt,o=Ir(r);for(;P0(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return B0;let i=o.pow(n,e),s=(e+de)/Jt;return function(c,l){if(c.is0(l))return l;if(P0(c,l)!==1)throw new Error("Cannot find square root");let u=t,f=c.mul(c.ONE,i),h=c.pow(l,e),d=c.pow(l,s);for(;!c.eql(h,c.ONE);){if(c.is0(h))return c.ZERO;let p=1,E=c.sqr(h);for(;!c.eql(E,c.ONE);)if(p++,E=c.sqr(E),p===u)throw new Error("Cannot find square root");let g=de<<BigInt(u-p-1),y=c.pow(f,g);u=p,f=c.sqr(y),h=c.mul(h,f),d=c.mul(d,y)}return d}}function K5(r){return r%D0===C0?B0:r%L0===R0?M5:r%k0===N5?U5(r):O0(r)}var N0=(r,e)=>(ce(r,e)&de)===de,q5=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function wi(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=q5.reduce((n,o)=>(n[o]="function",n),e);return Rt(r,t),r}function F5(r,e,t){if(t<Ie)throw new Error("invalid exponent, negatives unsupported");if(t===Ie)return r.ONE;if(t===de)return e;let n=r.ONE,o=e;for(;t>Ie;)t&de&&(n=r.mul(n,o)),o=r.sqr(o),t>>=de;return n}function a1(r,e,t=!1){let n=new Array(e.length).fill(t?r.ZERO:void 0),o=e.reduce((s,a,c)=>r.is0(a)?s:(n[c]=s,r.mul(s,a)),r.ONE),i=r.inv(o);return e.reduceRight((s,a,c)=>r.is0(a)?s:(n[c]=r.mul(s,n[c]),r.mul(s,a)),i),n}function P0(r,e){let t=(r.ORDER-de)/Jt,n=r.pow(e,t),o=r.eql(n,r.ONE),i=r.eql(n,r.ZERO),s=r.eql(n,r.neg(r.ONE));if(!o&&!i&&!s)throw new Error("invalid Legendre symbol result");return o?1:i?0:-1}function V5(r,e){e!==void 0&&Ze(e);let t=e!==void 0?e:r.toString(2).length,n=Math.ceil(t/8);return{nBitLength:t,nByteLength:n}}var bi=class{ORDER;BITS;BYTES;isLE;ZERO=Ie;ONE=de;_lengths;_sqrt;_mod;constructor(e,t={}){if(e<=Ie)throw new Error("invalid field: expected ORDER > 0, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&(this.sqrt=t.sqrt),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=t.allowedLengths?.slice()),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:i}=V5(e,n);if(i>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=i,this._sqrt=void 0,Object.preventExtensions(this)}create(e){return ce(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof e);return Ie<=e&&e<this.ORDER}is0(e){return e===Ie}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&de)===de}neg(e){return ce(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return ce(e*e,this.ORDER)}add(e,t){return ce(e+t,this.ORDER)}sub(e,t){return ce(e-t,this.ORDER)}mul(e,t){return ce(e*t,this.ORDER)}pow(e,t){return F5(this,e,t)}div(e,t){return ce(e*T0(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return T0(e,this.ORDER)}sqrt(e){return this._sqrt||(this._sqrt=K5(this.ORDER)),this._sqrt(this,e)}toBytes(e){return this.isLE?gi(e,this.BYTES):X1(e,this.BYTES)}fromBytes(e,t=!1){F(e);let{_lengths:n,BYTES:o,isLE:i,ORDER:s,_mod:a}=this;if(n){if(!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let l=new Uint8Array(o);l.set(e,i?0:l.length-e.length),e=l}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=i?Xt(e):Sr(e);if(a&&(c=ce(c,s)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return a1(this,e)}cmov(e,t,n){return n?t:e}};function Ir(r,e={}){return new bi(r,e)}function M0(r){if(typeof r!="bigint")throw new Error("field order must be bigint");let e=r.toString(2).length;return Math.ceil(e/8)}function Ei(r){let e=M0(r);return e+Math.ceil(e/2)}function vi(r,e,t=!1){F(r);let n=r.length,o=M0(e),i=Ei(e);if(n<16||n<i||n>1024)throw new Error("expected "+i+"-1024 bytes of input, got "+n);let s=t?Xt(r):Sr(r),a=ce(s,e-de)+de;return t?gi(a,o):X1(a,o)}var Ar=BigInt(0),er=BigInt(1);function c1(r,e){let t=e.negate();return r?t:e}function tr(r,e){let t=a1(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function F0(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Si(r,e){F0(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,i=s1(r),s=BigInt(r);return{windows:t,windowSize:n,mask:i,maxNumber:o,shiftBy:s}}function U0(r,e,t){let{windowSize:n,mask:o,maxNumber:i,shiftBy:s}=t,a=Number(r&o),c=r>>s;a>n&&(a-=i,c+=er);let l=e*n,u=l+Math.abs(a)-1,f=a===0,h=a<0,d=e%2!==0;return{nextN:c,offset:u,isZero:f,isNeg:h,isNegF:d,offsetF:l}}var _i=new WeakMap,V0=new WeakMap;function Ii(r){return V0.get(r)||1}function K0(r){if(r!==Ar)throw new Error("invalid wNAF")}var Tr=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>Ar;)t&er&&(n=n.add(o)),o=o.double(),t>>=er;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=Si(t,this.bits),i=[],s=e,a=s;for(let c=0;c<n;c++){a=s,i.push(a);for(let l=1;l<o;l++)a=a.add(s),i.push(a);s=a.double()}return i}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,i=this.BASE,s=Si(e,this.bits);for(let a=0;a<s.windows;a++){let{nextN:c,offset:l,isZero:u,isNeg:f,isNegF:h,offsetF:d}=U0(n,a,s);n=c,u?i=i.add(c1(h,t[d])):o=o.add(c1(f,t[l]))}return K0(n),{p:o,f:i}}wNAFUnsafe(e,t,n,o=this.ZERO){let i=Si(e,this.bits);for(let s=0;s<i.windows&&n!==Ar;s++){let{nextN:a,offset:c,isZero:l,isNeg:u}=U0(n,s,i);if(n=a,!l){let f=t[c];o=o.add(u?f.negate():f)}}return K0(n),o}getPrecomputes(e,t,n){let o=_i.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),_i.set(t,o))),o}cached(e,t,n){let o=Ii(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let i=Ii(e);return i===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(i,this.getPrecomputes(i,e,n),t,o)}createCache(e,t){F0(t,this.bits),V0.set(e,t),_i.delete(e)}hasCache(e){return Ii(e)!==1}};function H0(r,e,t,n){let o=e,i=r.ZERO,s=r.ZERO;for(;t>Ar||n>Ar;)t&er&&(i=i.add(o)),n&er&&(s=s.add(o)),o=o.double(),t>>=er,n>>=er;return{p1:i,p2:s}}function q0(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return wi(e),e}else return Ir(r,{isLE:t})}function en(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let l=e[c];if(!(typeof l=="bigint"&&l>Ar))throw new Error(`CURVE.${c} must be positive bigint`)}let o=q0(e.p,t.Fp,n),i=q0(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:i}}function tn(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var Lt=BigInt(0),pe=BigInt(1),Ai=BigInt(2),H5=BigInt(8);function z5(r,e,t,n){let o=r.sqr(t),i=r.sqr(n),s=r.add(r.mul(e.a,o),i),a=r.add(r.ONE,r.mul(e.d,r.mul(o,i)));return r.eql(s,a)}function z0(r,e={}){let t=en("edwards",r,e,e.FpFnLE),{Fp:n,Fn:o}=t,i=t.CURVE,{h:s}=i;Rt(e,{},{uvRatio:"function"});let a=Ai<<BigInt(o.BYTES*8)-pe,c=g=>n.create(g),l=e.uvRatio||((g,y)=>{try{return{isValid:!0,value:n.sqrt(n.div(g,y))}}catch{return{isValid:!1,value:Lt}}});if(!z5(n,i,i.Gx,i.Gy))throw new Error("bad curve params: generator point");function u(g,y,_=!1){let w=_?pe:Lt;return i1("coordinate "+g,y,w,a),y}function f(g){if(!(g instanceof p))throw new Error("EdwardsPoint expected")}let h=_r((g,y)=>{let{X:_,Y:w,Z:A}=g,D=g.is0();y==null&&(y=D?H5:n.inv(A));let N=c(_*y),q=c(w*y),S=n.mul(A,y);if(D)return{x:Lt,y:pe};if(S!==pe)throw new Error("invZ was invalid");return{x:N,y:q}}),d=_r(g=>{let{a:y,d:_}=i;if(g.is0())throw new Error("bad point: ZERO");let{X:w,Y:A,Z:D,T:N}=g,q=c(w*w),S=c(A*A),v=c(D*D),M=c(v*v),H=c(q*y),R=c(v*c(H+S)),b=c(M+c(_*c(q*S)));if(R!==b)throw new Error("bad point: equation left != right (1)");let x=c(w*A),m=c(D*N);if(x!==m)throw new Error("bad point: equation left != right (2)");return!0});class p{static BASE=new p(i.Gx,i.Gy,pe,c(i.Gx*i.Gy));static ZERO=new p(Lt,pe,pe,Lt);static Fp=n;static Fn=o;X;Y;Z;T;constructor(y,_,w,A){this.X=u("x",y),this.Y=u("y",_),this.Z=u("z",w,!0),this.T=u("t",A),Object.freeze(this)}static CURVE(){return i}static fromAffine(y){if(y instanceof p)throw new Error("extended point not allowed");let{x:_,y:w}=y||{};return u("x",_),u("y",w),new p(_,w,pe,c(_*w))}static fromBytes(y,_=!1){let w=n.BYTES,{a:A,d:D}=i;y=J1(F(y,w,"point")),pt(_,"zip215");let N=J1(y),q=y[w-1];N[w-1]=q&-129;let S=Xt(N),v=_?a:n.ORDER;i1("point.y",S,Lt,v);let M=c(S*S),H=c(M-pe),R=c(D*M-A),{isValid:b,value:x}=l(H,R);if(!b)throw new Error("bad point: invalid y coordinate");let m=(x&pe)===pe,I=(q&128)!==0;if(!_&&x===Lt&&I)throw new Error("bad point: x=0 and x_0=1");return I!==m&&(x=c(-x)),p.fromAffine({x,y:S})}static fromHex(y,_=!1){return p.fromBytes(ht(y),_)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(y=8,_=!0){return E.createCache(this,y),_||this.multiply(Ai),this}assertValidity(){d(this)}equals(y){f(y);let{X:_,Y:w,Z:A}=this,{X:D,Y:N,Z:q}=y,S=c(_*q),v=c(D*A),M=c(w*q),H=c(N*A);return S===v&&M===H}is0(){return this.equals(p.ZERO)}negate(){return new p(c(-this.X),this.Y,this.Z,c(-this.T))}double(){let{a:y}=i,{X:_,Y:w,Z:A}=this,D=c(_*_),N=c(w*w),q=c(Ai*c(A*A)),S=c(y*D),v=_+w,M=c(c(v*v)-D-N),H=S+N,R=H-q,b=S-N,x=c(M*R),m=c(H*b),I=c(M*b),T=c(R*H);return new p(x,m,T,I)}add(y){f(y);let{a:_,d:w}=i,{X:A,Y:D,Z:N,T:q}=this,{X:S,Y:v,Z:M,T:H}=y,R=c(A*S),b=c(D*v),x=c(q*w*H),m=c(N*M),I=c((A+D)*(S+v)-R-b),T=m-x,C=m+x,L=c(b-_*R),P=c(I*T),B=c(C*L),K=c(I*L),oe=c(T*C);return new p(P,B,oe,K)}subtract(y){return this.add(y.negate())}multiply(y){if(!o.isValidNot0(y))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:_,f:w}=E.cached(this,y,A=>tr(p,A));return tr(p,[_,w])[0]}multiplyUnsafe(y,_=p.ZERO){if(!o.isValid(y))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return y===Lt?p.ZERO:this.is0()||y===pe?this:E.unsafe(this,y,w=>tr(p,w),_)}isSmallOrder(){return this.multiplyUnsafe(s).is0()}isTorsionFree(){return E.unsafe(this,i.n).is0()}toAffine(y){return h(this,y)}clearCofactor(){return s===pe?this:this.multiplyUnsafe(s)}toBytes(){let{x:y,y:_}=this.toAffine(),w=n.toBytes(_);return w[w.length-1]|=y&pe?128:0,w}toHex(){return ft(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let E=new Tr(p,o.BITS);return p.BASE.precompute(8),p}function $0(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');Rt(t,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=t,{BASE:o,Fp:i,Fn:s}=r,a=t.randomBytes||vr,c=t.adjustScalarBytes||(S=>S),l=t.domain||((S,v,M)=>{if(pt(M,"phflag"),v.length||M)throw new Error("Contexts/pre-hash are not supported");return S});function u(S){return s.create(Xt(S))}function f(S){let v=w.secretKey;F(S,w.secretKey,"secretKey");let M=F(e(S),2*v,"hashedSecretKey"),H=c(M.slice(0,v)),R=M.slice(v,2*v),b=u(H);return{head:H,prefix:R,scalar:b}}function h(S){let{head:v,prefix:M,scalar:H}=f(S),R=o.multiply(H),b=R.toBytes();return{head:v,prefix:M,scalar:H,point:R,pointBytes:b}}function d(S){return h(S).pointBytes}function p(S=Uint8Array.of(),...v){let M=De(...v);return u(e(l(M,F(S,void 0,"context"),!!n)))}function E(S,v,M={}){S=F(S,void 0,"message"),n&&(S=n(S));let{prefix:H,scalar:R,pointBytes:b}=h(v),x=p(M.context,H,S),m=o.multiply(x).toBytes(),I=p(M.context,m,b,S),T=s.create(x+I*R);if(!s.isValid(T))throw new Error("sign failed: invalid s");let C=De(m,s.toBytes(T));return F(C,w.signature,"result")}let g={zip215:!0};function y(S,v,M,H=g){let{context:R,zip215:b}=H,x=w.signature;S=F(S,x,"signature"),v=F(v,void 0,"message"),M=F(M,w.publicKey,"publicKey"),b!==void 0&&pt(b,"zip215"),n&&(v=n(v));let m=x/2,I=S.subarray(0,m),T=Xt(S.subarray(m,x)),C,L,P;try{C=r.fromBytes(M,b),L=r.fromBytes(I,b),P=o.multiplyUnsafe(T)}catch{return!1}if(!b&&C.isSmallOrder())return!1;let B=p(R,L.toBytes(),C.toBytes(),v);return L.add(C.multiplyUnsafe(B)).subtract(P).clearCofactor().is0()}let _=i.BYTES,w={secretKey:_,publicKey:_,signature:2*_,seed:_};function A(S=a(w.seed)){return F(S,w.seed,"seed")}function D(S){return Qt(S)&&S.length===s.BYTES}function N(S,v){try{return!!r.fromBytes(S,v)}catch{return!1}}let q={getExtendedPublicKey:h,randomSecretKey:A,isValidSecretKey:D,isValidPublicKey:N,toMontgomery(S){let{y:v}=r.fromBytes(S),M=w.publicKey,H=M===32;if(!H&&M!==57)throw new Error("only defined for 25519 and 448");let R=H?i.div(pe+v,pe-v):i.div(v-pe,v+pe);return i.toBytes(R)},toMontgomerySecret(S){let v=w.secretKey;F(S,v);let M=e(S.subarray(0,v));return c(M).subarray(0,v)}};return Object.freeze({keygen:tn(A,d),getPublicKey:d,sign:E,verify:y,utils:q,Point:r,lengths:w})}var $5=BigInt(1),G0=BigInt(2);var G5=BigInt(5),Y5=BigInt(8),Ti=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),j5={p:Ti,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:Y5,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Q5(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),i=Ti,a=r*r%i*r%i,c=re(a,G0,i)*a%i,l=re(c,$5,i)*r%i,u=re(l,G5,i)*l%i,f=re(u,e,i)*u%i,h=re(f,t,i)*f%i,d=re(h,n,i)*h%i,p=re(d,o,i)*d%i,E=re(p,o,i)*d%i,g=re(E,e,i)*u%i;return{pow_p_5_8:re(g,G0,i)*r%i,b2:a}}function Z5(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var Y0=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function W5(r,e){let t=Ti,n=ce(e*e*e,t),o=ce(n*n*e,t),i=Q5(r*o).pow_p_5_8,s=ce(r*n*i,t),a=ce(e*s*s,t),c=s,l=ce(s*Y0,t),u=a===r,f=a===ce(-r,t),h=a===ce(-r*Y0,t);return u&&(s=c),(f||h)&&(s=l),N0(s,t)&&(s=ce(-s,t)),{isValid:u||f,value:s}}var X5=z0(j5,{uvRatio:W5});function J5(r){return $0(X5,S0,Object.assign({adjustScalarBytes:Z5},r))}var j0=J5({});var rn=32;var Pi,ea=(async()=>{try{return await Oe.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();async function ta(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await Oe.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Oe.get().subtle.verify({name:"Ed25519"},n,e,t instanceof Uint8Array?t:t.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function ra(r,e,t){return j0.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function Q0(r,e,t){return Pi==null&&(Pi=await ea),Pi?ta(r,e,t):ra(r,e,t)}function nn(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var on=class{type="Ed25519";raw;constructor(e){this.raw=Ci(e,rn)}toMultihash(){return Fe.digest(Tt(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=Q0(this.raw,t,e);return nn(o)?o.then(i=>(n?.signal?.throwIfAborted(),i)):o}};function Di(r){return r=Ci(r,rn),new on(r)}function Ci(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new V(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var oa=Math.pow(2,7),ia=Math.pow(2,14),sa=Math.pow(2,21),Ri=Math.pow(2,28),Li=Math.pow(2,35),ki=Math.pow(2,42),Bi=Math.pow(2,49),j=128,ve=127;function Re(r){if(r<oa)return 1;if(r<ia)return 2;if(r<sa)return 3;if(r<Ri)return 4;if(r<Li)return 5;if(r<ki)return 6;if(r<Bi)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Pr(r,e,t=0){switch(Re(r)){case 8:e[t++]=r&255|j,r/=128;case 7:e[t++]=r&255|j,r/=128;case 6:e[t++]=r&255|j,r/=128;case 5:e[t++]=r&255|j,r/=128;case 4:e[t++]=r&255|j,r>>>=7;case 3:e[t++]=r&255|j,r>>>=7;case 2:e[t++]=r&255|j,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function aa(r,e,t=0){switch(Re(r)){case 8:e.set(t++,r&255|j),r/=128;case 7:e.set(t++,r&255|j),r/=128;case 6:e.set(t++,r&255|j),r/=128;case 5:e.set(t++,r&255|j),r/=128;case 4:e.set(t++,r&255|j),r>>>=7;case 3:e.set(t++,r&255|j),r>>>=7;case 2:e.set(t++,r&255|j),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function Oi(r,e){let t=r[e],n=0;if(n+=t&ve,t<j||(t=r[e+1],n+=(t&ve)<<7,t<j)||(t=r[e+2],n+=(t&ve)<<14,t<j)||(t=r[e+3],n+=(t&ve)<<21,t<j)||(t=r[e+4],n+=(t&ve)*Ri,t<j)||(t=r[e+5],n+=(t&ve)*Li,t<j)||(t=r[e+6],n+=(t&ve)*ki,t<j)||(t=r[e+7],n+=(t&ve)*Bi,t<j))return n;throw new RangeError("Could not decode varint")}function ca(r,e){let t=r.get(e),n=0;if(n+=t&ve,t<j||(t=r.get(e+1),n+=(t&ve)<<7,t<j)||(t=r.get(e+2),n+=(t&ve)<<14,t<j)||(t=r.get(e+3),n+=(t&ve)<<21,t<j)||(t=r.get(e+4),n+=(t&ve)*Ri,t<j)||(t=r.get(e+5),n+=(t&ve)*Li,t<j)||(t=r.get(e+6),n+=(t&ve)*ki,t<j)||(t=r.get(e+7),n+=(t&ve)*Bi,t<j))return n;throw new RangeError("Could not decode varint")}function sn(r,e,t=0){return e==null&&(e=Ee(Re(r))),e instanceof Uint8Array?Pr(r,e,t):aa(r,e,t)}function rr(r,e=0){return r instanceof Uint8Array?Oi(r,e):ca(r,e)}var Ni=new Float32Array([-0]),kt=new Uint8Array(Ni.buffer);function W0(r,e,t){Ni[0]=r,e[t]=kt[0],e[t+1]=kt[1],e[t+2]=kt[2],e[t+3]=kt[3]}function X0(r,e){return kt[0]=r[e],kt[1]=r[e+1],kt[2]=r[e+2],kt[3]=r[e+3],Ni[0]}var Mi=new Float64Array([-0]),Se=new Uint8Array(Mi.buffer);function J0(r,e,t){Mi[0]=r,e[t]=Se[0],e[t+1]=Se[1],e[t+2]=Se[2],e[t+3]=Se[3],e[t+4]=Se[4],e[t+5]=Se[5],e[t+6]=Se[6],e[t+7]=Se[7]}function e3(r,e){return Se[0]=r[e],Se[1]=r[e+1],Se[2]=r[e+2],Se[3]=r[e+3],Se[4]=r[e+4],Se[5]=r[e+5],Se[6]=r[e+6],Se[7]=r[e+7],Mi[0]}var ua=BigInt(Number.MAX_SAFE_INTEGER),la=BigInt(Number.MIN_SAFE_INTEGER),Be=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return nr;if(e<ua&&e>la)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>t3&&(o=0n,++n>t3&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return nr;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):nr}},nr=new Be(0,0);nr.toBigInt=function(){return 0n};nr.zzEncode=nr.zzDecode=function(){return this};nr.length=function(){return 1};var t3=4294967296n;function r3(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function n3(r,e,t){if(t-e<1)return"";let o,i=[],s=0,a;for(;e<t;)a=r[e++],a<128?i[s++]=a:a>191&&a<224?i[s++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[s++]=55296+(a>>10),i[s++]=56320+(a&1023)):i[s++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,s>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,i)),s=0);return o!=null?(s>0&&o.push(String.fromCharCode.apply(String,i.slice(0,s))),o.join("")):String.fromCharCode.apply(String,i.slice(0,s))}function Ui(r,e,t){let n=t,o,i;for(let s=0;s<r.length;++s)o=r.charCodeAt(s),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((i=r.charCodeAt(s+1))&64512)===56320?(o=65536+((o&1023)<<10)+(i&1023),++s,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function He(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function cn(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var Ki=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,He(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw He(this,4);return cn(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw He(this,4);return cn(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw He(this,4);let e=X0(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw He(this,4);let e=e3(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw He(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return n3(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw He(this,e);this.pos+=e}else do if(this.pos>=this.len)throw He(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new Be(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw He(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw He(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw He(this,8);let e=cn(this.buf,this.pos+=4),t=cn(this.buf,this.pos+=4);return new Be(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=Oi(this.buf,this.pos);return this.pos+=Re(e),e}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 u1(r){return new Ki(r instanceof Uint8Array?r:r.subarray())}function Xe(r,e,t){let n=u1(r);return e.decode(n,void 0,t)}function qi(r){let e=r??8192,t=e>>>1,n,o=e;return function(s){if(s<1||s>t)return Ee(s);o+s>e&&(n=Ee(e),o=0);let a=n.subarray(o,o+=s);return(o&7)!==0&&(o=(o|7)+1),a}}var or=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function Fi(){}var Hi=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},fa=qi();function ha(r){return globalThis.Buffer!=null?Ee(r):fa(r)}var f1=class{len;head;tail;states;constructor(){this.len=0,this.head=new or(Fi,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new or(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new zi((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(un,10,Be.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Be.fromBigInt(e);return this._push(un,t.length(),t)}uint64Number(e){return this._push(Pr,Re(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=Be.fromBigInt(e).zzEncode();return this._push(un,t.length(),t)}sint64Number(e){let t=Be.fromNumber(e).zzEncode();return this._push(un,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(Vi,1,e?1:0)}fixed32(e){return this._push(l1,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Be.fromBigInt(e);return this._push(l1,4,t.lo)._push(l1,4,t.hi)}fixed64Number(e){let t=Be.fromNumber(e);return this._push(l1,4,t.lo)._push(l1,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(W0,4,e)}double(e){return this._push(J0,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(Vi,1,0):this.uint32(t)._push(pa,t,e)}string(e){let t=r3(e);return t!==0?this.uint32(t)._push(Ui,t,e):this._push(Vi,1,0)}fork(){return this.states=new Hi(this),this.head=this.tail=new or(Fi,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 or(Fi,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=ha(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function Vi(r,e,t){e[t]=r&255}function da(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var zi=class extends or{next;constructor(e,t){super(da,e,t),this.next=void 0}};function un(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function l1(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function pa(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(f1.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(ma,e,r),this},f1.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(ga,e,r),this});function ma(r,e,t){e.set(r,t)}function ga(r,e,t){r.length<40?Ui(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(U(r),t)}function $i(){return new f1}function Je(r,e){let t=$i();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}function*et(r,e,t){let n=u1(r);yield*e.stream(n,void 0,"$",t)}var ln={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5};function fn(r,e,t,n,o){return{name:r,type:e,encode:t,decode:n,stream:o}}function Cr(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(s,a){let c=e(s);a.int32(c)},n=function(s){let a=s.int32();return e(a)},o=function*(s){let a=s.int32();yield e(a)};return fn("enum",ln.VARINT,t,n,o)}function tt(r,e,t){return fn("message",ln.LENGTH_DELIMITED,r,e,t)}var mt=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var ne;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(ne||(ne={}));var Gi;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(Gi||(Gi={}));(function(r){r.codec=()=>Cr(Gi)})(ne||(ne={}));var rt;(function(r){let e;r.codec=()=>(e==null&&(e=tt((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.Type!=null&&(s.uint32(8),ne.codec().encode(i.Type,s)),i.Data!=null&&(s.uint32(18),s.bytes(i.Data)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.Type=ne.codec().decode(i);break}case 2:{c.Data=i.bytes();break}default:{i.skipType(u&7);break}}}return c},function*(i,s,a,c={}){let l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Type`,value:ne.codec().decode(i)};break}case 2:{yield{field:`${a}.Data`,value:i.bytes()};break}default:{i.skipType(u&7);break}}}})),e);function t(i){return Je(i,r.codec())}r.encode=t;function n(i,s){return Xe(i,r.codec(),s)}r.decode=n;function o(i,s){return et(i,r.codec(),s)}r.stream=o})(rt||(rt={}));var Yi;(function(r){let e;r.codec=()=>(e==null&&(e=tt((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.Type!=null&&(s.uint32(8),ne.codec().encode(i.Type,s)),i.Data!=null&&(s.uint32(18),s.bytes(i.Data)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.Type=ne.codec().decode(i);break}case 2:{c.Data=i.bytes();break}default:{i.skipType(u&7);break}}}return c},function*(i,s,a,c={}){let l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{yield{field:`${a}.Type`,value:ne.codec().decode(i)};break}case 2:{yield{field:`${a}.Data`,value:i.bytes()};break}default:{i.skipType(u&7);break}}}})),e);function t(i){return Je(i,r.codec())}r.encode=t;function n(i,s){return Xe(i,r.codec(),s)}r.decode=n;function o(i,s){return et(i,r.codec(),s)}r.stream=o})(Yi||(Yi={}));function ya(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in r&&r.BYTES_PER_ELEMENT===1}function ba(r,e=""){if(typeof r!="number"){let t=e&&`"${e}" `;throw new TypeError(`${t}expected number, got ${typeof r}`)}if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new RangeError(`${t}expected integer >= 0, got ${r}`)}}function ji(r,e,t=""){let n=ya(r),o=r?.length,i=e!==void 0;if(!n||i&&o!==e){let s=t&&`"${t}" `,a=i?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`,l=s+"expected Uint8Array"+a+", got "+c;throw n?new RangeError(l):new TypeError(l)}return r}function Qi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function s3(r,e){ji(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new RangeError('"digestInto() output" expected to be of length >='+t)}function h1(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function hn(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function ze(r,e){return r<<32-e|r>>>e}function a3(r,e={}){let t=(o,i)=>r(i).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.canXOF=n.canXOF,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function c3(r=32){ba(r,"bytesLength");let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(r>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${r}`);return e.getRandomValues(new Uint8Array(r))}var u3=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function dn(r){if(isNaN(r)||r<=0)throw new V("random bytes length must be a Number bigger than 0");return c3(r)}var p1={};Ae(p1,{MAX_RSA_KEY_SIZE:()=>Xi,generateRSAKeyPair:()=>m3,jwkToJWKKeyPair:()=>g3,jwkToPkcs1:()=>Sa,jwkToPkix:()=>rs,jwkToRSAPrivateKey:()=>ss,pkcs1MessageToJwk:()=>es,pkcs1MessageToRSAPrivateKey:()=>ns,pkcs1ToJwk:()=>va,pkcs1ToRSAPrivateKey:()=>p3,pkixMessageToJwk:()=>ts,pkixMessageToRSAPublicKey:()=>is,pkixToJwk:()=>_a,pkixToRSAPublicKey:()=>os});function l3(r,e,t){return r&e^~r&t}function f3(r,e,t){return r&e^r&t^e&t}var pn=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=hn(this.buffer)}update(e){Qi(this),ji(e);let{view:t,buffer:n,blockLen:o}=this,i=e.length;for(let s=0;s<i;){let a=Math.min(o-this.pos,i-s);if(a===o){let c=hn(e);for(;o<=i-s;s+=o)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Qi(this),s3(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;t[s++]=128,h1(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(n,0),s=0);for(let f=s;f<o;f++)t[f]=0;n.setBigUint64(o-8,BigInt(this.length*8),i),this.process(n,0);let a=hn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=c/4,u=this.get();if(l>u.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<l;f++)a.setUint32(4*f,u[f],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:i,destroyed:s,pos:a}=this;return e.destroyed=s,e.finished=i,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},gt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var xa=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Bt=new Uint32Array(64),Zi=class extends pn{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:a,H:c}=this;return[e,t,n,o,i,s,a,c]}set(e,t,n,o,i,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)Bt[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let h=Bt[f-15],d=Bt[f-2],p=ze(h,7)^ze(h,18)^h>>>3,E=ze(d,17)^ze(d,19)^d>>>10;Bt[f]=E+Bt[f-7]+p+Bt[f-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:c,G:l,H:u}=this;for(let f=0;f<64;f++){let h=ze(a,6)^ze(a,11)^ze(a,25),d=u+h+l3(a,c,l)+xa[f]+Bt[f]|0,E=(ze(n,2)^ze(n,13)^ze(n,22))+f3(n,o,i)|0;u=l,l=c,c=a,a=s+d|0,s=i,i=o,o=n,n=d+E|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,l=l+this.G|0,u=u+this.H|0,this.set(n,o,i,s,a,c,l,u)}roundClean(){h1(Bt)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),h1(this.buffer)}},Wi=class extends Zi{A=gt[0]|0;B=gt[1]|0;C=gt[2]|0;D=gt[3]|0;E=gt[4]|0;F=gt[5]|0;G=gt[6]|0;H=gt[7]|0;constructor(){super(32)}};var mn=a3(()=>new Wi,u3(1));var Dr=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=p1.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return W.createV1(114,this._multihash)}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){return d3(this.jwk,t,e,n)}},d1=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=p1.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}sign(e,t){return h3(this.jwk,e,t)}};var Xi=8192,Ji=18,wa=1062,Ea=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function va(r){let e=ct(r);return es(e)}function es(r){return{n:O(r[1],"base64url"),e:O(r[2],"base64url"),d:O(r[3],"base64url"),p:O(r[4],"base64url"),q:O(r[5],"base64url"),dp:O(r[6],"base64url"),dq:O(r[7],"base64url"),qi:O(r[8],"base64url"),kty:"RSA"}}function Sa(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new V("JWK was missing components");return At([Ce(Uint8Array.from([0])),Ce(U(r.n,"base64url")),Ce(U(r.e,"base64url")),Ce(U(r.d,"base64url")),Ce(U(r.p,"base64url")),Ce(U(r.q,"base64url")),Ce(U(r.dp,"base64url")),Ce(U(r.dq,"base64url")),Ce(U(r.qi,"base64url"))]).subarray()}function _a(r){let e=ct(r,{offset:0});return ts(e)}function ts(r){let e=ct(r[1],{offset:0});return{kty:"RSA",n:O(e[0],"base64url"),e:O(e[1],"base64url")}}function rs(r){if(r.n==null||r.e==null)throw new V("JWK was missing components");return At([Ea,Y1(At([Ce(U(r.n,"base64url")),Ce(U(r.e,"base64url"))]))]).subarray()}function p3(r){let e=ct(r);return ns(e)}function ns(r){let e=es(r);return ss(e)}function os(r,e){if(r.byteLength>=wa)throw new it("Key size is too large");let t=ct(r,{offset:0});return is(t,r,e)}function is(r,e,t){let n=ts(r);if(t==null){let o=mn(rt.encode({Type:ne.RSA,Data:e}));t=Qe(Ji,o)}return new Dr(n,t)}function ss(r){if(b3(r)>Xi)throw new V("Key size is too large");let e=g3(r),t=mn(rt.encode({Type:ne.RSA,Data:rs(e.publicKey)})),n=Qe(Ji,t);return new d1(e.privateKey,new Dr(e.publicKey,n))}async function m3(r){if(r>Xi)throw new V("Key size is too large");let e=await y3(r),t=mn(rt.encode({Type:ne.RSA,Data:rs(e.publicKey)})),n=Qe(Ji,t);return new d1(e.privateKey,new Dr(e.publicKey,n))}function g3(r){if(r==null)throw new V("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function y3(r,e){let t=await Oe.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await Ia(t,e);return{privateKey:n[0],publicKey:n[1]}}async function h3(r,e,t){let n=await Oe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await Oe.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function d3(r,e,t,n){let o=await Oe.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let i=await Oe.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,t instanceof Uint8Array?t:t.subarray());return n?.signal?.throwIfAborted(),i}async function Ia(r,e){if(r.privateKey==null||r.publicKey==null)throw new V("Private and public key are required");let t=await Promise.all([Oe.get().subtle.exportKey("jwk",r.privateKey),Oe.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function b3(r){if(r.kty!=="RSA")throw new V("invalid key type");if(r.n==null)throw new V("invalid key modulus");return U(r.n,"base64url").length*8}var gn=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(e,t){if(j1(e),F(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=e.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),lt(o)}update(e){return Er(this),this.iHash.update(e),this}digestInto(e){Er(this),F(e,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(e),this.oHash.update(e),this.oHash.digestInto(e),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:i,blockLen:s,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=i,e.blockLen=s,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},as=(r,e,t)=>new gn(r,e).update(t).digest();as.create=(r,e)=>new gn(r,e);var x3=(r,e)=>(r+(r>=0?e:-e)/w3)/e;function Aa(r,e,t){let[[n,o],[i,s]]=e,a=x3(s*r,t),c=x3(-o*r,t),l=r-a*n-c*i,u=-a*o-c*s,f=l<yt,h=u<yt;f&&(l=-l),h&&(u=-u);let d=s1(Math.ceil(yi(t)/2))+Rr;if(l<yt||l>=d||u<yt||u>=d)throw new Error("splitScalar (endomorphism): failed, k="+r);return{k1neg:f,k1:l,k2neg:h,k2:u}}function us(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function cs(r,e){let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return pt(t.lowS,"lowS"),pt(t.prehash,"prehash"),t.format!==void 0&&us(t.format),t}var ls=class extends Error{constructor(e=""){super(e)}},Ot={Err:ls,_tlv:{encode:(r,e)=>{let{Err:t}=Ot;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=o1(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let i=n>127?o1(o.length/2|128):"";return o1(r)+i+o+e},decode(r,e){let{Err:t}=Ot,n=0;if(r<0||r>256)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],i=!!(o&128),s=0;if(!i)s=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let l=e.subarray(n,n+c);if(l.length!==c)throw new t("tlv.decode: length bytes not complete");if(l[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let u of l)s=s<<8|u;if(n+=c,s<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+s);if(a.length!==s)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+s)}}},_int:{encode(r){let{Err:e}=Ot;if(r<yt)throw new e("integer: negative integers are not allowed");let t=o1(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Ot;if(r[0]&128)throw new e("invalid signature integer: negative");if(r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return Sr(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Ot,o=F(r,void 0,"signature"),{v:i,l:s}=n.decode(48,o);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,i),{v:l,l:u}=n.decode(2,c);if(u.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(l)}},hexFromSig(r){let{_tlv:e,_int:t}=Ot,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),i=n+o;return e.encode(48,i)}},yt=BigInt(0),Rr=BigInt(1),w3=BigInt(2),yn=BigInt(3),Ta=BigInt(4);function E3(r,e={}){let t=en("weierstrass",r,e),{Fp:n,Fn:o}=t,i=t.CURVE,{h:s,n:a}=i;Rt(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c}=e;if(c&&(!n.is0(i.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=S3(n,o);function u(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function f(R,b,x){let{x:m,y:I}=b.toAffine(),T=n.toBytes(m);if(pt(x,"isCompressed"),x){u();let C=!n.isOdd(I);return De(v3(C),T)}else return De(Uint8Array.of(4),T,n.toBytes(I))}function h(R){F(R,void 0,"Point");let{publicKey:b,publicKeyUncompressed:x}=l,m=R.length,I=R[0],T=R.subarray(1);if(m===b&&(I===2||I===3)){let C=n.fromBytes(T);if(!n.isValid(C))throw new Error("bad point: is not on curve, wrong x");let L=E(C),P;try{P=n.sqrt(L)}catch(oe){let ee=oe instanceof Error?": "+oe.message:"";throw new Error("bad point: is not on curve, sqrt error"+ee)}u();let B=n.isOdd(P);return(I&1)===1!==B&&(P=n.neg(P)),{x:C,y:P}}else if(m===x&&I===4){let C=n.BYTES,L=n.fromBytes(T.subarray(0,C)),P=n.fromBytes(T.subarray(C,C*2));if(!g(L,P))throw new Error("bad point: is not on curve");return{x:L,y:P}}else throw new Error(`bad point: got length ${m}, expected compressed=${b} or uncompressed=${x}`)}let d=e.toBytes||f,p=e.fromBytes||h;function E(R){let b=n.sqr(R),x=n.mul(b,R);return n.add(n.add(x,n.mul(R,i.a)),i.b)}function g(R,b){let x=n.sqr(b),m=E(R);return n.eql(x,m)}if(!g(i.Gx,i.Gy))throw new Error("bad curve params: generator point");let y=n.mul(n.pow(i.a,yn),Ta),_=n.mul(n.sqr(i.b),BigInt(27));if(n.is0(n.add(y,_)))throw new Error("bad curve params: a or b");function w(R,b,x=!1){if(!n.isValid(b)||x&&n.is0(b))throw new Error(`bad point coordinate ${R}`);return b}function A(R){if(!(R instanceof v))throw new Error("Weierstrass Point expected")}function D(R){if(!c||!c.basises)throw new Error("no endo");return Aa(R,c.basises,o.ORDER)}let N=_r((R,b)=>{let{X:x,Y:m,Z:I}=R;if(n.eql(I,n.ONE))return{x,y:m};let T=R.is0();b==null&&(b=T?n.ONE:n.inv(I));let C=n.mul(x,b),L=n.mul(m,b),P=n.mul(I,b);if(T)return{x:n.ZERO,y:n.ZERO};if(!n.eql(P,n.ONE))throw new Error("invZ was invalid");return{x:C,y:L}}),q=_r(R=>{if(R.is0()){if(e.allowInfinityPoint&&!n.is0(R.Y))return;throw new Error("bad point: ZERO")}let{x:b,y:x}=R.toAffine();if(!n.isValid(b)||!n.isValid(x))throw new Error("bad point: x or y not field elements");if(!g(b,x))throw new Error("bad point: equation left != right");if(!R.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function S(R,b,x,m,I){return x=new v(n.mul(x.X,R),x.Y,x.Z),b=c1(m,b),x=c1(I,x),b.add(x)}class v{static BASE=new v(i.Gx,i.Gy,n.ONE);static ZERO=new v(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(b,x,m){this.X=w("x",b),this.Y=w("y",x,!0),this.Z=w("z",m),Object.freeze(this)}static CURVE(){return i}static fromAffine(b){let{x,y:m}=b||{};if(!b||!n.isValid(x)||!n.isValid(m))throw new Error("invalid affine point");if(b instanceof v)throw new Error("projective point not allowed");return n.is0(x)&&n.is0(m)?v.ZERO:new v(x,m,n.ONE)}static fromBytes(b){let x=v.fromAffine(p(F(b,void 0,"point")));return x.assertValidity(),x}static fromHex(b){return v.fromBytes(ht(b))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(b=8,x=!0){return H.createCache(this,b),x||this.multiply(yn),this}assertValidity(){q(this)}hasEvenY(){let{y:b}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(b)}equals(b){A(b);let{X:x,Y:m,Z:I}=this,{X:T,Y:C,Z:L}=b,P=n.eql(n.mul(x,L),n.mul(T,I)),B=n.eql(n.mul(m,L),n.mul(C,I));return P&&B}negate(){return new v(this.X,n.neg(this.Y),this.Z)}double(){let{a:b,b:x}=i,m=n.mul(x,yn),{X:I,Y:T,Z:C}=this,L=n.ZERO,P=n.ZERO,B=n.ZERO,K=n.mul(I,I),oe=n.mul(T,T),ee=n.mul(C,C),G=n.mul(I,T);return G=n.add(G,G),B=n.mul(I,C),B=n.add(B,B),L=n.mul(b,B),P=n.mul(m,ee),P=n.add(L,P),L=n.sub(oe,P),P=n.add(oe,P),P=n.mul(L,P),L=n.mul(G,L),B=n.mul(m,B),ee=n.mul(b,ee),G=n.sub(K,ee),G=n.mul(b,G),G=n.add(G,B),B=n.add(K,K),K=n.add(B,K),K=n.add(K,ee),K=n.mul(K,G),P=n.add(P,K),ee=n.mul(T,C),ee=n.add(ee,ee),K=n.mul(ee,G),L=n.sub(L,K),B=n.mul(ee,oe),B=n.add(B,B),B=n.add(B,B),new v(L,P,B)}add(b){A(b);let{X:x,Y:m,Z:I}=this,{X:T,Y:C,Z:L}=b,P=n.ZERO,B=n.ZERO,K=n.ZERO,oe=i.a,ee=n.mul(i.b,yn),G=n.mul(x,T),ie=n.mul(m,C),ge=n.mul(I,L),je=n.add(x,m),se=n.add(T,C);je=n.mul(je,se),se=n.add(G,ie),je=n.sub(je,se),se=n.add(x,I);let xe=n.add(T,L);return se=n.mul(se,xe),xe=n.add(G,ge),se=n.sub(se,xe),xe=n.add(m,I),P=n.add(C,L),xe=n.mul(xe,P),P=n.add(ie,ge),xe=n.sub(xe,P),K=n.mul(oe,se),P=n.mul(ee,ge),K=n.add(P,K),P=n.sub(ie,K),K=n.add(ie,K),B=n.mul(P,K),ie=n.add(G,G),ie=n.add(ie,G),ge=n.mul(oe,ge),se=n.mul(ee,se),ie=n.add(ie,ge),ge=n.sub(G,ge),ge=n.mul(oe,ge),se=n.add(se,ge),G=n.mul(ie,se),B=n.add(B,G),G=n.mul(xe,se),P=n.mul(je,P),P=n.sub(P,G),G=n.mul(je,ie),K=n.mul(xe,K),K=n.add(K,G),new v(P,B,K)}subtract(b){return this.add(b.negate())}is0(){return this.equals(v.ZERO)}multiply(b){let{endo:x}=e;if(!o.isValidNot0(b))throw new Error("invalid scalar: out of range");let m,I,T=C=>H.cached(this,C,L=>tr(v,L));if(x){let{k1neg:C,k1:L,k2neg:P,k2:B}=D(b),{p:K,f:oe}=T(L),{p:ee,f:G}=T(B);I=oe.add(G),m=S(x.beta,K,ee,C,P)}else{let{p:C,f:L}=T(b);m=C,I=L}return tr(v,[m,I])[0]}multiplyUnsafe(b){let{endo:x}=e,m=this;if(!o.isValid(b))throw new Error("invalid scalar: out of range");if(b===yt||m.is0())return v.ZERO;if(b===Rr)return m;if(H.hasCache(this))return this.multiply(b);if(x){let{k1neg:I,k1:T,k2neg:C,k2:L}=D(b),{p1:P,p2:B}=H0(v,m,T,L);return S(x.beta,P,B,I,C)}else return H.unsafe(m,b)}toAffine(b){return N(this,b)}isTorsionFree(){let{isTorsionFree:b}=e;return s===Rr?!0:b?b(v,this):H.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:b}=e;return s===Rr?this:b?b(v,this):this.multiplyUnsafe(s)}isSmallOrder(){return this.multiplyUnsafe(s).is0()}toBytes(b=!0){return pt(b,"isCompressed"),this.assertValidity(),d(v,this,b)}toHex(b=!0){return ft(this.toBytes(b))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let M=o.BITS,H=new Tr(v,e.endo?Math.ceil(M/2):M);return v.BASE.precompute(8),v}function v3(r){return Uint8Array.of(r?2:3)}function S3(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Pa(r,e={}){let{Fn:t}=r,n=e.randomBytes||vr,o=Object.assign(S3(r.Fp,t),{seed:Ei(t.ORDER)});function i(d){try{let p=t.fromBytes(d);return t.isValidNot0(p)}catch{return!1}}function s(d,p){let{publicKey:E,publicKeyUncompressed:g}=o;try{let y=d.length;return p===!0&&y!==E||p===!1&&y!==g?!1:!!r.fromBytes(d)}catch{return!1}}function a(d=n(o.seed)){return vi(F(d,o.seed,"seed"),t.ORDER)}function c(d,p=!0){return r.BASE.multiply(t.fromBytes(d)).toBytes(p)}function l(d){let{secretKey:p,publicKey:E,publicKeyUncompressed:g}=o;if(!Qt(d)||"_lengths"in t&&t._lengths||p===E)return;let y=F(d,void 0,"key").length;return y===E||y===g}function u(d,p,E=!0){if(l(d)===!0)throw new Error("first arg must be private key");if(l(p)===!1)throw new Error("second arg must be public key");let g=t.fromBytes(d);return r.fromBytes(p).multiply(g).toBytes(E)}let f={isValidSecretKey:i,isValidPublicKey:s,randomSecretKey:a},h=tn(a,c);return Object.freeze({getPublicKey:c,getSharedSecret:u,keygen:h,Point:r,utils:f,lengths:o})}function _3(r,e,t={}){j1(e),Rt(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let n=t.randomBytes||vr,o=t.hmac||((x,m)=>as(e,x,m)),{Fp:i,Fn:s}=r,{ORDER:a,BITS:c}=s,{keygen:l,getPublicKey:u,getSharedSecret:f,utils:h,lengths:d}=Pa(r,t),p={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},E=a*w3<i.ORDER;function g(x){let m=a>>Rr;return x>m}function y(x,m){if(!s.isValidNot0(m))throw new Error(`invalid signature ${x}: out of range 1..Point.Fn.ORDER`);return m}function _(){if(E)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function w(x,m){us(m);let I=d.signature,T=m==="compact"?I:m==="recovered"?I+1:void 0;return F(x,T)}class A{r;s;recovery;constructor(m,I,T){if(this.r=y("r",m),this.s=y("s",I),T!=null){if(_(),![0,1,2,3].includes(T))throw new Error("invalid recovery id");this.recovery=T}Object.freeze(this)}static fromBytes(m,I=p.format){w(m,I);let T;if(I==="der"){let{r:B,s:K}=Ot.toSig(F(m));return new A(B,K)}I==="recovered"&&(T=m[0],I="compact",m=m.subarray(1));let C=d.signature/2,L=m.subarray(0,C),P=m.subarray(C,C*2);return new A(s.fromBytes(L),s.fromBytes(P),T)}static fromHex(m,I){return this.fromBytes(ht(m),I)}assertRecovery(){let{recovery:m}=this;if(m==null)throw new Error("invalid recovery id: must be present");return m}addRecoveryBit(m){return new A(this.r,this.s,m)}recoverPublicKey(m){let{r:I,s:T}=this,C=this.assertRecovery(),L=C===2||C===3?I+a:I;if(!i.isValid(L))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let P=i.toBytes(L),B=r.fromBytes(De(v3((C&1)===0),P)),K=s.inv(L),oe=N(F(m,void 0,"msgHash")),ee=s.create(-oe*K),G=s.create(T*K),ie=r.BASE.multiplyUnsafe(ee).add(B.multiplyUnsafe(G));if(ie.is0())throw new Error("invalid recovery: point at infinify");return ie.assertValidity(),ie}hasHighS(){return g(this.s)}toBytes(m=p.format){if(us(m),m==="der")return ht(Ot.hexFromSig(this));let{r:I,s:T}=this,C=s.toBytes(I),L=s.toBytes(T);return m==="recovered"?(_(),De(Uint8Array.of(this.assertRecovery()),C,L)):De(C,L)}toHex(m){return ft(this.toBytes(m))}}let D=t.bits2int||function(m){if(m.length>8192)throw new Error("input is too large");let I=Sr(m),T=m.length*8-c;return T>0?I>>BigInt(T):I},N=t.bits2int_modN||function(m){return s.create(D(m))},q=s1(c);function S(x){return i1("num < 2^"+c,x,yt,q),s.toBytes(x)}function v(x,m){return F(x,void 0,"message"),m?F(e(x),void 0,"prehashed message"):x}function M(x,m,I){let{lowS:T,prehash:C,extraEntropy:L}=cs(I,p);x=v(x,C);let P=N(x),B=s.fromBytes(m);if(!s.isValidNot0(B))throw new Error("invalid private key");let K=[S(B),S(P)];if(L!=null&&L!==!1){let ie=L===!0?n(d.secretKey):L;K.push(F(ie,void 0,"extraEntropy"))}let oe=De(...K),ee=P;function G(ie){let ge=D(ie);if(!s.isValidNot0(ge))return;let je=s.inv(ge),se=r.BASE.multiply(ge).toAffine(),xe=s.create(se.x);if(xe===yt)return;let M1=s.create(je*s.create(ee+xe*B));if(M1===yt)return;let v2=(se.x===xe?0:2)|Number(se.y&Rr),S2=M1;return T&&g(M1)&&(S2=s.neg(M1),v2^=1),new A(xe,S2,E?void 0:v2)}return{seed:oe,k2sig:G}}function H(x,m,I={}){let{seed:T,k2sig:C}=M(x,m,I);return A0(e.outputLen,s.BYTES,o)(T,C).toBytes(I.format)}function R(x,m,I,T={}){let{lowS:C,prehash:L,format:P}=cs(T,p);if(I=F(I,void 0,"publicKey"),m=v(m,L),!Qt(x)){let B=x instanceof A?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+B)}w(x,P);try{let B=A.fromBytes(x,P),K=r.fromBytes(I);if(C&&B.hasHighS())return!1;let{r:oe,s:ee}=B,G=N(m),ie=s.inv(ee),ge=s.create(G*ie),je=s.create(oe*ie),se=r.BASE.multiplyUnsafe(ge).add(K.multiplyUnsafe(je));return se.is0()?!1:s.create(se.x)===oe}catch{return!1}}function b(x,m,I={}){let{prehash:T}=cs(I,p);return m=v(m,T),A.fromBytes(x,"recovered").recoverPublicKey(m).toBytes()}return Object.freeze({keygen:l,getPublicKey:u,getSharedSecret:f,utils:h,lengths:d,Point:r,sign:H,verify:R,recoverPublicKey:b,Signature:A,hash:e})}var hs={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},Ca={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var I3=BigInt(2);function Da(r){let e=hs.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),a=BigInt(44),c=BigInt(88),l=r*r*r%e,u=l*l*r%e,f=re(u,t,e)*u%e,h=re(f,t,e)*u%e,d=re(h,I3,e)*l%e,p=re(d,o,e)*d%e,E=re(p,i,e)*p%e,g=re(E,a,e)*E%e,y=re(g,c,e)*g%e,_=re(y,a,e)*E%e,w=re(_,t,e)*u%e,A=re(w,s,e)*p%e,D=re(A,n,e)*l%e,N=re(D,I3,e);if(!fs.eql(fs.sqr(N),r))throw new Error("Cannot find square root");return N}var fs=Ir(hs.p,{sqrt:Da}),Ra=E3(hs,{Fp:fs,endo:Ca}),Lr=_3(Ra,v0);function A3(r,e,t,n){let o=at.digest(t instanceof Uint8Array?t:t.subarray());if(nn(o))return o.then(({digest:i})=>(n?.signal?.throwIfAborted(),Lr.verify(e,i,r,{prehash:!1,format:"der"}))).catch(i=>{throw i.name==="AbortError"?i:new Yr(String(i))});try{return n?.signal?.throwIfAborted(),Lr.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(i){throw new Yr(String(i))}}var bn=class{type="secp256k1";raw;_key;constructor(e){this._key=P3(e),this.raw=T3(this._key)}toMultihash(){return Fe.digest(Tt(this))}toCID(){return W.createV1(114,this.toMultihash())}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Z(this.raw,e.raw)}verify(e,t,n){return A3(this._key,t,e,n)}};function ds(r){return new bn(r)}function T3(r){return Lr.Point.fromBytes(r).toBytes()}function P3(r){try{return Lr.Point.fromBytes(r),r}catch(e){throw new it(String(e))}}function xn(r,e){let{Type:t,Data:n}=rt.decode(r),o=n??new Uint8Array;switch(t){case ne.RSA:return os(o,e);case ne.Ed25519:return Di(o);case ne.secp256k1:return ds(o);case ne.ECDSA:return ii(o);default:throw new jt}}function C3(r){let{Type:e,Data:t}=rt.decode(r.digest),n=t??new Uint8Array;switch(e){case ne.Ed25519:return Di(n);case ne.secp256k1:return ds(n);case ne.ECDSA:return ii(n);default:throw new jt}}function Tt(r){return rt.encode({Type:ne[r.type],Data:r.raw})}var ps={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},D3={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},R3=new globalThis.TextEncoder;function La(r,e){let t=ps[e],n=D3[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function ka(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=ps[e],o=D3[e],i=r;for(;i.length>0;){let s=R3.encodeInto(i,t);i=i.slice(s.read);for(let a=0;a<s.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function ms(r,{size:e=32,utf8Buffer:t}={}){if(!ps[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return ka(r,e,t);r=R3.encode(r)}return La(r,e)}var m1={hash:r=>Number(ms(r,{size:32})),hashV:(r,e)=>Ba(m1.hash(r,e))};function Ba(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),U(e,"base16")}var gs=64,$e=class{fp;h;seed;constructor(e,t,n,o=2){if(o>gs)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),s=we(o);for(let a=0;a<s.length;a++)s[a]=i[a];s.length===0&&(s[0]=7),this.fp=s,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?Z(this.fp,e.fp):!1}};function ir(r,e){return Math.floor(Math.random()*(e-r))+r}var sr=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof $e))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof $e))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof $e))throw new TypeError("Invalid Fingerprint");let t=ir(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof $e))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var Oa=500,g1=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??m1,this.seed=e.seed??ir(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=U(e));let t=new $e(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new sr(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new sr(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let i=[n,o],s=i[ir(0,i.length-1)];this.buckets[s]==null&&(this.buckets[s]=new sr(this.bucketSize));for(let a=0;a<Oa;a++){let c=this.buckets[s].swap(t);if(c!=null&&(s=(s^c.hash())%this.filterSize,this.buckets[s]==null&&(this.buckets[s]=new sr(this.bucketSize)),this.buckets[s].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=U(e));let t=new $e(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=U(e));let t=new $e(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let i=(n^t.hash())%this.filterSize,s=this.buckets[i]?.remove(t)??!1;return s&&this.count--,s}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Na={1:.5,2:.84,4:.95,8:.98};function Ma(r=.001){return r>.002?2:r>1e-5?4:8}function L3(r,e=.001){let t=Ma(e),n=Na[t],o=Math.round(r/n),i=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),gs);return{filterSize:o,bucketSize:t,fingerprintSize:i}}var wn=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??m1,this.seed=e.seed??ir(0,Math.pow(2,10)),this.filterSeries=[new g1({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=U(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new g1({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=U(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=U(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function ys(r,e=.001,t){return new wn({...L3(r,e),...t??{}})}function k3(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new V(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}var En=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let i=0,s=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",l=2**(8*o)-1;for(;;){let u=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let h=Number.parseInt(f,e);if(!Number.isNaN(h))return h});if(u===void 0)break;if(i*=e,i+=u,i>l||(s+=1,t!==void 0&&s>t))return}if(s!==0)return!n&&c&&s>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let s=this.readSeparator(":",n,()=>this.readIPv4Addr());if(s!==void 0)return t[o]=s[0],t[o+1]=s[1],t[o+2]=s[2],t[o+3]=s[3],[o+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[o,!1];t[o]=i>>8,t[o+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),s=16-(n+2),[a]=e(i.subarray(0,s));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Ua=45,Ka=15,vn=new En;function B3(r){if(!(r.length>Ka))return vn.new(r).parseWith(()=>vn.readIPv4Addr())}function O3(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Ua))return vn.new(r).parseWith(()=>vn.readIPv6Addr())}function kr(r){return!!B3(r)}function Sn(r){return!!O3(r)}var K3=n6(U3(),1),Ga=["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"],Ya=Ga.map(r=>new K3.Netmask(r));function _s(r){for(let e of Ya)if(e.contains(r))return!0;return!1}function ja(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function Qa(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return _s(o)}function Za(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function Wa(r){let e=r.split(":"),t=e[e.length-1];return _s(t)}function Xa(r){return/^::$/.test(r)||/^::1$/.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)}function q3(r){if(kr(r))return _s(r);if(ja(r))return Qa(r);if(Za(r))return Wa(r);if(Sn(r))return Xa(r)}function y1(r){try{let e=k3(r);switch(e.type){case"ip4":case"ip6":return q3(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function ue(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var In=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Mr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new In(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new In(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var Is=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function bt(r={}){return Ja(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function Ja(r,e){e=e??{};let t=e.onEnd,n=new Mr,o,i,s,a=ue(),c=async()=>{try{return n.isEmpty()?s?{done:!0}:await new Promise((g,y)=>{i=_=>{i=null,n.push(_);try{g(r(n))}catch(w){y(w)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ue()})}},l=g=>i!=null?i(g):(n.push(g),o),u=g=>(n=new Mr,i!=null?i({error:g}):(n.push({error:g}),o)),f=g=>{if(s)return o;if(e?.objectMode!==!0&&g?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return l({done:!1,value:g})},h=g=>s?o:(s=!0,g!=null?u(g):l({done:!0})),d=()=>(n=new Mr,h(),{done:!0}),p=g=>(h(g),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:d,throw:p,push:f,end:h,get readableLength(){return n.size},onEmpty:async g=>{let y=g?.signal;if(y?.throwIfAborted(),n.isEmpty())return;let _,w;y!=null&&(_=new Promise((A,D)=>{w=()=>{D(new Is)},y.addEventListener("abort",w)}));try{await Promise.race([a.promise,_])}finally{w!=null&&y!=null&&y?.removeEventListener("abort",w)}}},t==null)return o;let E=o;return o={[Symbol.asyncIterator](){return this},next(){return E.next()},throw(g){return E.throw(g),t!=null&&(t(g),t=void 0),{done:!0}},return(){return E.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(g){return E.end(g),t!=null&&(t(g),t=void 0),o},get readableLength(){return E.readableLength},onEmpty:g=>E.onEmpty(g)},o}var As=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},F3=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function Ts(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:i={setTimeout,clearTimeout},signal:s}=e,a,c,u=new Promise((f,h)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(s?.aborted){h(F3(s));return}if(s&&(c=()=>{h(F3(s))},s.addEventListener("abort",c,{once:!0})),r.then(f,h),t===Number.POSITIVE_INFINITY)return;let d=new As;a=i.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(p){h(p)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?f():o instanceof Error?h(o):(d.message=o??`Promise timed out after ${t} milliseconds`,h(d))},t)}).finally(()=>{u.clear(),c&&s&&s.removeEventListener("abort",c)});return u.clear=()=>{i.clearTimeout.call(void 0,a),a=void 0},u}var e8=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function t8(r,e,t){let n,o=new Promise((i,s)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:l,removeListener:u}=e8(r),f=async(...d)=>{let p=t.multiArgs?d:d[0];if(t.filter)try{if(!await t.filter(p))return}catch(E){n(),s(E);return}c.push(p),t.count===c.length&&(n(),i(c))},h=(...d)=>{n(),s(t.rejectionMultiArgs?d:d[0])};n=()=>{for(let d of a)u(d,f);for(let d of t.rejectionEvents)a.includes(d)||u(d,h)};for(let d of a)l(d,f);for(let d of t.rejectionEvents)a.includes(d)||l(d,h);t.signal&&t.signal.addEventListener("abort",()=>{h(t.signal.reason)},{once:!0}),t.resolveImmediately&&i(c)});if(o.cancel=n,typeof t.timeout=="number"){let i=Ts(o,{milliseconds:t.timeout});return i.cancel=()=>{n(),i.clear()},i}return o}function Mt(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=t8(r,e,t),o=n.then(i=>i[0]);return o.cancel=n.cancel,o}function Ps(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var An=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},cr=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"};function r8(r){return r.reason}async function Ut(r,e,t){if(e==null)return r;let n=t?.translateError??r8;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((i,s)=>{o=()=>{s(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var Tn=class{deferred;signal;onProgress;constructor(e){this.signal=e?.signal,this.onProgress=e?.onProgress,this.deferred=ue(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Ke)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function n8(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var Pn=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=n8(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Ke),this.cleanup())}async join(e){let t=new Tn(e);return this.recipients.push(t),e?.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await Ut(this.fn({...this.options??{},signal:this.controller.signal,onProgress:t=>{this.recipients.forEach(n=>{n.onProgress?.(t)})}}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var ot=class extends Pe{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=Ps(this.emitEmpty.bind(this),1),this.emitIdle=Ps(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new An;let n=new Pn(e,t);this.enqueue(n),this.safeDispatchEvent("add");let o=n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i});return this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Ke)}),this.clear()}async onEmpty(e){this.size!==0&&await Mt(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await Mt(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Mt(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=bt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail.error)},s=()=>{n()},a=()=>{n(new Ke("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",i),this.addEventListener("idle",s),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",i),this.removeEventListener("idle",s),e?.signal?.removeEventListener("abort",a),n()}}};function Ue(r){let e=new globalThis.AbortController;function t(){let i=r.filter(s=>s?.aborted===!0).map(s=>s?.reason).pop();e.abort(i);for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var Ur=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,i=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*i),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var o8=1.2,i8=2,s8=5e3,a8=6e4,c8=5e3,xt=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??c8;this.success=new Ur(t),this.failure=new Ur(t),this.next=new Ur(t),this.failureMultiplier=e.failureMultiplier??i8,this.timeoutMultiplier=e.timeoutMultiplier??o8,this.minTimeout=e.minTimeout??s8,this.maxTimeout=e.maxTimeout??a8,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=Ue([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){e.clear();let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var be=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},wt=class extends Error{static name="ValidationError";name="ValidationError"},Cn=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},Dn=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function Ds(r){return e=>O(e,r)}function Rs(r){return e=>U(e,r)}function Kr(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function ur(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function V3(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=U(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=ur(n);return Me([t,o],t.length+o.length)}function H3(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=It.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=ur(n);return Me([t,o],t.length+o.length)}function Ls(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=O(e,"base32"),o=Kr(t);return`${n}:${o}`}var ks=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new be("Invalid byte value in IP address");e[n]=o}),e},z3=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=kr(t[n]),s;i&&(s=ks(t[n]),t[n]=O(s.subarray(0,2),"base16")),s!=null&&++n<8&&t.splice(n,0,O(s.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let i=parseInt(t[n],16);if(isNaN(i)||i<0||i>65535)throw new be("Invalid byte value in IP address");o[e++]=i>>8&255,o[e++]=i&255}return o},$3=function(r){if(r.byteLength!==4)throw new be("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},G3=function(r){if(r.byteLength!==16)throw new be("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],i=r[n+1],s=`${o.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}`;e.push(s)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new be(`Invalid IPv6 address "${t}"`)}};function Y3(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new be(`Invalid IPv6 address "${r}"`)}}var Cs=Object.values(Xr).map(r=>r.decoder),u8=(function(){let r=Cs[0].or(Cs[1]);return Cs.slice(2).forEach(e=>r=r.or(e)),r})();function j3(r){return u8.decode(r)}function Q3(r){return e=>r.encoder.encode(e)}function l8(r){if(parseInt(r).toString()!==r)throw new wt("Value must be an integer")}function f8(r){if(r<0)throw new wt("Value must be a positive integer, or zero")}function h8(r){return e=>{if(e>r)throw new wt(`Value must be smaller than or equal to ${r}`)}}function d8(...r){return e=>{for(let t of r)t(e)}}var b1=d8(l8,f8,h8(65535));var me=-1,Bs=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new Dn(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},vt=new Bs,T8=[{code:4,name:"ip4",size:32,valueToBytes:ks,bytesToValue:$3,validate:r=>{if(!kr(r))throw new wt(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:ur,bytesToValue:Kr,validate:b1},{code:273,name:"udp",size:16,valueToBytes:ur,bytesToValue:Kr,validate:b1},{code:33,name:"dccp",size:16,valueToBytes:ur,bytesToValue:Kr,validate:b1},{code:41,name:"ip6",size:128,valueToBytes:z3,bytesToValue:G3,stringToValue:Y3,validate:r=>{if(!Sn(r))throw new wt(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:me},{code:43,name:"ipcidr",size:8,bytesToValue:Ds("base10"),valueToBytes:Rs("base10")},{code:53,name:"dns",size:me},{code:54,name:"dns4",size:me},{code:55,name:"dns6",size:me},{code:56,name:"dnsaddr",size:me},{code:132,name:"sctp",size:16,valueToBytes:ur,bytesToValue:Kr,validate:b1},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:me,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:me,bytesToValue:Ds("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?Rs("base58btc")(r):W.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Ls,valueToBytes:V3},{code:445,name:"onion3",size:296,bytesToValue:Ls,valueToBytes:H3},{code:446,name:"garlic64",size:me},{code:447,name:"garlic32",size:me},{code:448,name:"tls"},{code:449,name:"sni",size:me},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:me,bytesToValue:Q3(Go),valueToBytes:j3},{code:480,name:"http"},{code:481,name:"http-path",size:me,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:me}];T8.forEach(r=>{vt.addProtocol(r)});function Z3(r){let e=[],t=0;for(;t<r.length;){let n=rr(r,t),o=vt.getProtocol(n),i=Re(n),s=P8(o,r,t+i),a=0;s>0&&o.size===me&&(a=Re(s));let c=i+a+s,l={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(s>0){let u=t+i+a,f=r.subarray(u,u+s);l.value=o.bytesToValue?.(f)??O(f)}e.push(l),t+=c}return e}function W3(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=vt.getProtocol(n.code),i=Re(n.code),s,a=0,c=0;n.value!=null&&(s=o.valueToBytes?.(n.value)??U(n.value),a=s.byteLength,o.size===me&&(c=Re(a)));let l=new Uint8Array(i+c+a),u=0;Pr(n.code,l,u),u+=i,s!=null&&(o.size===me&&(Pr(a,l,u),u+=c),l.set(s,u)),n.bytes=l}t.push(n.bytes),e+=n.bytes.byteLength}return Me(t,e)}function X3(r){if(r.charAt(0)!=="/")throw new be('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let i=1;i<r.length;i++){let s=r.charAt(i);s!=="/"&&(t==="protocol"?o+=r.charAt(i):n+=r.charAt(i));let a=i===r.length-1;if(s==="/"||a){let c=vt.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new be(`Component ${o} was missing value`);t="value"}else if(t==="value"){let l={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new be(`Component ${o} was missing value`);l.value=c.stringToValue?.(n)??n}e.push(l),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new be("Incomplete multiaddr");return e}function J3(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=vt.getProtocol(e.code);if(t==null)throw new be(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function P8(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:rr(e,t)}var C8=Symbol.for("nodejs.util.inspect.custom"),Ws=Symbol.for("@multiformats/multiaddr");function D8(r){if(r==null&&(r="/"),e4(r))return r.getComponents();if(r instanceof Uint8Array)return Z3(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),X3(r);if(Array.isArray(r))return r;throw new be("Must be a string, Uint8Array, Component[], or another Multiaddr")}var Nn=class r{[Ws]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=D8(e),t.validate!==!1&&R8(this)}get bytes(){return this.#r==null&&(this.#r=W3(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=J3(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new Cn(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return Z(this.bytes,e.bytes)}[C8](){return`Multiaddr(${this.toString()})`}};function R8(r){r.getComponents().forEach(e=>{let t=vt.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function e4(r){return!!r?.[Ws]}function Mn(r){return new Nn(r)}var Xs=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ue(),this.haveNext=ue()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ue(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ue(),await Ut(this.readNext.promise,t?.signal,t)}};function t4(){return new Xs}function L8(r){return r[Symbol.asyncIterator]!=null}async function k8(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*B8(r){let e=new AbortController,t=t4();k8(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*O8(r){for(let e of r)yield*e}function N8(...r){let e=[];for(let t of r)L8(t)||e.push(t);return e.length===r.length?O8(e):B8(r)}var Un=N8;function x1(r,...e){if(r==null)throw new Error("Empty pipeline");if(Js(r)){let n=r;r=()=>n.source}else if(n4(r)||r4(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&Js(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)Js(t[n])&&(t[n]=U8(t[n]));return M8(...t)}var M8=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},r4=r=>r?.[Symbol.asyncIterator]!=null,n4=r=>r?.[Symbol.iterator]!=null,Js=r=>r==null?!1:r.sink!=null&&r.source!=null,U8=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=bt({objectMode:!0});t.then(()=>{n.end()},s=>{n.end(s)});let o,i=r.source;if(r4(i))o=async function*(){yield*i,n.end()};else if(n4(i))o=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return Un(n,o())}return r.source};var K8=4194304,Kn=class extends Error{static name="UnwrappedError";name="UnwrappedError"},t2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},r2=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},n2=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function q8(r){return typeof r?.closeRead=="function"}function F8(r){return typeof r?.close=="function"}function e2(r){return q8(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:F8(r)?r.status!=="open":!1}function V8(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function H8(r,e){let t=e?.maxBufferSize??K8,n=new he,o,i=!1;if(!V8(r))throw new V("Argument should be a Stream or a Multiaddr");let s=u=>{if(n.append(u.data),n.byteLength>t){let f=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${f} > ${t}`))}o?.resolve()};r.addEventListener("message",s);let a=u=>{u.error!=null?o?.reject(u.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let l={readBuffer:n,async read(u){if(i===!0)throw new Kn("Stream was unwrapped");if(e2(r)){if(n.byteLength===0&&u?.bytes==null)return null;if(u?.bytes!=null&&n.byteLength<u.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,u.bytes),new cr(`Unexpected EOF - stream closed after reading ${n.byteLength}/${u.bytes} bytes`)}let f=u?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=f){o.resolve();break}if(await Ut(o.promise,u?.signal),e2(r)){if(n.byteLength===0&&u?.bytes==null)return null;break}o=Promise.withResolvers()}let h=u?.bytes??n.byteLength;if(n.byteLength<h){if(e2(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,h),new cr(`Unexpected EOF - stream closed while reading ${n.byteLength}/${h} bytes`);return l.read(u)}let d=n.sublist(0,h);return n.consume(h),d},async write(u,f){if(i===!0)throw new Kn("Stream was unwrapped");r.send(u)||await Mt(r,"drain",{signal:f?.signal,rejectionEvents:["close"]})},unwrap(){return i||(i=!0,r.removeEventListener("message",s),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return l}function z8(r,e={}){let t=H8(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=Re(e.maxDataLength));let n=e?.lengthDecoder??rr,o=e?.lengthEncoder??sn;return{async read(s){let a=-1,c=new he;for(;;){let u=await t.read({...s,bytes:1});if(u==null)break;c.append(u);try{a=n(c)}catch(f){if(f instanceof RangeError)continue;throw f}if(a<0)throw new t2("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new n2(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new r2(`Message length too long - ${a} > ${e.maxDataLength}`);let l=await t.read({...s,bytes:a});if(l==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new cr(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(l.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",l.byteLength,a),new cr(`Unexpected EOF - read ${l.byteLength}/${a} bytes before the stream closed`);return l},async write(s,a){await t.write(new he(o(s.byteLength),s),a)},async writeV(s,a){let c=new he(...s.flatMap(l=>[o(l.byteLength),l]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function w1(r,e){let t=z8(r,e),n={read:async(o,i)=>{let s=await t.read(i);return o.decode(s)},write:async(o,i,s)=>{await t.write(i.encode(o),s)},writeV:async(o,i,s)=>{await t.writeV(o.map(a=>i.encode(a)),s)},pb:o=>({read:async i=>n.read(o,i),write:async(i,s)=>n.write(i,o,s),writeV:async(i,s)=>n.writeV(i,o,s),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var E1=class extends ot{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var X=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),k=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),o4=r=>({match:e=>r.match(e)===!1?e:!1}),z=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),_e=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),Y=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function J(...r){function e(o){if(o==null)return!1;let i=o.getComponents();for(let s of r){let a=s.match(i);if(a===!1)return!1;i=a}return i}function t(o){return e(o)!==!1}function n(o){let i=e(o);return i===!1?!1:i.length===0}return{matchers:r,matches:t,exactMatch:n}}var $8=k(421),Sp=J($8),Fn=k(54),Vn=k(55),Hn=k(56),i2=k(53),_p=J(Fn,z(k(421))),Ip=J(Vn,z(k(421))),Ap=J(Hn,z(k(421))),Tp=J(_e(i2,Hn,Fn,Vn),z(k(421))),i4=Y(k(4),z(k(43))),s4=Y(z(k(42)),k(41),z(k(43))),s2=_e(i4,s4),Hr=_e(s2,i2,Fn,Vn,Hn),Pp=J(_e(s2,Y(_e(i2,Hn,Fn,Vn),z(k(421))))),Cp=J(i4),Dp=J(s4),Rp=J(s2),a2=Y(Hr,k(6)),v1=Y(Hr,k(273)),Lp=J(Y(a2,z(k(421)))),kp=J(v1),c2=Y(v1,X(460),z(k(421))),zn=Y(v1,X(461),z(k(421))),G8=_e(c2,zn),Bp=J(c2),Op=J(zn),o2=_e(Hr,a2,v1,c2,zn),a4=_e(Y(o2,X(477),z(k(421)))),Np=J(a4),c4=_e(Y(o2,X(478),z(k(421))),Y(o2,X(448),z(k(449)),X(477),z(k(421)))),Mp=J(c4),u4=Y(v1,X(280),z(k(466)),z(k(466)),z(k(421))),Up=J(u4),l4=Y(zn,X(465),z(k(466)),z(k(466)),z(k(421))),Kp=J(l4),qn=_e(a4,c4,Y(a2,z(k(421))),Y(G8,z(k(421))),Y(Hr,z(k(421))),u4,l4,k(421)),qp=J(qn),Y8=Y(z(qn),X(290),o4(X(281)),z(k(421))),f4=J(Y8),j8=_e(Y(qn,X(290),X(281),z(k(421))),Y(qn,X(281),z(k(421))),Y(X(281),z(k(421)))),Fp=J(j8),Q8=Y(Hr,_e(Y(k(6,"80")),Y(k(6),X(480)),X(480)),z(k(481)),z(k(421))),Vp=J(Q8),Z8=Y(Hr,_e(Y(k(6,"443")),Y(k(6,"443"),X(480)),Y(k(6),X(443)),Y(k(6),X(448),X(480)),Y(X(448),X(480)),X(448),X(443)),z(k(481)),z(k(421))),Hp=J(Z8),W8=_e(Y(k(777),z(k(421)))),zp=J(W8),X8=_e(Y(k(400),z(k(421)))),$p=J(X8);function J8(r){return r[Symbol.asyncIterator]!=null}function e7(r){if(J8(r))return(async()=>{for await(let e of r);})();for(let e of r);}var S1=e7;var fr=1e3,u2=60*fr,$n=60*u2,h4="/ipfs/kad/1.0.0",Gn=48*$n;var d4=24*$n,p4=10,m4=16384,g4=$n,l2=$n,Qp=10*fr,y4=10*fr;var Yn=20,Kt=10,b4=5*u2,x4=fr,w4=5*fr,E4=5*u2,v4=30*fr,S4=180*fr,f2=`${P2}-kad-dht`;var _1;(function(r){let e;r.codec=()=>(e==null&&(e=tt((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.key!=null&&i.key.byteLength>0&&(s.uint32(10),s.bytes(i.key)),i.value!=null&&i.value.byteLength>0&&(s.uint32(18),s.bytes(i.value)),i.timeReceived!=null&&i.timeReceived!==""&&(s.uint32(42),s.string(i.timeReceived)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={key:we(0),value:we(0),timeReceived:""},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.key=i.bytes();break}case 2:{c.value=i.bytes();break}case 5:{c.timeReceived=i.string();break}default:{i.skipType(u&7);break}}}return c},function*(i,s,a,c={}){let l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{yield{field:`${a}.key`,value:i.bytes()};break}case 2:{yield{field:`${a}.value`,value:i.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:i.string()};break}default:{i.skipType(u&7);break}}}})),e);function t(i){return Je(i,r.codec())}r.encode=t;function n(i,s){return Xe(i,r.codec(),s)}r.decode=n;function o(i,s){return et(i,r.codec(),s)}r.stream=o})(_1||(_1={}));function _4(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),i=String(r.getUTCMinutes()).padStart(2,"0"),s=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${i}:${s}.${c}Z`}function I4(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,i=parseInt(t[3],10),s=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),l=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,i,s,a,c,l))}var le=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return _1.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:_4(this.timeReceived)}}static deserialize(e){let t=_1.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=I4(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function r7(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var A4=r7;function n7(r){return r[Symbol.asyncIterator]!=null}function o7(r,e){let t=0;if(n7(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=A4(r),{value:o,done:i}=n.next();if(i===!0)return(function*(){})();let s=e(o,t++);if(typeof s.then=="function")return(async function*(){yield await s;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield s;for(let c of n)yield a(c,t++)})()}var zr=o7;var jn=globalThis.CustomEvent??Event;async function*I1(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,i=[],s=ue(),a=ue(),c=!1,l,u=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let p of r){if(i.length===t&&(s=ue(),await s.promise),u)break;let E={done:!1};i.push(E),p().then(g=>{E.done=!0,E.ok=!0,E.value=g,o.dispatchEvent(new jn("task-complete"))},g=>{E.done=!0,E.err=g,o.dispatchEvent(new jn("task-complete"))})}c=!0,o.dispatchEvent(new jn("task-complete"))}catch(p){l=p,o.dispatchEvent(new jn("task-complete"))}});function f(){return n?i[0]?.done:!!i.find(p=>p.done)}function*h(){for(;i.length>0&&i[0].done;){let p=i[0];if(i.shift(),p.ok)yield p.value;else throw u=!0,s.resolve(),p.err;s.resolve()}}function*d(){for(;f();)for(let p=0;p<i.length;p++)if(i[p].done){let E=i[p];if(i.splice(p,1),p--,E.ok)yield E.value;else throw u=!0,s.resolve(),E.err;s.resolve()}}for(;;){if(f()||(a=ue(),await a.promise),l!=null||(n?yield*h():yield*d(),l!=null))throw l;if(c&&i.length===0)break}}var qt=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},Qn=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},Zn=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var T4;(function(r){let e;r.codec=()=>(e==null&&(e=tt((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.key!=null&&(s.uint32(10),s.bytes(i.key)),i.value!=null&&(s.uint32(18),s.bytes(i.value)),i.author!=null&&(s.uint32(26),s.bytes(i.author)),i.signature!=null&&(s.uint32(34),s.bytes(i.signature)),i.timeReceived!=null&&(s.uint32(42),s.string(i.timeReceived)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.key=i.bytes();break}case 2:{c.value=i.bytes();break}case 3:{c.author=i.bytes();break}case 4:{c.signature=i.bytes();break}case 5:{c.timeReceived=i.string();break}default:{i.skipType(u&7);break}}}return c},function*(i,s,a,c={}){let l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{yield{field:`${a}.key`,value:i.bytes()};break}case 2:{yield{field:`${a}.value`,value:i.bytes()};break}case 3:{yield{field:`${a}.author`,value:i.bytes()};break}case 4:{yield{field:`${a}.signature`,value:i.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:i.string()};break}default:{i.skipType(u&7);break}}}})),e);function t(i){return Je(i,r.codec())}r.encode=t;function n(i,s){return Xe(i,r.codec(),s)}r.decode=n;function o(i,s){return et(i,r.codec(),s)}r.stream=o})(T4||(T4={}));var $;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})($||($={}));var Wn;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(Wn||(Wn={}));(function(r){r.codec=()=>Cr(Wn)})($||($={}));var hr;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(hr||(hr={}));var h2;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(h2||(h2={}));(function(r){r.codec=()=>Cr(h2)})(hr||(hr={}));var Ft;(function(r){let e;r.codec=()=>(e==null&&(e=tt((i,s,a={})=>{if(a.lengthDelimited!==!1&&s.fork(),i.id!=null&&i.id.byteLength>0&&(s.uint32(10),s.bytes(i.id)),i.multiaddrs!=null&&i.multiaddrs.length>0)for(let c of i.multiaddrs)s.uint32(18),s.bytes(c);i.connection!=null&&(s.uint32(24),hr.codec().encode(i.connection,s)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={id:we(0),multiaddrs:[]},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.id=i.bytes();break}case 2:{if(a.limits?.multiaddrs!=null&&c.multiaddrs.length===a.limits.multiaddrs)throw new mt('Decode error - repeated field "multiaddrs" had too many elements');c.multiaddrs.push(i.bytes());break}case 3:{c.connection=hr.codec().decode(i);break}default:{i.skipType(u&7);break}}}return c},function*(i,s,a,c={}){let l={multiaddrs:0},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{yield{field:`${a}.id`,value:i.bytes()};break}case 2:{if(c.limits?.multiaddrs!=null&&l.multiaddrs===c.limits.multiaddrs)throw new mt('Streaming decode error - repeated field "multiaddrs" had too many elements');yield{field:`${a}.multiaddrs[]`,index:l.multiaddrs,value:i.bytes()},l.multiaddrs++;break}case 3:{yield{field:`${a}.connection`,value:hr.codec().decode(i)};break}default:{i.skipType(f&7);break}}}})),e);function t(i){return Je(i,r.codec())}r.encode=t;function n(i,s){return Xe(i,r.codec(),s)}r.decode=n;function o(i,s){return et(i,r.codec(),s)}r.stream=o})(Ft||(Ft={}));var Vt;(function(r){let e;r.codec=()=>(e==null&&(e=tt((i,s,a={})=>{if(a.lengthDelimited!==!1&&s.fork(),i.type!=null&&Wn[i.type]!==0&&(s.uint32(8),$.codec().encode(i.type,s)),i.clusterLevel!=null&&(s.uint32(80),s.int32(i.clusterLevel)),i.key!=null&&(s.uint32(18),s.bytes(i.key)),i.record!=null&&(s.uint32(26),s.bytes(i.record)),i.closer!=null&&i.closer.length>0)for(let c of i.closer)s.uint32(66),Ft.codec().encode(c,s);if(i.providers!=null&&i.providers.length>0)for(let c of i.providers)s.uint32(74),Ft.codec().encode(c,s);a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={type:$.PUT_VALUE,closer:[],providers:[]},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let u=i.uint32();switch(u>>>3){case 1:{c.type=$.codec().decode(i);break}case 10:{c.clusterLevel=i.int32();break}case 2:{c.key=i.bytes();break}case 3:{c.record=i.bytes();break}case 8:{if(a.limits?.closer!=null&&c.closer.length===a.limits.closer)throw new mt('Decode error - repeated field "closer" had too many elements');c.closer.push(Ft.codec().decode(i,i.uint32(),{limits:a.limits?.closer$}));break}case 9:{if(a.limits?.providers!=null&&c.providers.length===a.limits.providers)throw new mt('Decode error - repeated field "providers" had too many elements');c.providers.push(Ft.codec().decode(i,i.uint32(),{limits:a.limits?.providers$}));break}default:{i.skipType(u&7);break}}}return c},function*(i,s,a,c={}){let l={closer:0,providers:0},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let f=i.uint32();switch(f>>>3){case 1:{yield{field:`${a}.type`,value:$.codec().decode(i)};break}case 10:{yield{field:`${a}.clusterLevel`,value:i.int32()};break}case 2:{yield{field:`${a}.key`,value:i.bytes()};break}case 3:{yield{field:`${a}.record`,value:i.bytes()};break}case 8:{if(c.limits?.closer!=null&&l.closer===c.limits.closer)throw new mt('Streaming decode error - repeated field "closer" had too many elements');for(let h of Ft.codec().stream(i,i.uint32(),`${a}.closer[]`,{limits:c.limits?.closer$}))yield{...h,index:l.closer};l.closer++;break}case 9:{if(c.limits?.providers!=null&&l.providers===c.limits.providers)throw new mt('Streaming decode error - repeated field "providers" had too many elements');for(let h of Ft.codec().stream(i,i.uint32(),`${a}.providers[]`,{limits:c.limits?.providers$}))yield{...h,index:l.providers};l.providers++;break}default:{i.skipType(f&7);break}}}})),e);function t(i){return Je(i,r.codec())}r.encode=t;function n(i,s){return Xe(i,r.codec(),s)}r.decode=n;function o(i,s){return et(i,r.codec(),s)}r.stream=o})(Vt||(Vt={}));function d2(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function A1(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function Xn(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function Ge(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function p2(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function T1(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function m2(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function P4(r,e={}){let t={...r,name:"PATH_ENDED",type:8};return e.onProgress?.(new CustomEvent("kad-dht:query:path-ended",{detail:t})),t}function C4(r,e,t){if(t.length===0)throw new V("No records given");let o=O(e).split("/");if(o.length<3)throw new V("Record key does not have a selector function");let i=r[o[1].toString()];if(i==null)throw new Zn(`No selector function configured for key type "${o[1]}"`);return t.length===1?0:i(e,t)}function i7(r,e){return 0}var D4={pk:i7};async function $r(r,e,t){let n=e.key,i=O(n).split("/");if(i.length<3)return;let s=r[i[1].toString()];if(s==null)throw new V(`No validator available for key type "${i[1]}"`);await s(n,e.value,t)}var s7=async(r,e,t)=>{if(!(r instanceof Uint8Array))throw new V('"key" must be a Uint8Array');if(r.byteLength<5)throw new V("Invalid public key record");if(O(r.subarray(0,4))!=="/pk/")throw new V("key was not prefixed with /pk/");let o=xn(e),i=r.slice(4);if(!Z(i,o.toMultihash().bytes))throw new V("public key does not match passed in key")},R4={pk:s7};var L4=Symbol.for("nodejs.util.inspect.custom"),a7=114,P1=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[Ro]=!0;toString(){return this.string==null&&(this.string=te.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return W.createV1(a7,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Z(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return Z(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[L4](){return`PeerId(${this.toString()})`}},C1=class extends P1{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},D1=class extends P1{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},R1=class extends P1{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},c7=2336,L1=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=Fe.digest(U(this.url))}[L4](){return`PeerId(${this.url})`}[Ro]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return W.createV1(c7,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=O(e)),e.toString()===this.toString())}};var u7=114,k4=2336;function B4(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=fe(te.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return l7(W.parse(r));if(e==null)throw new V('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=fe(e.decode(r))}return Le(t)}function O4(r){if(r.type==="Ed25519")return new D1({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new R1({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new C1({multihash:r.toCID().multihash,publicKey:r});throw new jt}function Le(r){if(h7(r))return new C1({multihash:r});if(f7(r))try{let e=C3(r);if(e.type==="Ed25519")return new D1({multihash:r,publicKey:e});if(e.type==="secp256k1")return new R1({multihash:r,publicKey:e})}catch{let t=O(r.digest);return new L1(new URL(t))}throw new q1("Supplied PeerID Multihash is invalid")}function l7(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==u7&&r.code!==k4)throw new K1("Supplied PeerID CID is invalid");if(r.code===k4){let e=O(r.multihash.digest);return new L1(new URL(e))}return Le(r.multihash)}function f7(r){return r.code===Fe.code}function h7(r){return r.code===at.code}var St="/",N4=new TextEncoder().encode(St),Jn=N4[0],k1=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=U(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==Jn)throw new Error("Invalid key")}toString(e="utf8"){return O(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(St))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=N4),this._buf[0]!==Jn){let e=new Uint8Array(this._buf.byteLength+1);e.fill(Jn,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===Jn;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let i=t[o],s=n[o];if(i<s)return!0;if(i>s)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(St).slice(1)}type(){return d7(this.baseNamespace())}name(){return p7(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(St)||(e+=St),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(St):new r(e.slice(0,-1).join(St))}child(e){return this.toString()===St?e:e.toString()===St?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...m7(e.map(t=>t.namespaces()))])}};function d7(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function p7(r){let e=r.split(":");return e[e.length-1]}function m7(r){return[].concat(...r)}var g7=U("/pk/");function eo(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>!y1(e))}}function M4(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>y1(e))}}function U4(r){return r}async function Ht(r,e){let t=await at.digest(r);return e?.signal?.throwIfAborted(),t.digest}async function ke(r,e){return Ht(r.toMultihash().bytes,e)}function zt(r,e){return new k1(`${r}/${O(e,"base32")}`,!1)}function K4(r){return Me([g7,r.toMultihash().bytes])}function q4(r){return O(r.subarray(0,4))==="/pk/"}function F4(r){let e=fe(r.subarray(4));return Le(e)}function g2(r,e){let t=new Date;return new le(r,e,t).serialize()}function to(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:W.createV1(W2,fe(U(n,"base32"))),peerId:B4(t)}}function ro(r,e,t){let n=typeof e=="string"?e:O(e.multihash.bytes,"base32"),o=[r,n];return t!=null&&o.push(t.toString()),new k1(o.join("/"))}function no(r){return new Date(rr(r))}function dr(r,e,t){return async function*(...n){let o=e.queryTime?.timer(t),i=e.errorTime?.timer(t),s=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw s=!0,i?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||o?.()}}}function oo(r,e,t){return async function(...n){let o=e?.queryTime?.timer(t),i=e?.errorTime?.timer(t),s=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw s=!0,i?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||o?.()}}}var io=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:o,peerRouting:i,queryManager:s,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n,this.selectors=o,this.peerRouting=i,this.queryManager=s,this.network=a,this.get=e.metrics?.traceFunction("libp2p.kadDHT.get",this.get.bind(this),{optionsIndex:1})??this.get,this.put=e.metrics?.traceFunction("libp2p.kadDHT.put",this.put.bind(this),{optionsIndex:2})??this.put}async getLocal(e,t){this.log("getLocal %b",e);let n=zt(this.datastorePrefix,e);this.log("fetching record for key %k",n);let o=await this.components.datastore.get(n,t);this.log("found %k in local datastore",n);let i=le.deserialize(o);return await $r(this.validators,i,t),i}async*sendCorrectionRecord(e,t,n,o){this.log("sendCorrection for %b",e);let i=g2(e,n);for(let{value:s,from:a}of t){if(Z(s,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let u=zt(this.datastorePrefix,e);this.log(`Storing corrected record for key ${u.toString()}`),await this.components.datastore.put(u,i.subarray(),o)}catch(u){this.log.error("failed error correcting self - %e",u)}continue}let c=!1,l={type:$.PUT_VALUE,key:e,record:i};for await(let u of this.network.sendRequest(a,l,o))u.name==="PEER_RESPONSE"&&u.record!=null&&Z(u.record.value,le.deserialize(i).value)&&(c=!0),yield u;if(!c)throw new qt("Could not send correction");this.log.error("failed error correcting entry")}}async*put(e,t,n){this.log("put key %b value %b",e,t);let o=g2(e,t),i=zt(this.datastorePrefix,e);this.log(`storing record for key ${i.toString()}`),await this.components.datastore.put(i,o.subarray(),n),yield*x1(this.peerRouting.getClosestPeers(e,{...n,signal:n.signal}),s=>zr(s,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],l={type:$.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let u of this.network.sendRequest(a.peer.id,l,{...n,path:a.path}))c.push(u),u.name==="PEER_RESPONSE"&&(u.record!=null&&Z(u.record.value,le.deserialize(o).value)||c.push(Ge({from:a.peer.id,error:new qt("Value not put correctly"),path:u.path},n)));return c}),s=>I1(s,{ordered:!1,concurrency:Kt}),async function*(s){for await(let a of s)yield*a})}async*get(e,t){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t)){if(a.name==="VALUE"){n.push(a);continue}yield a}if(n.length===0)return;let o=n.map(a=>a.value),i=0;try{i=C4(this.selectors,e,o)}catch(a){if(a.name!=="InvalidParametersError")throw a}let s=o[i];if(this.log("GetValue %b %b",e,s),s==null)throw new qe("Best value was not found");yield*this.sendCorrectionRecord(e,n,s,{...t,path:{index:-1,queued:0,running:0,total:0}}),yield n[i]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let i=await this.getLocal(e,t);yield T1({value:i.value,from:this.components.peerId,path:{index:-1,running:0,queued:0,total:0}},t)}catch(i){this.log("error getting local value for %b",e,i)}let n=this,o=async function*({peer:i,signal:s,path:a}){for await(let c of n.peerRouting.getValueOrPeers(i.id,e,{...t,signal:s,path:a}))yield c,c.name==="PEER_RESPONSE"&&c.record!=null&&(yield T1({from:i.id,value:c.record.value,path:a},t))};yield*this.queryManager.run(e,o,t)}};function pr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function so(r){let e=fe(te.decode(`z${r}`));return Le(e)}var $t=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return pr(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return pr(this.map.values(),e=>e.key)}values(){return pr(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Gt=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return pr(this.set.entries(),e=>{let t=so(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=so(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return pr(this.set.values(),e=>so(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var y2=class extends $t{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function b2(r){let{name:e,metrics:t}=r,n;return t!=null?n=new y2({name:e,metrics:t}):n=new $t,n}function V4(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function B1(r){if(r.id==null)throw new Error("Invalid peer in message");let e=fe(r.id);return{id:Le(e),multiaddrs:(r.multiaddrs??[]).map(t=>Mn(t))}}var ao=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:i,routingTable:s,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=i,this.routingTable=s,this.providers=a,this.findProviders=e.metrics?.traceFunction("libp2p.kadDHT.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PROVIDER"&&(u.providers??=[],u.providers.push(...l.providers.map(f=>f.id.toString()))),u)})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.kadDHT.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(l,u)=>(l.name==="PEER_RESPONSE"&&l.messageName==="ADD_PROVIDER"&&(u.providers??=[],u.providers.push(l.from.toString())),u)})??this.provide}async*provide(e,t,n={}){this.log("provide %s",e);let o=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId,n);let i={type:$.ADD_PROVIDER,key:o,providers:[V4({id:this.components.peerId,multiaddrs:t})]},s=0,a=this;async function*c(f){try{a.log("sending provider record for %s to %p",e,f.peer.id);for await(let h of a.network.sendMessage(f.peer.id,i,{...n,path:f.path}))h.name==="PEER_RESPONSE"&&(a.log("sent provider record for %s to %p",e,f.peer.id),s++),yield h}catch(h){a.log.error("error sending provide record to peer %p - %e",f.peer.id,h),yield Ge({from:f.peer.id,error:h,path:f.path},n)}}let l=bt({objectMode:!0}),u=new ot({concurrency:Kt});u.addEventListener("idle",()=>{l.end()}),u.addEventListener("failure",f=>{this.log.error("error publishing provider record to peer - %e",f.detail.error)}),u.add(async()=>{let f=[];for await(let h of this.peerRouting.getClosestPeers(o,n))l.push(h),h.name==="FINAL_PEER"&&f.push(h);f.forEach(h=>{u.add(async()=>{for await(let d of c(h))l.push(d)}).catch(d=>{this.log.error("error publishing provider record to peer - %e",d)})})}).catch(f=>{l.end(f)}),yield*l,this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=0,i=e.multihash.bytes,s=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e,t);if(a.length>0){let u=[];for(let f of a.slice(0,n))try{let h=await this.components.peerStore.get(f,t);u.push({id:f,multiaddrs:h.addresses.map(({multiaddr:d})=>d)})}catch(h){if(h.name!=="NotFoundError")throw h;this.log("no peer store entry for %p",f)}if(yield A1({from:this.components.peerId,messageType:$.GET_PROVIDERS,providers:u,path:{index:-1,queued:0,running:0,total:0}},t),yield p2({from:this.components.peerId,providers:u,path:{index:-1,queued:0,running:0,total:0}},t),o+=u.length,o>=n)return}let c=async function*({peer:u,signal:f,path:h}){let d={type:$.GET_PROVIDERS,key:i};yield*s.network.sendRequest(u.id,d,{...t,signal:f,path:h})},l=new Gt(a);for await(let u of this.queryManager.run(i,c,t))if(yield u,u.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",u.providers.length,e,u.closer.length);let f=[];for(let h of u.providers)l.has(h.id)||(l.add(h.id),f.push(h));if(f.length>0&&(yield p2({from:u.from,providers:f,path:u.path},t),o+=f.length,o>=n))return}}};var co=class extends Pe{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new xt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)},this.sendRequest=e.metrics?.traceFunction("libp2p.kadDHT.sendRequest",this.sendRequest.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],i){return{...i,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((i,s)=>{o[`providers-${s}`]=i.id.toString()}),n.closer.length>0&&n.closer.forEach((i,s)=>{o[`closer-${s}`]=i.id.toString()})),o)})??this.sendRequest,this.sendMessage=e.metrics?.traceFunction("libp2p.kadDHT.sendMessage",this.sendMessage.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],i){return{...i,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((i,s)=>{o[`providers-${s}`]=i.id.toString()}),n.closer.length>0&&n.closer.forEach((i,s)=>{o[`closer-${s}`]=i.id.toString()})),o)})??this.sendMessage}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new V("Message type was missing");let i,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield m2({peer:e,path:n.path},n),i=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield d2({to:e,type:o,path:n.path},n);let a=await this._writeReadMessage(i,t,n);i.close(n).catch(c=>{this.log.error("error closing stream to %p - %e",e,c),i?.abort(c)}),yield A1({from:e,messageType:a.type,closer:a.closer.map(B1),providers:a.providers.map(B1),record:a.record==null?void 0:le.deserialize(a.record),path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),i?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield Ge({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(s)}}async*sendMessage(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new V("Message type was missing");let i,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield m2({peer:e,path:n.path},n),i=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield d2({to:e,type:o,path:n.path},n),await this._writeMessage(i,t,n),i.close(n).catch(a=>{this.log.error("error closing stream to %p - %e",e,a),i?.abort(a)}),yield A1({from:e,messageType:o,path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),i?.abort(a),yield Ge({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(s)}}async _writeMessage(e,t,n){await w1(e).write(t,Vt,n)}async _writeReadMessage(e,t,n){let o=w1(e);await o.write(t,Vt,n);let i=await o.read(Vt,n);return i.closer.forEach(s=>{this.safeDispatchEvent("peer",{detail:B1(s)})}),i.providers.forEach(s=>{this.safeDispatchEvent("peer",{detail:B1(s)})}),i}};function Ye(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=Ee(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function mr(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}var Yt=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return[...this.peerDistances]}async add(e,t={index:-1,queued:0,running:0,total:0},n){let o=await ke(e.id,n);this.addWithKadId(e,o,t)}addWithKadId(e,t,n={index:-1,queued:0,running:0,total:0}){if(this.peerDistances.find(s=>s.peer.id.equals(e.id))!=null)return;let o={peer:e,distance:Ye(this.originDhtKey,t),path:n};if(this.peerDistances.length===this.capacity){let s=this.peerDistances[this.peerDistances.length-1];if(s!=null&&mr(o.distance,s.distance)!==-1)return}let i=!1;for(let s=0;s<this.peerDistances.length;s++){let a=mr(this.peerDistances[s].distance,o.distance);if(a===0||a===1){i=!0,this.peerDistances.splice(s,0,o);break}}i||this.peerDistances.push(o),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e,t){if(this.length===0)return!0;let n=await ke(e,t),o=Ye(n,this.originDhtKey),i=this.peerDistances[this.peerDistances.length-1].distance;return mr(o,i)===-1}async anyCloser(e,t){return e.length===0?!1:Promise.any(e.map(async n=>this.isCloser(n,t)))}};var uo=class{log;routingTable;network;validators;queryManager;components;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`),this.findPeer=e.metrics?.traceFunction("libp2p.kadDHT.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.kadDHT.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async findPeerLocal(e,t){let n,o=await this.routingTable.find(e,t);if(o!=null){this.log("findPeerLocal found %p in routing table",e);try{n=await this.components.peerStore.get(o,t)}catch(i){if(i.name!=="NotFoundError")throw i}}if(n==null)try{n=await this.components.peerStore.get(e,t)}catch(i){if(i.name!=="NotFoundError")throw i}if(n!=null)return this.log("findPeerLocal found %p in peer store",e),{id:n.id,multiaddrs:n.addresses.map(i=>i.multiaddr)}}async*_getValueSingle(e,t,n){let o={type:$.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=K4(e),o={index:-1,queued:0,running:0,total:0};for await(let i of this._getValueSingle(e,n,{...t,path:o}))if(yield i,i.name==="PEER_RESPONSE"&&i.record!=null){let s=xn(i.record.value),a=O4(s);if(!a.equals(e))throw new it("public key does not match id");if(a.publicKey==null)throw new it("public key missing");yield T1({from:e,value:i.record.value,path:o},t)}throw new qt(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e,t);if(o!=null){this.log("found local"),yield Xn({from:this.components.peerId,peer:o,path:{index:-1,queued:0,running:0,total:0}},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,i=async function*({peer:s,signal:a,path:c}){let l={type:$.FIND_NODE,key:e.toMultihash().bytes};for await(let u of o.network.sendRequest(s.id,l,{...t,signal:a,path:c}))if(yield u,u.name==="PEER_RESPONSE"){let f=u.closer.find(h=>h.id.equals(e));f!=null&&(yield Xn({from:u.from,peer:f,path:u.path},t))}};for await(let s of this.queryManager.run(e.toMultihash().bytes,i,t))s.name==="FINAL_PEER"&&(n=!0),yield s}if(!n)throw new qe("Not found")}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await Ht(e,t),o=new Yt(n,this.routingTable.kBucketSize),i=this,s=async function*({peer:a,path:c,peerKadId:l,signal:u}){i.log("getClosestPeers asking %p",a.id);let f={type:$.FIND_NODE,key:e};yield*i.network.sendRequest(a.id,f,{...t,signal:u,path:c}),o.addWithKadId(a,l,c)};yield*this.queryManager.run(e,s,t),this.log("found %d peers close to %b",o.length,e);for(let{peer:a,path:c}of o.peers)try{if(a.multiaddrs.length===0&&(a=await i.components.peerStore.getInfo(a.id,t)),a.multiaddrs.length===0)continue;yield Xn({from:this.components.peerId,peer:await i.components.peerStore.getInfo(a.id,t),path:{index:c.index,queued:0,running:0,total:0}},t)}catch{continue}}async*getValueOrPeers(e,t,n){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record,n)}catch{let s="invalid record received, discarded";this.log(s),yield Ge({from:o.from,error:new qt(s),path:n.path},n);continue}yield o}}async _verifyRecordOnline(e,t){if(e.timeReceived==null)throw new Qn("invalid record received");await $r(this.validators,new le(e.key,e.value,e.timeReceived),t)}async getClosestPeersOffline(e,t){let n=[];try{let s=fe(e),a=Le(s),c=await this.components.peerStore.get(a,t);n.push({id:c.id,multiaddrs:c.addresses.map(({multiaddr:l})=>l)})}catch{}let o=await Ht(e,t),i=this.routingTable.closestPeers(o,t);for(let s of i)try{n.push(await this.components.peerStore.getInfo(s,t))}catch(a){if(a.name!=="NotFoundError")throw a}return n.length>0?this.log("getClosestPeersOffline returning the %d closest peer(s) we know to %b",n.length,e):this.log("getClosestPeersOffline could not any peers close to %b with %d peers in the routing table",e,this.routingTable.size),n}};var lo=class{log;datastore;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`${t.datastorePrefix}/provider`,this.datastore=e.datastore}async addProvider(e,t,n){this.log.trace("%p provides %s",t,e),await this.writeProviderEntry(e,t,n)}async removeProvider(e,t,n){let o=ro(this.datastorePrefix,e,t);this.log.trace("%p no longer provides %s",t,e),await this.datastore.delete(o,n)}async getProviders(e,t){this.log.trace("get providers for %c",e);let n=await this.loadProviders(e,t);return this.log.trace("got %d providers for %c",n.size,e),[...n.keys()]}async writeProviderEntry(e,t,n){let o=ro(this.datastorePrefix,e,t),i=sn(n?.time?.getTime()??Date.now());await this.datastore.put(o,i,n)}async loadProviders(e,t){let n=new $t,o=ro(this.datastorePrefix,e);for await(let i of this.datastore.query({prefix:o.toString()},t)){let{peerId:s}=to(i.key);n.set(s,no(i.value))}return n}};async function*H4(r){let{key:e,startingPeers:t,ourPeerId:n,query:o,alpha:i,path:s,numPaths:a,log:c,peersSeen:l,connectionManager:u,signal:f}=r,h=bt({objectMode:!0}),d=new ot({concurrency:i,sort:(g,y)=>mr(g.options.distance,y.options.distance)});d.addEventListener("idle",()=>{h.push(P4({path:{index:s,queued:d.queued,running:d.running,total:d.size}},r)),h.end()}),d.addEventListener("failure",g=>{c.error("error during query - %e",g.detail.error)});let p=()=>{d.abort(),h.end(new Ke)};f.addEventListener("abort",p);try{let y=function(_,w){if(_==null)return;l.add(_.id.toMultihash().bytes);let A=Ye(w,g);d.add(async()=>{try{for await(let D of o({...r,key:e,peer:_,path:{index:s,queued:d.queued,running:d.running,total:d.size},numPaths:a,peerKadId:w,signal:f})){if(D.name==="PEER_RESPONSE")for(let N of D.closer){if(l.has(N.id.toMultihash().bytes)){c("already seen %p in query",N.id);continue}if(n.equals(N.id)){c("not querying ourselves");continue}if(!await u.isDialable(N.multiaddrs)){c("not querying undialable peer");continue}let q=await ke(N.id,{signal:f}),S=Ye(q,g);if(mr(S,A)!==-1){c("skipping %p as they are not closer to %b than %p",N.id,e,_.id);continue}c("querying closer peer %p",N.id),y(N,q)}h.push({...D,path:{index:s,queued:d.queued,running:d.running,total:d.size}})}}catch(D){h.push(Ge({from:_.id,error:D,path:{index:s,queued:d.queued,running:d.running-1,total:d.size-1}},r))}},{distance:A}).catch(D=>{c.error("error during query - %e",D)})};var E=y;let g=await Ht(e,{signal:f});await Promise.all(t.map(async _=>{y({id:_,multiaddrs:[]},await ke(_,{signal:f}))})),yield*h}finally{f.removeEventListener("abort",p)}}var fo=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;allowQueryWithZeroPeers;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??Yn,this.alpha=t.alpha??Kt,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.allowQueryWithZeroPeers=t.allowQueryWithZeroPeers??!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,this.shutDownController.signal,void 0)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(S4);n={...n,signal:c}}let o=new AbortController,i=Ue([this.shutDownController.signal,o.signal,n.signal]);o.signal;let s=this.logger.forComponent(`${this.logPrefix}:query:`+O(e,"base58btc")),a=!1;try{this.routingTable.size===0&&!this.allowQueryWithZeroPeers&&(s("routing table was empty, waiting for some peers before running%s query",n.isSelfQuery===!0?" self":""),await Mt(this.routingTable,"peer:add",{signal:i,filter:d=>!this.peerId.equals(d.detail)}),s("routing table has peers, continuing with%s query",n.isSelfQuery===!0?" self":"")),n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(s("waiting for initial self query before continuing"),await Ut(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),s("query:start");let c=await Ht(e,{signal:i}),l=this.routingTable.closestPeers(c,{count:this.routingTable.kBucketSize}),u=l.sort(()=>Math.random()>.5?1:-1).reduce((d,p,E)=>(d[E%this.disjointPaths].push(p),d),new Array(this.disjointPaths).fill(0).map(()=>[])).filter(d=>d.length>0);if(l.length===0){s.error("running query with no peers");return}let f=ys(1024),h=u.map((d,p)=>H4({...n,key:e,startingPeers:d,ourPeerId:this.peerId,signal:i,query:t,path:p,numPaths:u.length,alpha:this.alpha,log:s,peersSeen:f,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let d of Un(...h)){if(d.name==="QUERY_ERROR"&&s.error("query error - %e",d.error),d.name==="PEER_RESPONSE")for(let p of[...d.closer,...d.providers])await this.connectionManager.isDialable(p.multiaddrs,{signal:i})&&await this.routingTable.add(p.id,{signal:i});i.throwIfAborted(),yield d}a=!0}catch(c){if(this.running)throw c}finally{a||(s("query exited early"),o.abort()),i.clear(),s("query finished")}}};function b7(r){return r[Symbol.asyncIterator]!=null}function x7(r){if(b7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var ho=x7;function w7(r){return r[Symbol.asyncIterator]!=null}function E7(r,e){return w7(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var z4=E7;var po=class{log;peerId;peerRouting;events;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.events=e.events,this.running=!1,this.peerRouting=t.peerRouting,this.count=t.count??Yn,this.interval=t.interval??b4,this.initialInterval=t.initialInterval??x4,this.queryTimeout=t.queryTimeout??w4,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=oo(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=ue(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);e.push(n)}let t=Ue(e);this.controller.signal;try{this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),o=await x1(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),s=>z4(s,this.count),async s=>ho(s));t?.throwIfAborted();let i=Date.now()-n;this.log("self-query found %d peers in %dms",o,i),this.events.dispatchEvent(new CustomEvent("kad-dht:query:self",{detail:{peers:o,duration:i}}))}catch(n){this.log.error("self-query error - %e",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.interval))}};var mo=class extends Pe{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new ot({concurrency:t.concurrency??p4,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new xt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??d4,this.maxQueueSize=t.maxQueueSize??m4,this.validity=t.validity??Gn,this.interval=t.interval??g4,this.contentRouting=t.contentRouting,this.running=!1,this.reprovide=oo(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(l2)}).catch(e=>{this.log.error("error running process to reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async processRecords(e){try{this.safeDispatchEvent("reprovide:start"),this.log("starting reprovide/cleanup");for await(let t of this.datastore.query({prefix:this.datastorePrefix},e))try{let{cid:n,peerId:o}=to(t.key),s=no(t.value).getTime()+this.validity,a=Date.now(),c=a>s,l=this.peerId.equals(o);this.log.trace("comparing: %d (now) < %d (expires) = %s %s",a,s,c,c?"(expired)":"(valid)"),c&&!l&&await this.datastore.delete(t.key,e),this.shouldReprovide(l,s)&&(this.log("reproviding %c as it is within the reprovide threshold (%d)",n,this.reprovideThreshold),this.queueReprovide(n).catch(u=>{this.log.error("could not reprovide %c - %e",n,u)}))}catch(n){this.log.error("error processing datastore key %s - %s",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{this.safeDispatchEvent("reprovide:end"),this.running&&(this.log("queuing next re-provide/cleanup run in %d ms",this.interval),this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(l2)}).catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}shouldReprovide(e,t){if(!e)return!1;let n=Date.now();return t<n?!0:t-n<this.reprovideThreshold}async queueReprovide(e,t){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize,t);let n=this.reprovideQueue.queue.find(o=>o.options.cid.equals(e));if(n!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),n.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async o=>{if(o.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let i=this.reprovideTimeout.getTimeoutSignal(o);try{await this.reprovide(o.cid,o)}finally{this.reprovideTimeout.cleanUp(i)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(o=>{this.log.error("could not re-provide key %c - %e",e,o)})}async reprovide(e,t){await S1(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var v7=20,S7=5e3,_7="kad-close",I7=50,go=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??S7,this.peerSetSize=t.peerSetSize??v7,this.closeTagName=t.closeTagName??_7,this.closeTagValue=t.closeTagValue??I7,this.closestPeers=new Gt,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await ke(this.components.peerId);this.newPeers=new Yt(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new Gt(this.newPeers?.peers.map(({peer:o})=>o.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:{value:this.closeTagValue},[f2]:{value:1}}})}),...[...n].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:void 0,[f2]:void 0}})})])}};function O1(r){return Array.isArray(r?.peers)}var yo=class{peerId;root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e,t){this.peerId=e.peerId,this.prefixLength=t.prefixLength??G4,this.kBucketSize=t.kBucketSize??N1,this.splitThreshold=t.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=t.numberOfOldContactsToPing??Y4,this.lastPingThreshold=t.lastPingThreshold??j4,this.ping=t.ping,this.verify=t.verify,this.onAdd=t.onAdd,this.onRemove=t.onRemove,this.addingPeerMap=b2({name:`${t.metricsPrefix}_adding_peer_map`,metrics:e.metrics}),this.root={prefix:"",depth:0,peers:[]}}async start(){await this.addSelfPeer(this.peerId)}stop(){this.addingPeerMap.clear(),this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e,t){this.localPeer={peerId:e,kadId:await ke(e,t),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await ke(e,t),lastPing:0},o=this.addingPeerMap.get(e);if(o!=null)return o;try{let i=this._add(n,t);this.addingPeerMap.set(e,i),await i}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n,t),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!T7(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n,t);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let o=n.peers.filter(s=>!(s.peerId.equals(this.localPeer?.peerId)||s.lastPing>Date.now()-this.lastPingThreshold)).sort((s,a)=>s.lastPing<a.lastPing?-1:s.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),i=!1;for await(let s of this.ping(o,t))i=!0,await this.remove(s.kadId,t);i&&await this._add(e,t)}*closest(e,t){let n=new Yt(e,t?.count??this.kBucketSize);for(let o of this.toIterable())t?.exclude?.some(i=>i.equals(o.peerId))!==!0&&n.addWithKadId({id:o.peerId,multiaddrs:[]},o.kadId);yield*zr(n.peers,({peer:o})=>o.id)}count(){function e(t){if(O1(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e,t){let n=this._determineBucket(e),o=this._indexOf(n,e);if(o>-1){let i=n.peers.splice(o,1)[0];await this.onRemove?.(i,n,t)}}*toIterable(){function*e(t){if(O1(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+O(Ye(e,t),"base16"))}_determineBucket(e){let t=O(e,"base2");function n(o,i=0){return O1(o)?o:t[i]==="0"?n(o.left,i+1):n(o.right,i+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>Z(n.kadId,t))}async _split(e,t){let n={prefix:"0",depth:e.depth+1,peers:[]},o={prefix:"1",depth:e.depth+1,peers:[]};for(let i of e.peers)O(i.kadId,"base2")[e.depth]==="0"?(n.peers.push(i),await this.onMove?.(i,e,n,t)):(o.peers.push(i),await this.onMove?.(i,e,o,t));A7(e,n,o)}};function A7(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function T7(r,e){return r.lastPing<Date.now()-e}var N1=20,G4=6;var P7=20,C7=100,Y4=3;var D7=20,R7=100,Q4="kad-peer",L7=1,j4=6e5,k7=!0,B7=1e3,bo=class extends Pe{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;shutdownController;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??N1,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??Q4,this.peerTagValue=t.peerTagValue??L7,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??k7,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??B7,this.shutdownController=new AbortController,this.shutdownController.signal,this.pingOldContactQueue=new E1({concurrency:t.pingOldContactConcurrency??D7,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??R7}),this.pingOldContactTimeout=new xt({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new E1({concurrency:t.pingNewContactConcurrency??P7,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??C7}),this.pingNewContactTimeout=new xt({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new yo(e,{kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved,metricsPrefix:t.metricsPrefix}),this.closestPeerTagger=new go(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,await Gr(this.closestPeerTagger,this.kb))}async afterStart(){let e=0;Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let t=Ue([this.shutdownController.signal,AbortSignal.timeout(2e4)]);try{for(let n of await this.components.peerStore.all({filters:[o=>o.protocols.includes(this.protocol)&&o.tags.has(Q4)],limit:this.populateFromDatastoreLimit,signal:t})){if(!this.running)return;try{await this.add(n.id,{signal:t}),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(n.id,{tags:{[this.peerTagName]:void 0}})}}}finally{t.clear()}this.log("added %d peer store peers to the routing table",e)}).catch(t=>{this.log.error("error adding %d, peer store peers to the routing table - %e",e,t)})}async stop(){this.running=!1,await V1(this.closestPeerTagger,this.kb),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort(),this.shutdownController.abort()}async peerAdded(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let o of e){if(this.kb.get(o.kadId)==null){this.log("asked to ping contact %p that was not in routing table",o.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let i=this.pingOldContactQueue.find(o.peerId);if(i!=null)return this.log("asked to ping contact %p was already being pinged",o.peerId),await i.join(t)?void 0:o;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),l=Ue([c,this.shutdownController.signal,a?.signal]);try{return await this.pingContact(o,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),l.clear()}},{peerId:o.peerId,signal:t?.signal}))return o})}for await(let o of I1(n))o!=null&&(yield o)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),o=Ue([n,this.shutdownController.signal,t?.signal]);try{let i=this.pingNewContactQueue.find(e.peerId);return i!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await i.join({signal:o})):await this.pingNewContactQueue.add(async s=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,s)),{peerId:e.peerId,signal:o})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),o.clear()}}async pingContact(e,t){let n;try{return this.log("pinging contact %p",e.peerId),await this.components.ping.ping(e.peerId,t),this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0}catch(o){return this.log("error pinging old contact %p - %e",e.peerId,o),n?.abort(o),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e,t){let n=await ke(e,t);return this.kb.get(n)?.peerId}closestPeer(e){let t=this.closestPeers(e,{count:1});if(t.length>0)return t[0]}closestPeers(e,t){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");let n=await ke(e,t);await this.kb.remove(n,t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,o=20,i=0;function s(a){if(O1(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<o&&(o=a.peers.length),a.peers.length>i&&(i=a.peers.length);return}s(a.left),s(a.right)}s(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(o),this.metrics.routingTableKadBucketMaxOccupancy.update(i),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var Z4=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var xo=15,wo=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:i,refreshQueryTimeout:s,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=i??E4,this.refreshQueryTimeout=s??v4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1,t){this.log("refreshing routing table");let n=this._maxCommonPrefix(),o=this._getTrackedCommonPrefixLengthsForRefresh(n);this.log(`max common prefix length ${n}`),this.log(`tracked CPLs [ ${o.map(i=>i.toISOString()).join(", ")} ]`),Promise.all(o.map(async(i,s)=>{try{if(await this._refreshCommonPrefixLength(s,i,e,t),this._numPeersForCpl(n)===0){let a=Math.min(2*(s+1),o.length-1);for(let c=s+1;c<a+1;c++)try{await this._refreshCommonPrefixLength(c,i,e,t)}catch(l){this.log.error("failed to refresh entries with common prefix length %d - %e",c,l)}}}catch(a){this.log.error("failed to refresh entries with common prefix length - %e",a)}})).catch(i=>{this.log.error("failed to refresh table - %e",i)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(i=>{this.log.error("failed to set refresh timeout - %e",i)})}async _refreshCommonPrefixLength(e,t,n,o){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let i=this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,i,this.routingTable.size);let s=Ue([o?.signal,AbortSignal.timeout(this.refreshQueryTimeout)]);try{let a=await ho(this.peerRouting.getClosestPeers(i.toMultihash().bytes,{signal:s}));this.log(`found ${a} peers that were close to imaginary peer %p`,i),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,i,this.routingTable.size)}finally{s.clear()}}_getTrackedCommonPrefixLengthsForRefresh(e){e>xo&&(e=xo);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}_generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=dn(2),n=(t[1]<<8)+t[0],o=this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),i=fe(o);return Le(i)}_makePeerId(e,t,n){if(n>xo)throw new Error(`Cannot generate peer ID for common prefix length greater than ${xo}`);let s=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=s&a|t&~a,l=Z4[c],u=new ArrayBuffer(34),f=new DataView(u,0,u.byteLength);return f.setUint8(0,at.code),f.setUint8(1,32),f.setUint32(2,l,!1),new Uint8Array(f.buffer,f.byteOffset,f.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=Ye(this.routingTable.kb.localPeer.kadId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Eo=class{peerId;providers;peerStore;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.peerId=e.peerId,this.providers=t.providers,this.peerStore=e.peerStore}async handle(e,t){if(t.key==null||t.key.length===0)throw new Te("Missing key");let n;try{n=W.decode(t.key)}catch{throw new Te("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us, %p to store provider record for for %c",e,this.peerId,n),await Promise.all(t.providers.map(async o=>{let i=fe(o.id),s=Le(i),a=o.multiaddrs.map(c=>Mn(c));if(!e.equals(s)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,a),await this.providers.addProvider(n,s),await this.peerStore.merge(s,{multiaddrs:a})}))}};var vo=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers close to %b",e,t.key);try{if(t.key==null)throw new Te("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getClosestPeersOffline(t.key,{exclude:[e,this.peerId]});Z(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(i=>i.decapsulateCode(421))});let o={type:$.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:i})=>i.length).map(i=>({id:i.id.toMultihash().bytes,multiaddrs:i.multiaddrs.map(s=>s.bytes)})),providers:[]};return o.closer.length===0?this.log("could not find any peers closer to %b for %p",t.key,e):this.log("found %d peers close to %b for %p",o.closer.length,t.key,e),o}catch(n){throw this.log("error during finding peers closer to %b for %p - %e",t.key,e,n),n}}};function O7(r){return r[Symbol.asyncIterator]!=null}function N7(r){if(O7(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var W4=N7;var So=class{peerId;peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:get-providers`),this.peerId=e.peerId,this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new Te("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=W.decode(t.key)}catch{throw new Te("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[o,i]=await Promise.all([W4(zr(await this.providers.getProviders(n),async a=>{let c=await this.peerStore.get(a);return{id:c.id,multiaddrs:c.addresses.map(({multiaddr:u})=>u)}})),this.peerRouting.getClosestPeersOffline(t.key)]),s={type:$.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:i.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)})),providers:o.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))};return this.log("got %s providers %s closerPeers",s.providers.length,s.closer.length),s}async _getAddresses(e){return[]}};var _o=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new Te("Invalid key");let o={type:$.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(q4(n)){this.log("is public key");let a=F4(n),c;try{let l=await this.peerStore.get(a);if(l.id.publicKey==null)throw new qe("No public key found in key book");c=Tt(l.id.publicKey)}catch(l){if(l.name!=="NotFoundError")throw l}if(c!=null)return this.log("returning found public key"),o.record=new le(n,c,new Date).serialize(),o}let[i,s]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getClosestPeersOffline(n)]);return i!=null&&(this.log("had record for %b in local datastore",n),o.record=i.serialize()),s.length>0&&(this.log("had %s closer peers in routing table",s.length),o.closer=s.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=zt(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(i){if(i.name==="NotFoundError")return;throw i}let o=le.deserialize(n);if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>Gn){await this.datastore.delete(t);return}return o}};var Io=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Ao=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null)throw this.log.error("empty record from %p",e),new Te(`Empty record from: ${e}`);try{let o=le.deserialize(t.record);await $r(this.validators,o),o.timeReceived=new Date;let i=zt(this.datastorePrefix,o.key);await this.components.datastore.put(i,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,i)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var To=class{handlers;log;metrics;incomingMessageTimeout;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`),rpcTime:e.metrics?.registerMetricGroup(`${t.metricsPrefix}_inbound_rpc_time_seconds`,{label:"operation"})},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.incomingMessageTimeout=t.incomingMessageTimeout??1e4,this.handlers={[$.GET_VALUE.toString()]:new _o(e,t),[$.PUT_VALUE.toString()]:new Ao(e,t),[$.FIND_NODE.toString()]:new vo(e,t),[$.ADD_PROVIDER.toString()]:new Eo(e,t),[$.GET_PROVIDERS.toString()]:new So(e,t),[$.PING.toString()]:new Io(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch{this.metrics.errors?.increment({[t.type]:!0})}}async onIncomingStream(e,t){let n=()=>{e.abort(new F1)},o=AbortSignal.timeout(this.incomingMessageTimeout);o.addEventListener("abort",n);let i=w1(e).pb(Vt);for(;;){if(e.readStatus!=="readable"){await e.close({signal:o});break}let s=await i.read({signal:o}),a=this.metrics?.rpcTime?.timer(s.type.toString()),c=this.metrics?.rpcTime?.timer(s.type.toString()),l=!1;try{this.log("incoming %s from %p",s.type,t.remotePeer);let u=await this.handleMessage(t.remotePeer,s);u!=null&&await i.write(u,{signal:o})}catch(u){throw l=!0,c?.(),u}finally{l||a?.()}o.removeEventListener("abort",n),o=AbortSignal.timeout(this.incomingMessageTimeout),o.addEventListener("abort",n)}}};var Po=class extends Pe{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var x2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await S1(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers.map(o=>({...o,routing:"kad-dht"})))}async put(e,t,n){await S1(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new qe("Could not find value for key")}},w2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new qe("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},M7=32,U7=64,Co=class extends Pe{k;a;d;protocol;routingTable;providers;network;peerRouting;components;log;running;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;onPeerConnectTimeout;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",o=t.datastorePrefix??"/dht",i=t.metricsPrefix??"libp2p_kad_dht",s={queries:e.metrics?.registerMetricGroup(`${i}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${i}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${i}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${i}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.k=t.kBucketSize??N1,this.a=t.alpha??Kt,this.d=t.disjointPaths??this.a,this.protocol=t.protocol??h4,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??M7,this.maxOutboundStreams=t.maxOutboundStreams??U7,this.peerInfoMapper=t.peerInfoMapper??eo,this.onPeerConnectTimeout=t.onPeerConnectTimeout??y4,this.providers=new lo(e,{...t.providers,logPrefix:n,datastorePrefix:o}),this.validators={...R4,...t.validators},this.selectors={...D4,...t.selectors},this.network=new co(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:i}),this.routingTable=new bo(e,{kBucketSize:this.k,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:i,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network});let a=ue();t.allowQueryWithZeroPeers===!0&&a.resolve(),this.queryManager=new fo(e,{disjointPaths:this.d,alpha:this.a,logPrefix:n,metricsPrefix:i,initialQuerySelfHasRun:a,routingTable:this.routingTable,allowQueryWithZeroPeers:t.allowQueryWithZeroPeers}),this.peerRouting=new uo(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new io(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n,datastorePrefix:o}),this.contentRouting=new ao(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new wo(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new To(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:i,datastorePrefix:o,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new Po(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new po(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:a,operationMetrics:s}),this.reprovider=new mo(e,{...t.reprovide,logPrefix:n,metricsPrefix:i,datastorePrefix:o,contentRouting:this.contentRouting,operationMetrics:s}),this.network.addEventListener("peer",c=>{let l=c.detail;this.onPeerConnect(l).catch(u=>{this.log.error("could not add %p to routing table - %e",l.id,u)}),this.dispatchEvent(new CustomEvent("peer",{detail:l}))}),this.topologyListener.addEventListener("peer",c=>{let l=c.detail;Promise.resolve().then(async()=>{let u=await this.components.peerStore.get(l),f={id:l,multiaddrs:u.addresses.map(({multiaddr:h})=>h),protocols:u.protocols};await this.onPeerConnect(f)}).catch(u=>{this.log.error("could not add %p to routing table - %e",l,u)})}),this.dhtPeerRouting=new w2(this),this.dhtContentRouting=new x2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",c=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let l=c.detail.peer.addresses.some(({multiaddr:f})=>!y1(f)&&!f4.exactMatch(f)),u=this.getMode();l&&u==="client"?await this.setMode("server"):u==="server"&&!l&&await this.setMode("client")}).catch(l=>{this.log.error("error setting dht server mode - %e",l)})}),this.get=dr(this.get.bind(this),s,"GET_VALUE"),this.findProviders=dr(this.findProviders.bind(this),s,"FIND_PROVIDERS"),this.findPeer=dr(this.findPeer.bind(this),s,"FIND_PEER"),this.getClosestPeers=dr(this.getClosestPeers.bind(this),s,"GET_CLOSEST_PEERS"),this.provide=dr(this.provide.bind(this),s,"PROVIDE"),this.put=dr(this.put.bind(this),s,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[D2]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery","@libp2p/kad-dht"];[R2]=["@libp2p/identify","@libp2p/ping"];get[I2](){return this.dhtContentRouting}get[T2](){return this.dhtPeerRouting}get[A2](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id,e.multiaddrs),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(n=>n.toString()));return}let t=AbortSignal.timeout(this.onPeerConnectTimeout);try{await this.routingTable.add(e.id,{signal:t})}catch(n){this.log.error("could not add %p to routing table - %e",e.id,n)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e,t){if(e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol,t),e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{signal:t?.signal,maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running||(this.running=!0,await this.setMode(this.clientMode?"client":"server",{force:!0}),await Gr(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await Gr(this.querySelf))}async stop(){this.running=!1,await V1(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async cancelReprovide(e,t){await this.providers.removeProvider(e,this.components.peerId,t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(e){this.routingTableRefresh.refreshTable(!0,e)}};var E2;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER",r[r.PATH_ENDED=8]="PATH_ENDED"})(E2||(E2={}));function K7(r={}){return e=>new Co(e,r)}return o6(q7);})();
|
|
2
|
+
"use strict";var Libp2PKadDht=(()=>{var c5=Object.create;var Yn=Object.defineProperty;var u5=Object.getOwnPropertyDescriptor;var l5=Object.getOwnPropertyNames;var f5=Object.getPrototypeOf,h5=Object.prototype.hasOwnProperty;var Ho=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ae=(r,e)=>{for(var t in e)Yn(r,t,{get:e[t],enumerable:!0})},U2=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l5(e))!h5.call(r,o)&&o!==t&&Yn(r,o,{get:()=>e[o],enumerable:!(n=u5(e,o))||n.enumerable});return r};var d5=(r,e,t)=>(t=r!=null?c5(f5(r)):{},U2(e||!r||!r.__esModule?Yn(t,"default",{value:r,enumerable:!0}):t,r)),p5=r=>U2(Yn({},"__esModule",{value:!0}),r);var Os=Ho(qr=>{"use strict";Object.defineProperty(qr,"__esModule",{value:!0});qr.Netmask4Impl=void 0;qr.ip2long=Kr;qr.long2ip=at;function at(r){let e=(r&-16777216)>>>24,t=(r&255<<16)>>>16,n=(r&65280)>>>8,o=r&255;return[e,t,n,o].join(".")}var Xa=48,Ja=97,e8=65;function t8(r){let e=0,t=10,n="9",o=0;r.length>1&&r[o]==="0"&&(r[o+1]==="x"||r[o+1]==="X"?(o+=2,t=16):"0"<=r[o+1]&&r[o+1]<="9"&&(o++,t=8,n="7"));let i=o;for(;o<r.length;){if("0"<=r[o]&&r[o]<=n)e=e*t+(r.charCodeAt(o)-Xa)>>>0;else if(t===16)if("a"<=r[o]&&r[o]<="f")e=e*t+(10+r.charCodeAt(o)-Ja)>>>0;else if("A"<=r[o]&&r[o]<="F")e=e*t+(10+r.charCodeAt(o)-e8)>>>0;else break;else break;if(e>4294967295)throw new Error("too large");o++}if(o===i)throw new Error("empty octet");return[e,o]}function Kr(r){let e=[];for(let t=0;t<=3&&r.length!==0;t++){if(t>0){if(r[0]!==".")throw new Error("Invalid IP");r=r.substring(1)}let[n,o]=t8(r);r=r.substring(o),e.push(n)}if(r.length!==0)throw new Error("Invalid IP");switch(e.length){case 1:if(e[0]>4294967295)throw new Error("Invalid IP");return e[0]>>>0;case 2:if(e[0]>255||e[1]>16777215)throw new Error("Invalid IP");return(e[0]<<24|e[1])>>>0;case 3:if(e[0]>255||e[1]>255||e[2]>65535)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2])>>>0;case 4:if(e[0]>255||e[1]>255||e[2]>255||e[3]>255)throw new Error("Invalid IP");return(e[0]<<24|e[1]<<16|e[2]<<8|e[3])>>>0;default:throw new Error("Invalid IP")}}var ks=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(!n){let o=e.split("/",2);e=o[0],n=o[1]}if(n||(n=32),typeof n=="string"&&n.indexOf(".")>-1){try{this.maskLong=Kr(n)}catch{throw new Error("Invalid mask: "+n)}this.bitmask=NaN;for(let o=32;o>=0;o--)if(this.maskLong===4294967295<<32-o>>>0){this.bitmask=o;break}}else if(n||n===0)this.bitmask=parseInt(n,10),this.maskLong=0,this.bitmask>0&&(this.maskLong=4294967295<<32-this.bitmask>>>0);else throw new Error("Invalid mask: empty");try{this.netLong=(Kr(e)&this.maskLong)>>>0}catch{throw new Error("Invalid net address: "+e)}if(!(this.bitmask<=32))throw new Error("Invalid mask for ip4: "+n);this.size=Math.pow(2,32-this.bitmask),this.base=at(this.netLong),this.mask=at(this.maskLong),this.hostmask=at(~this.maskLong),this.first=this.bitmask<=30?at(this.netLong+1):this.base,this.last=this.bitmask<=30?at(this.netLong+this.size-2):at(this.netLong+this.size-1),this.broadcast=this.bitmask<=30?at(this.netLong+this.size-1):void 0}contains(e){return typeof e=="string"&&(e.indexOf("/")>0||e.split(".").length!==4)&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):(Kr(e)&this.maskLong)>>>0===(this.netLong&this.maskLong)>>>0}next(e=1){return new r(at(this.netLong+this.size*e),this.mask)}forEach(e){let t=Kr(this.first),n=Kr(this.last),o=0;for(;t<=n;)e(at(t),t,o),o++,t++}toString(){return this.base+"/"+this.bitmask}};qr.Netmask4Impl=ks});var G3=Ho(zr=>{"use strict";Object.defineProperty(zr,"__esModule",{value:!0});zr.Netmask6Impl=void 0;zr.ip6bigint=Ns;zr.bigint2ip6=lr;var r8=Os(),Bs=(1n<<128n)-1n;function Ns(r){let e=r.indexOf("%");e!==-1&&(r=r.substring(0,e));let t=r.lastIndexOf(":");if(t!==-1&&r.indexOf(".",t)!==-1){let n=r.substring(t+1),o=(0,r8.ip2long)(n),i=r.substring(0,t+1)+"0:0";return j3(i)&~0xffffffffn|BigInt(o)}return j3(r)}function j3(r){let e=r.indexOf("::"),t;if(e!==-1){let o=r.substring(0,e),i=r.substring(e+2),s=o===""?[]:o.split(":"),a=i===""?[]:i.split(":"),c=8-s.length-a.length;if(c<0)throw new Error("Invalid IPv6: too many groups");t=[...s,...Array(c).fill("0"),...a]}else t=r.split(":");if(t.length!==8)throw new Error("Invalid IPv6: expected 8 groups, got "+t.length);let n=0n;for(let o=0;o<8;o++){let i=t[o];if(i.length===0||i.length>4)throw new Error('Invalid IPv6: bad group "'+i+'"');let s=parseInt(i,16);if(isNaN(s)||s<0||s>65535)throw new Error('Invalid IPv6: bad group "'+i+'"');n=n<<16n|BigInt(s)}return n}function lr(r){if(r<0n||r>Bs)throw new Error("Invalid IPv6 address value");let e=[];for(let s=0;s<8;s++)e.unshift(Number(r&0xffffn)),r>>=16n;let t=-1,n=0,o=-1,i=0;for(let s=0;s<8;s++)e[s]===0?o===-1?(o=s,i=1):i++:(i>n&&i>=2&&(t=o,n=i),o=-1,i=0);if(i>n&&i>=2&&(t=o,n=i),t!==-1&&t+n===8&&t>0)return e.slice(0,t).map(a=>a.toString(16)).join(":")+"::";if(t===0)return"::"+e.slice(n).map(a=>a.toString(16)).join(":");if(t>0){let s=e.slice(0,t).map(c=>c.toString(16)),a=e.slice(t+n).map(c=>c.toString(16));return s.join(":")+"::"+a.join(":")}else return e.map(s=>s.toString(16)).join(":")}var Fs=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");let n=t;if(n==null){let o=e.indexOf("/");o!==-1?(n=parseInt(e.substring(o+1),10),e=e.substring(0,o)):n=128}if(isNaN(n)||n<0||n>128)throw new Error("Invalid mask for IPv6: "+n);this.bitmask=n,this.bitmask===0?this.maskBigint=0n:this.maskBigint=Bs>>BigInt(128-this.bitmask)<<BigInt(128-this.bitmask);try{this.netBigint=Ns(e)&this.maskBigint}catch{throw new Error("Invalid IPv6 net address: "+e)}this.size=Number(1n<<BigInt(128-this.bitmask)),this.base=lr(this.netBigint),this.mask=lr(this.maskBigint),this.hostmask=lr(~this.maskBigint&Bs),this.first=this.base,this.last=lr(this.netBigint+(1n<<BigInt(128-this.bitmask))-1n),this.broadcast=void 0}contains(e){return typeof e=="string"&&e.indexOf("/")>0&&(e=new r(e)),e instanceof r?this.contains(e.base)&&this.contains(e.last):(Ns(e)&this.maskBigint)===this.netBigint}next(e=1){let t=1n<<BigInt(128-this.bitmask);return new r(lr(this.netBigint+t*BigInt(e)),this.bitmask)}forEach(e){let t=this.netBigint,n=1n<<BigInt(128-this.bitmask),o=this.netBigint+n-1n,i=0;for(;t<=o;)e(lr(t),Number(t),i),i++,t++}toString(){return this.base+"/"+this.bitmask}};zr.Netmask6Impl=Fs});var Y3=Ho(Ut=>{"use strict";Object.defineProperty(Ut,"__esModule",{value:!0});Ut.long2ip=Ut.ip2long=Ut.Netmask=void 0;var M1=Os();Object.defineProperty(Ut,"ip2long",{enumerable:!0,get:function(){return M1.ip2long}});Object.defineProperty(Ut,"long2ip",{enumerable:!0,get:function(){return M1.long2ip}});var n8=G3(),Ms=class r{constructor(e,t){if(typeof e!="string")throw new Error("Missing `net' parameter");(e.indexOf("/")!==-1?e.substring(0,e.indexOf("/")):e).indexOf(":")!==-1?this._impl=new n8.Netmask6Impl(e,t):this._impl=new M1.Netmask4Impl(e,t),this.base=this._impl.base,this.mask=this._impl.mask,this.hostmask=this._impl.hostmask,this.bitmask=this._impl.bitmask,this.size=this._impl.size,this.first=this._impl.first,this.last=this._impl.last,this.broadcast=this._impl.broadcast,this._impl instanceof M1.Netmask4Impl?(this.maskLong=this._impl.maskLong,this.netLong=this._impl.netLong):(this.maskLong=0,this.netLong=0)}contains(e){return typeof e=="string"&&(e.indexOf("/")>0?e=new r(e):e.indexOf(":")===-1&&e.split(".").length!==4&&(e=new r(e))),e instanceof r?this.contains(e.base)&&this.contains(e.broadcast||e.last):this._impl.contains(e)}next(e=1){let t=this._impl.next(e);return new r(t.base,t.bitmask)}forEach(e){this._impl.forEach(e)}toString(){return this._impl.toString()}};Ut.Netmask=Ms});var X7={};Ae(X7,{EventTypes:()=>N2,MessageType:()=>$,Record:()=>fe,kadDHT:()=>W7,passthroughMapper:()=>Y4,removePrivateAddressesMapper:()=>mo,removePublicAddressesMapper:()=>G4});var K2=Symbol.for("@libp2p/content-routing");var Ke=class extends Error{static name="AbortError";constructor(e="The operation was aborted"){super(e),this.name="AbortError"}};var K=class extends Error{static name="InvalidParametersError";constructor(e="Invalid parameters"){super(e),this.name="InvalidParametersError"}},ut=class extends Error{static name="InvalidPublicKeyError";constructor(e="Invalid public key"){super(e),this.name="InvalidPublicKeyError"}};var qe=class extends Error{static name="NotFoundError";constructor(e="Not found"){super(e),this.name="NotFoundError"}};var Zn=class extends Error{static name="InvalidCIDError";constructor(e="Invalid CID"){super(e),this.name="InvalidCIDError"}},Qn=class extends Error{static name="InvalidMultihashError";constructor(e="Invalid Multihash"){super(e),this.name="InvalidMultihashError"}};var Pe=class extends Error{static name="InvalidMessageError";constructor(e="Invalid message"){super(e),this.name="InvalidMessageError"}};var Wn=class extends Error{static name="TimeoutError";constructor(e="Timed out"){super(e),this.name="TimeoutError"}};var Wt=class extends Error{static name="UnsupportedKeyTypeError";constructor(e="Unsupported key type"){super(e),this.name="UnsupportedKeyTypeError"}};var q2=Symbol.for("@libp2p/peer-discovery");var $o=Symbol.for("@libp2p/peer-id");var z2=Symbol.for("@libp2p/peer-routing");var V2="keep-alive";function H2(r){return r!=null&&typeof r.start=="function"&&typeof r.stop=="function"}async function Jr(...r){let e=[];for(let t of r)H2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStart!=null&&await t.beforeStart()})),await Promise.all(e.map(async t=>{await t.start()})),await Promise.all(e.map(async t=>{t.afterStart!=null&&await t.afterStart()}))}async function Xn(...r){let e=[];for(let t of r)H2(t)&&e.push(t);await Promise.all(e.map(async t=>{t.beforeStop!=null&&await t.beforeStop()})),await Promise.all(e.map(async t=>{await t.stop()})),await Promise.all(e.map(async t=>{t.afterStop!=null&&await t.afterStop()}))}function m5(r){return typeof r?.handleEvent=="function"}function g5(r){return(r!==!0&&r!==!1&&r?.once)??!1}var Ce=class extends EventTarget{#e=new Map;constructor(){super()}listenerCount(e){let t=this.#e.get(e);return t==null?0:t.length}addEventListener(e,t,n){let o=g5(n);super.addEventListener(e,s=>{if(o){let a=this.#e.get(s.type);a!=null&&(a=a.filter(({callback:c})=>c!==t),this.#e.set(s.type,a))}m5(t)?t.handleEvent(s):t(s)},n);let i=this.#e.get(e);i==null&&(i=[],this.#e.set(e,i)),i.push({callback:t,once:o})}removeEventListener(e,t,n){super.removeEventListener(e.toString(),t??null,n);let o=this.#e.get(e);o!=null&&(o=o.filter(({callback:i})=>i!==t),this.#e.set(e,o))}safeDispatchEvent(e,t={}){return this.dispatchEvent(new CustomEvent(e,t))}};var $2=Symbol.for("@libp2p/service-capabilities"),j2=Symbol.for("@libp2p/service-dependencies");var en=class extends Error{constructor(e="An error occurred while verifying a message"){super(e),this.name="VerificationError"}},Jn=class extends Error{constructor(e="Missing Web Crypto API"){super(e),this.name="WebCryptoMissingError"}};var G2={get(r=globalThis){let e=r.crypto;if(e?.subtle==null)throw new Jn("Missing Web Crypto API. The most likely cause of this error is that this page is being accessed from an insecure context (i.e. not HTTPS). For more information and possible resolutions see https://github.com/libp2p/js-libp2p/blob/main/packages/crypto/README.md#web-crypto-api");return e}};var Ne=G2;var Qo={};Ae(Qo,{base58btc:()=>te,base58flickr:()=>S5});var M9=new Uint8Array(0);function Y2(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function lt(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")}function Z2(r){return new TextEncoder().encode(r)}function Q2(r){return new TextDecoder().decode(r)}function y5(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n<t.length;n++)t[n]=255;for(var o=0;o<r.length;o++){var i=r.charAt(o),s=i.charCodeAt(0);if(t[s]!==255)throw new TypeError(i+" is ambiguous");t[s]=o}var a=r.length,c=r.charAt(0),u=Math.log(a)/Math.log(256),l=Math.log(256)/Math.log(a);function f(g){if(g instanceof Uint8Array||(ArrayBuffer.isView(g)?g=new Uint8Array(g.buffer,g.byteOffset,g.byteLength):Array.isArray(g)&&(g=Uint8Array.from(g))),!(g instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(g.length===0)return"";for(var b=0,p=0,y=0,v=g.length;y!==v&&g[y]===0;)y++,b++;for(var S=(v-y)*l+1>>>0,R=new Uint8Array(S);y!==v;){for(var A=g[y],O=0,L=S-1;(A!==0||O<p)&&L!==-1;L--,O++)A+=256*R[L]>>>0,R[L]=A%a>>>0,A=A/a>>>0;if(A!==0)throw new Error("Non-zero carry");p=O,y++}for(var T=S-p;T!==S&&R[T]===0;)T++;for(var M=c.repeat(b);T<S;++T)M+=r.charAt(R[T]);return M}function d(g){if(typeof g!="string")throw new TypeError("Expected String");if(g.length===0)return new Uint8Array;var b=0;if(g[b]!==" "){for(var p=0,y=0;g[b]===c;)p++,b++;for(var v=(g.length-b)*u+1>>>0,S=new Uint8Array(v);g[b];){var R=t[g.charCodeAt(b)];if(R===255)return;for(var A=0,O=v-1;(R!==0||A<y)&&O!==-1;O--,A++)R+=a*S[O]>>>0,S[O]=R%256>>>0,R=R/256>>>0;if(R!==0)throw new Error("Non-zero carry");y=A,b++}if(g[b]!==" "){for(var L=v-y;L!==v&&S[L]===0;)L++;for(var T=new Uint8Array(p+(v-L)),M=p;L!==v;)T[M++]=S[L++];return T}}}function h(g){var b=d(g);if(b)return b;throw new Error(`Non-${e} character`)}return{encode:f,decodeUnsafe:d,decode:h}}var b5=y5,w5=b5,X2=w5;var jo=class{name;prefix;baseEncode;constructor(e,t,n){this.name=e,this.prefix=t,this.baseEncode=n}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}},Go=class{name;prefix;baseDecode;prefixCodePoint;constructor(e,t,n){this.name=e,this.prefix=t;let o=t.codePointAt(0);if(o===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=o,this.baseDecode=n}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return J2(this,e)}},Yo=class{decoders;constructor(e){this.decoders=e}or(e){return J2(this,e)}decode(e){let t=e[0],n=this.decoders[t];if(n!=null)return n.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}};function J2(r,e){return new Yo({...r.decoders??{[r.prefix]:r},...e.decoders??{[e.prefix]:e}})}var Zo=class{name;prefix;baseEncode;baseDecode;encoder;decoder;constructor(e,t,n,o){this.name=e,this.prefix=t,this.baseEncode=n,this.baseDecode=o,this.encoder=new jo(e,t,n),this.decoder=new Go(e,t,o)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}};function xr({name:r,prefix:e,encode:t,decode:n}){return new Zo(r,e,t,n)}function It({name:r,prefix:e,alphabet:t}){let{encode:n,decode:o}=X2(t,r);return xr({prefix:e,name:r,encode:n,decode:i=>lt(o(i))})}function x5(r,e,t,n){let o=r.length;for(;r[o-1]==="=";)--o;let i=new Uint8Array(o*t/8|0),s=0,a=0,c=0;for(let u=0;u<o;++u){let l=e[r[u]];if(l===void 0)throw new SyntaxError(`Non-${n} character`);a=a<<t|l,s+=t,s>=8&&(s-=8,i[c++]=255&a>>s)}if(s>=t||(255&a<<8-s)!==0)throw new SyntaxError("Unexpected end of data");return i}function E5(r,e,t){let n=e[e.length-1]==="=",o=(1<<t)-1,i="",s=0,a=0;for(let c=0;c<r.length;++c)for(a=a<<8|r[c],s+=8;s>t;)s-=t,i+=e[o&a>>s];if(s!==0&&(i+=e[o&a<<t-s]),n)for(;(i.length*t&7)!==0;)i+="=";return i}function v5(r){let e={};for(let t=0;t<r.length;++t)e[r[t]]=t;return e}function oe({name:r,prefix:e,bitsPerChar:t,alphabet:n}){let o=v5(n);return xr({prefix:e,name:r,encode(i){return E5(i,n,t)},decode(i){return x5(i,o,t,r)}})}var te=It({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),S5=It({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var Wo={};Ae(Wo,{base32:()=>Tt,base32hex:()=>A5,base32hexpad:()=>C5,base32hexpadupper:()=>R5,base32hexupper:()=>P5,base32pad:()=>I5,base32padupper:()=>T5,base32upper:()=>_5,base32z:()=>D5});var Tt=oe({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),_5=oe({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),I5=oe({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),T5=oe({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),A5=oe({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),P5=oe({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),C5=oe({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),R5=oe({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),D5=oe({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Xo={};Ae(Xo,{base36:()=>tn,base36upper:()=>L5});var tn=It({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),L5=It({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var k5=r0,e0=128,O5=127,B5=~O5,N5=Math.pow(2,31);function r0(r,e,t){e=e||[],t=t||0;for(var n=t;r>=N5;)e[t++]=r&255|e0,r/=128;for(;r&B5;)e[t++]=r&255|e0,r>>>=7;return e[t]=r|0,r0.bytes=t-n+1,e}var F5=Jo,M5=128,t0=127;function Jo(r,n){var t=0,n=n||0,o=0,i=n,s,a=r.length;do{if(i>=a)throw Jo.bytes=0,new RangeError("Could not decode varint");s=r[i++],t+=o<28?(s&t0)<<o:(s&t0)*Math.pow(2,o),o+=7}while(s>=M5);return Jo.bytes=i-n,t}var U5=Math.pow(2,7),K5=Math.pow(2,14),q5=Math.pow(2,21),z5=Math.pow(2,28),V5=Math.pow(2,35),H5=Math.pow(2,42),$5=Math.pow(2,49),j5=Math.pow(2,56),G5=Math.pow(2,63),Y5=function(r){return r<U5?1:r<K5?2:r<q5?3:r<z5?4:r<V5?5:r<H5?6:r<$5?7:r<j5?8:r<G5?9:10},Z5={encode:k5,decode:F5,encodingLength:Y5},Q5=Z5,rn=Q5;function nn(r,e=0){return[rn.decode(r,e),rn.decode.bytes]}function Er(r,e,t=0){return rn.encode(r,e,t),e}function vr(r){return rn.encodingLength(r)}function Xe(r,e){let t=e.byteLength,n=vr(r),o=n+vr(t),i=new Uint8Array(o+t);return Er(r,i,0),Er(t,i,n),i.set(e,o),new Sr(r,t,e,i)}function pe(r){let e=lt(r),[t,n]=nn(e),[o,i]=nn(e.subarray(n)),s=e.subarray(n+i);if(s.byteLength!==o)throw new Error("Incorrect length");return new Sr(t,o,s,e)}function n0(r,e){if(r===e)return!0;{let t=e;return r.code===t.code&&r.size===t.size&&t.bytes instanceof Uint8Array&&Y2(r.bytes,t.bytes)}}var Sr=class{code;size;digest;bytes;constructor(e,t,n,o){this.code=e,this.size=t,this.digest=n,this.bytes=o}};function o0(r,e){let{bytes:t,version:n}=r;return n===0?X5(t,ei(r),e??te.encoder):J5(t,ei(r),e??Tt.encoder)}var i0=new WeakMap;function ei(r){let e=i0.get(r);if(e==null){let t=new Map;return i0.set(r,t),t}return e}var X=class r{code;version;multihash;bytes;"/";constructor(e,t,n,o){this.code=t,this.version=e,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:e,multihash:t}=this;if(e!==on)throw new Error("Cannot convert a non dag-pb CID to CIDv0");if(t.code!==e6)throw new Error("Cannot convert non sha2-256 multihash CID to CIDv0");return r.createV0(t)}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:e,digest:t}=this.multihash,n=Xe(e,t);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(e){return r.equals(this,e)}static equals(e,t){let n=t;return n!=null&&e.code===n.code&&e.version===n.version&&n0(e.multihash,n.multihash)}toString(e){return o0(this,e)}toJSON(){return{"/":o0(this)}}link(){return this}[Symbol.toStringTag]="CID";[Symbol.for("nodejs.util.inspect.custom")](){return`CID(${this.toString()})`}static asCID(e){if(e==null)return null;let t=e;if(t instanceof r)return t;if(t["/"]!=null&&t["/"]===t.bytes||t.asCID===t){let{version:n,code:o,multihash:i,bytes:s}=t;return new r(n,o,i,s??s0(n,o,i.bytes))}else if(t[t6]===!0){let{version:n,multihash:o,code:i}=t,s=pe(o);return r.create(n,i,s)}else return null}static create(e,t,n){if(typeof t!="number")throw new Error("String codecs are no longer supported");if(!(n.bytes instanceof Uint8Array))throw new Error("Invalid digest");switch(e){case 0:{if(t!==on)throw new Error(`Version 0 CID must use dag-pb (code: ${on}) block encoding`);return new r(e,t,n,n.bytes)}case 1:{let o=s0(e,t,n.bytes);return new r(e,t,n,o)}default:throw new Error("Invalid version")}}static createV0(e){return r.create(0,on,e)}static createV1(e,t){return r.create(1,e,t)}static decode(e){let[t,n]=r.decodeFirst(e);if(n.length!==0)throw new Error("Incorrect length");return t}static decodeFirst(e){let t=r.inspectBytes(e),n=t.size-t.multihashSize,o=lt(e.subarray(n,n+t.multihashSize));if(o.byteLength!==t.multihashSize)throw new Error("Incorrect length");let i=o.subarray(t.multihashSize-t.digestSize),s=new Sr(t.multihashCode,t.digestSize,i,o);return[t.version===0?r.createV0(s):r.createV1(t.codec,s),e.subarray(t.size)]}static inspectBytes(e){let t=0,n=()=>{let[f,d]=nn(e.subarray(t));return t+=d,f},o=n(),i=on;if(o===18?(o=0,t=0):i=n(),o!==0&&o!==1)throw new RangeError(`Invalid CID version ${o}`);let s=t,a=n(),c=n(),u=t+c,l=u-s;return{version:o,codec:i,multihashCode:a,digestSize:c,multihashSize:l,size:u}}static parse(e,t){let[n,o]=W5(e,t),i=r.decode(o);if(i.version===0&&e[0]!=="Q")throw Error("Version 0 CID string must not include multibase prefix");return ei(i).set(n,e),i}};function W5(r,e){switch(r[0]){case"Q":{let t=e??te;return[te.prefix,t.decode(`${te.prefix}${r}`)]}case te.prefix:{let t=e??te;return[te.prefix,t.decode(r)]}case Tt.prefix:{let t=e??Tt;return[Tt.prefix,t.decode(r)]}case tn.prefix:{let t=e??tn;return[tn.prefix,t.decode(r)]}default:{if(e==null)throw Error("To parse non base32, base36 or base58btc encoded CID multibase decoder must be provided");return[r[0],e.decode(r)]}}}function X5(r,e,t){let{prefix:n}=t;if(n!==te.prefix)throw Error(`Cannot string encode V0 in ${t.name} encoding`);let o=e.get(n);if(o==null){let i=t.encode(r).slice(1);return e.set(n,i),i}else return o}function J5(r,e,t){let{prefix:n}=t,o=e.get(n);if(o==null){let i=t.encode(r);return e.set(n,i),i}else return o}var on=112,e6=18;function s0(r,e,t){let n=vr(r),o=n+vr(e),i=new Uint8Array(o+t.byteLength);return Er(r,i,0),Er(e,i,n),i.set(t,o),i}var t6=Symbol.for("@ipld/js-cid/CID");var ti={};Ae(ti,{identity:()=>ze});var a0=0,r6="identity",c0=lt;function n6(r,e){if(e?.truncate!=null&&e.truncate!==r.byteLength){if(e.truncate<0||e.truncate>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,e.truncate)}return Xe(a0,c0(r))}var ze={code:a0,name:r6,encode:c0,digest:n6};function Q(r,e){if(r===e)return!0;if(r.byteLength!==e.byteLength)return!1;for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return!1;return!0}function Ee(r=0){return new Uint8Array(r)}function ve(r=0){return new Uint8Array(r)}function Me(r,e){e==null&&(e=r.reduce((o,i)=>o+i.length,0));let t=ve(e),n=0;for(let o of r)t.set(o,n),n+=o.length;return t}var l0=Symbol.for("@achingbrain/uint8arraylist");function u0(r,e){if(e==null||e<0)throw new RangeError("index is out of bounds");let t=0;for(let n of r){let o=t+n.byteLength;if(e<o)return{buf:n,index:e-t};t=o}throw new RangeError("index is out of bounds")}function t1(r){return!!r?.[l0]}var me=class r{bufs;length;[l0]=!0;constructor(...e){this.bufs=[],this.length=0,e.length>0&&this.appendAll(e)}*[Symbol.iterator](){yield*this.bufs}get byteLength(){return this.length}append(...e){this.appendAll(e)}appendAll(e){let t=0;for(let n of e)if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.push(n);else if(t1(n)){t+=n.byteLength;for(let o of n.bufs)this.bufs.push(o)}else throw new Error("Could not append value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}prepend(...e){this.prependAll(e)}prependAll(e){let t=0;for(let n of e.reverse())if(n instanceof Uint8Array)t+=n.byteLength,this.bufs.unshift(n);else if(t1(n))t+=n.byteLength,this.bufs.unshift(...n.bufs);else throw new Error("Could not prepend value, must be an Uint8Array or a Uint8ArrayList");this.length+=t}get(e){let t=u0(this.bufs,e);return t.buf[t.index]}set(e,t){let n=u0(this.bufs,e);n.buf[n.index]=t}write(e,t=0){if(e instanceof Uint8Array)for(let n=0;n<e.length;n++)this.set(t+n,e[n]);else if(t1(e))for(let n=0;n<e.length;n++)this.set(t+n,e.get(n));else throw new Error("Could not write value, must be an Uint8Array or a Uint8ArrayList")}consume(e){if(e=Math.trunc(e),!(Number.isNaN(e)||e<=0)){if(e===this.byteLength){this.bufs=[],this.length=0;return}for(;this.bufs.length>0;)if(e>=this.bufs[0].byteLength)e-=this.bufs[0].byteLength,this.length-=this.bufs[0].byteLength,this.bufs.shift();else{this.bufs[0]=this.bufs[0].subarray(e),this.length-=e;break}}}slice(e,t){let{bufs:n,length:o}=this._subList(e,t);return Me(n,o)}subarray(e,t){let{bufs:n,length:o}=this._subList(e,t);return n.length===1?n[0]:Me(n,o)}sublist(e,t){let{bufs:n,length:o}=this._subList(e,t),i=new r;return i.length=o,i.bufs=n,i}_subList(e,t){if(e=e??0,t=t??this.length,e<0&&(e=this.length+e),t<0&&(t=this.length+t),e<0||t>this.length)throw new RangeError("index is out of bounds");if(e===t)return{bufs:[],length:0};if(e===0&&t===this.length)return{bufs:[...this.bufs],length:this.length};let n=[],o=0;for(let i=0;i<this.bufs.length;i++){let s=this.bufs[i],a=o,c=a+s.byteLength;if(o=c,e>=c)continue;let u=e>=a&&e<c,l=t>a&&t<=c;if(u&&l){if(e===a&&t===c){n.push(s);break}let f=e-a;n.push(s.subarray(f,f+(t-e)));break}if(u){if(e===0){n.push(s);continue}n.push(s.subarray(e-a));continue}if(l){if(t===c){n.push(s);break}n.push(s.subarray(0,t-a));break}n.push(s)}return{bufs:n,length:t-e}}indexOf(e,t=0){if(!t1(e)&&!(e instanceof Uint8Array))throw new TypeError('The "value" argument must be a Uint8ArrayList or Uint8Array');let n=e instanceof Uint8Array?e:e.subarray();if(t=Number(t??0),isNaN(t)&&(t=0),t<0&&(t=this.length+t),t<0&&(t=0),e.length===0)return t>this.length?this.length:t;let o=n.byteLength;if(o===0)throw new TypeError("search must be at least 1 byte long");let i=256,s=new Int32Array(i);for(let f=0;f<i;f++)s[f]=-1;for(let f=0;f<o;f++)s[n[f]]=f;let a=s,c=this.byteLength-n.byteLength,u=n.byteLength-1,l;for(let f=t;f<=c;f+=l){l=0;for(let d=u;d>=0;d--){let h=this.get(f+d);if(n[d]!==h){l=Math.max(1,d-a[h]);break}}if(l===0)return f}return-1}getInt8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt8(0)}setInt8(e,t){let n=ve(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setInt8(0,t),this.write(n,e)}getInt16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt16(0,t)}setInt16(e,t,n){let o=Ee(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt16(0,t,n),this.write(o,e)}getInt32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getInt32(0,t)}setInt32(e,t,n){let o=Ee(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setInt32(0,t,n),this.write(o,e)}getBigInt64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigInt64(0,t)}setBigInt64(e,t,n){let o=Ee(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigInt64(0,t,n),this.write(o,e)}getUint8(e){let t=this.subarray(e,e+1);return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint8(0)}setUint8(e,t){let n=ve(1);new DataView(n.buffer,n.byteOffset,n.byteLength).setUint8(0,t),this.write(n,e)}getUint16(e,t){let n=this.subarray(e,e+2);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint16(0,t)}setUint16(e,t,n){let o=Ee(2);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint16(0,t,n),this.write(o,e)}getUint32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getUint32(0,t)}setUint32(e,t,n){let o=Ee(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setUint32(0,t,n),this.write(o,e)}getBigUint64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getBigUint64(0,t)}setBigUint64(e,t,n){let o=Ee(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setBigUint64(0,t,n),this.write(o,e)}getFloat32(e,t){let n=this.subarray(e,e+4);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat32(0,t)}setFloat32(e,t,n){let o=Ee(4);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat32(0,t,n),this.write(o,e)}getFloat64(e,t){let n=this.subarray(e,e+8);return new DataView(n.buffer,n.byteOffset,n.byteLength).getFloat64(0,t)}setFloat64(e,t,n){let o=Ee(8);new DataView(o.buffer,o.byteOffset,o.byteLength).setFloat64(0,t,n),this.write(o,e)}equals(e){if(e==null||!(e instanceof r)||e.bufs.length!==this.bufs.length)return!1;for(let t=0;t<this.bufs.length;t++)if(!Q(this.bufs[t],e.bufs[t]))return!1;return!0}static fromUint8Arrays(e,t){let n=new r;return n.bufs=e,t==null&&(t=e.reduce((o,i)=>o+i.byteLength,0)),n.length=t,n}};var ri={};Ae(ri,{base10:()=>i6});var i6=It({prefix:"9",name:"base10",alphabet:"0123456789"});var ni={};Ae(ni,{base16:()=>s6,base16upper:()=>a6});var s6=oe({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),a6=oe({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var oi={};Ae(oi,{base2:()=>c6});var c6=oe({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ii={};Ae(ii,{base256emoji:()=>d6});var f0=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}"),u6=f0.reduce((r,e,t)=>(r[t]=e,r),[]),l6=f0.reduce((r,e,t)=>{let n=e.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${e}`);return r[n]=t,r},[]);function f6(r){return r.reduce((e,t)=>(e+=u6[t],e),"")}function h6(r){let e=[];for(let t of r){let n=t.codePointAt(0);if(n==null)throw new Error(`Invalid character: ${t}`);let o=l6[n];if(o==null)throw new Error(`Non-base256emoji character: ${t}`);e.push(o)}return new Uint8Array(e)}var d6=xr({prefix:"\u{1F680}",name:"base256emoji",encode:f6,decode:h6});var ai={};Ae(ai,{base64:()=>p6,base64pad:()=>m6,base64url:()=>si,base64urlpad:()=>g6});var p6=oe({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),m6=oe({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),si=oe({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),g6=oe({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var ci={};Ae(ci,{base8:()=>y6});var y6=oe({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ui={};Ae(ui,{identity:()=>b6});var b6=xr({prefix:"\0",name:"identity",encode:r=>Q2(r),decode:r=>Z2(r)});var xc=new TextEncoder,Ec=new TextDecoder;var h0=85;var hi={};Ae(hi,{sha256:()=>ft,sha512:()=>E6});var x6=20;function fi({name:r,code:e,encode:t,minDigestLength:n,maxDigestLength:o}){return new li(r,e,t,n,o)}var li=class{name;code;encode;minDigestLength;maxDigestLength;constructor(e,t,n,o,i){this.name=e,this.code=t,this.encode=n,this.minDigestLength=o??x6,this.maxDigestLength=i}digest(e,t){if(t?.truncate!=null){if(t.truncate<this.minDigestLength)throw new Error(`Invalid truncate option, must be greater than or equal to ${this.minDigestLength}`);if(this.maxDigestLength!=null&&t.truncate>this.maxDigestLength)throw new Error(`Invalid truncate option, must be less than or equal to ${this.maxDigestLength}`)}if(e instanceof Uint8Array){let n=this.encode(e);return n instanceof Uint8Array?p0(n,this.code,t?.truncate):n.then(o=>p0(o,this.code,t?.truncate))}else throw Error("Unknown type, must be binary type")}};function p0(r,e,t){if(t!=null&&t!==r.byteLength){if(t>r.byteLength)throw new Error(`Invalid truncate option, must be less than or equal to ${r.byteLength}`);r=r.subarray(0,t)}return Xe(e,r)}function g0(r){return async e=>new Uint8Array(await crypto.subtle.digest(r,e))}var ft=fi({name:"sha2-256",code:18,encode:g0("SHA-256")}),E6=fi({name:"sha2-512",code:19,encode:g0("SHA-512")});var sn={...ui,...oi,...ci,...ri,...ni,...Wo,...Xo,...Qo,...ai,...ii},kc={...hi,...ti};function b0(r,e,t,n){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:n}}}var y0=b0("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),di=b0("ascii","a",r=>{let e="a";for(let t=0;t<r.length;t++)e+=String.fromCharCode(r[t]);return e},r=>{r=r.substring(1);let e=ve(r.length);for(let t=0;t<r.length;t++)e[t]=r.charCodeAt(t);return e}),v6={utf8:y0,"utf-8":y0,hex:sn.base16,latin1:di,ascii:di,binary:di,...sn},r1=v6;function F(r,e="utf8"){let t=r1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.decoder.decode(`${t.prefix}${r}`)}function N(r,e="utf8"){let t=r1[e];if(t==null)throw new Error(`Unsupported encoding "${e}"`);return t.encoder.encode(r).substring(1)}var S6=parseInt("11111",2),pi=parseInt("10000000",2),_6=parseInt("01111111",2),w0={0:an,1:an,2:I6,3:P6,4:C6,5:A6,6:T6,16:an,22:an,48:an};function ht(r,e={offset:0}){let t=r[e.offset]&S6;if(e.offset++,w0[t]!=null)return w0[t](r,e);throw new Error("No decoder for tag "+t)}function cn(r,e){let t=0;if((r[e.offset]&pi)===pi){let n=r[e.offset]&_6,o="0x";e.offset++;for(let i=0;i<n;i++,e.offset++)o+=r[e.offset].toString(16).padStart(2,"0");t=parseInt(o,16)}else t=r[e.offset],e.offset++;return t}function an(r,e){cn(r,e);let t=[];for(;!(e.offset>=r.byteLength);){let n=ht(r,e);if(n===null)break;t.push(n)}return t}function I6(r,e){let t=cn(r,e),n=e.offset,o=e.offset+t,i=[];for(let s=n;s<o;s++)s===n&&r[s]===0||i.push(r[s]);return e.offset+=t,Uint8Array.from(i)}function T6(r,e){let t=cn(r,e),n=e.offset+t,o=r[e.offset];e.offset++;let i=0,s=0;o<40?(i=0,s=o):o<80?(i=1,s=o-40):(i=2,s=o-80);let a=`${i}.${s}`,c=[];for(;e.offset<n;){let u=r[e.offset];if(e.offset++,c.push(u&127),u<128){c.reverse();let l=0;for(let f=0;f<c.length;f++)l+=c[f]<<f*7;a+=`.${l}`,c=[]}}return a}function A6(r,e){return e.offset++,null}function P6(r,e){let t=cn(r,e),n=r[e.offset];e.offset++;let o=r.subarray(e.offset,e.offset+t-1);if(e.offset+=t,n!==0)throw new Error("Unused bits in bit string is unimplemented");return o}function C6(r,e){let t=cn(r,e),n=r.subarray(e.offset,e.offset+t);return e.offset+=t,n}function R6(r){let e=r.toString(16);e.length%2===1&&(e="0"+e);let t=new me;for(let n=0;n<e.length;n+=2)t.append(Uint8Array.from([parseInt(`${e[n]}${e[n+1]}`,16)]));return t}function mi(r){if(r.byteLength<128)return Uint8Array.from([r.byteLength]);let e=R6(r.byteLength);return new me(Uint8Array.from([e.byteLength|pi]),e)}function Re(r){let e=new me,t=128;return(r.subarray()[0]&t)===t&&e.append(Uint8Array.from([0])),e.append(r),new me(Uint8Array.from([2]),mi(e),e)}function n1(r){let e=Uint8Array.from([0]),t=new me(e,r);return new me(Uint8Array.from([3]),mi(t),t)}function At(r,e=48){let t=new me;for(let n of r)t.append(n);return new me(Uint8Array.from([e]),mi(t),t)}async function x0(r,e,t,n){let o=await crypto.subtle.importKey("jwk",r,{name:"ECDSA",namedCurve:r.crv??"P-256"},!1,["verify"]);n?.signal?.throwIfAborted();let i=await crypto.subtle.verify({name:"ECDSA",hash:{name:"SHA-256"}},o,e,t.subarray());return n?.signal?.throwIfAborted(),i}var D6=Uint8Array.from([6,8,42,134,72,206,61,3,1,7]),L6=Uint8Array.from([6,5,43,129,4,0,34]),k6=Uint8Array.from([6,5,43,129,4,0,35]),O6={ext:!0,kty:"EC",crv:"P-256"},B6={ext:!0,kty:"EC",crv:"P-384"},N6={ext:!0,kty:"EC",crv:"P-521"},gi=32,yi=48,bi=66;function wi(r){let e=ht(r);return E0(e)}function E0(r){let e=r[1][1][0],t=1,n,o;if(e.byteLength===gi*2+1)return n=N(e.subarray(t,t+gi),"base64url"),o=N(e.subarray(t+gi),"base64url"),new _r({...O6,key_ops:["verify"],x:n,y:o});if(e.byteLength===yi*2+1)return n=N(e.subarray(t,t+yi),"base64url"),o=N(e.subarray(t+yi),"base64url"),new _r({...B6,key_ops:["verify"],x:n,y:o});if(e.byteLength===bi*2+1)return n=N(e.subarray(t,t+bi),"base64url"),o=N(e.subarray(t+bi),"base64url"),new _r({...N6,key_ops:["verify"],x:n,y:o});throw new K(`coordinates were wrong length, got ${e.byteLength}, expected 65, 97 or 133`)}function v0(r){return At([Re(Uint8Array.from([1])),At([F6(r.crv)],160),At([n1(new me(Uint8Array.from([4]),F(r.x??"","base64url"),F(r.y??"","base64url")))],161)]).subarray()}function F6(r){if(r==="P-256")return D6;if(r==="P-384")return L6;if(r==="P-521")return k6;throw new K(`Invalid curve ${r}`)}var _r=class{type="ECDSA";jwk;_raw;constructor(e){this.jwk=e}get raw(){return this._raw==null&&(this._raw=v0(this.jwk)),this._raw}toMultihash(){return ze.digest(Pt(this))}toCID(){return X.createV1(114,this.toMultihash())}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Q(this.raw,e.raw)}async verify(e,t,n){return x0(this.jwk,t,e,n)}};function xi(r){return r instanceof Uint8Array||ArrayBuffer.isView(r)&&r.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in r&&r.BYTES_PER_ELEMENT===1}function Ct(r,e=""){if(typeof r!="number"){let t=e&&`"${e}" `;throw new TypeError(`${t}expected number, got ${typeof r}`)}if(!Number.isSafeInteger(r)||r<0){let t=e&&`"${e}" `;throw new RangeError(`${t}expected integer >= 0, got ${r}`)}}function Oe(r,e,t=""){let n=xi(r),o=r?.length,i=e!==void 0;if(!n||i&&o!==e){let s=t&&`"${t}" `,a=i?` of length ${e}`:"",c=n?`length=${o}`:`type=${typeof r}`,u=s+"expected Uint8Array"+a+", got "+c;throw n?new RangeError(u):new TypeError(u)}return r}function o1(r){if(typeof r!="function"||typeof r.create!="function")throw new TypeError("Hash must wrapped by utils.createHasher");if(Ct(r.outputLen),Ct(r.blockLen),r.outputLen<1)throw new Error('"outputLen" must be >= 1');if(r.blockLen<1)throw new Error('"blockLen" must be >= 1')}function Ir(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function i1(r,e){Oe(r,void 0,"digestInto() output");let t=e.outputLen;if(r.length<t)throw new RangeError('"digestInto() output" expected to be of length >='+t)}function pt(...r){for(let e=0;e<r.length;e++)r[e].fill(0)}function s1(r){return new DataView(r.buffer,r.byteOffset,r.byteLength)}function Ve(r,e){return r<<32-e|r>>>e}var _0=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",M6=Array.from({length:256},(r,e)=>e.toString(16).padStart(2,"0"));function a1(r){if(Oe(r),_0)return r.toHex();let e="";for(let t=0;t<r.length;t++)e+=M6[r[t]];return e}var dt={_0:48,_9:57,A:65,F:70,a:97,f:102};function S0(r){if(r>=dt._0&&r<=dt._9)return r-dt._0;if(r>=dt.A&&r<=dt.F)return r-(dt.A-10);if(r>=dt.a&&r<=dt.f)return r-(dt.a-10)}function un(r){if(typeof r!="string")throw new TypeError("hex string expected, got "+typeof r);if(_0)try{return Uint8Array.fromHex(r)}catch(o){throw o instanceof SyntaxError?new RangeError(o.message):o}let e=r.length,t=e/2;if(e%2)throw new RangeError("hex string expected, got unpadded hex of length "+e);let n=new Uint8Array(t);for(let o=0,i=0;o<t;o++,i+=2){let s=S0(r.charCodeAt(i)),a=S0(r.charCodeAt(i+1));if(s===void 0||a===void 0){let c=r[i]+r[i+1];throw new RangeError('hex string expected, got non-hex character "'+c+'" at index '+i)}n[o]=s*16+a}return n}function Ei(...r){let e=0;for(let n=0;n<r.length;n++){let o=r[n];Oe(o),e+=o.length}let t=new Uint8Array(e);for(let n=0,o=0;n<r.length;n++){let i=r[n];t.set(i,o),o+=i.length}return t}function vi(r,e={}){let t=(o,i)=>r(i).update(o).digest(),n=r(void 0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.canXOF=n.canXOF,t.create=o=>r(o),Object.assign(t,e),Object.freeze(t)}function c1(r=32){Ct(r,"bytesLength");let e=typeof globalThis=="object"?globalThis.crypto:null;if(typeof e?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");if(r>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${r}`);return e.getRandomValues(new Uint8Array(r))}var Si=r=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,r])});function I0(r,e,t){return r&e^~r&t}function T0(r,e,t){return r&e^r&t^e&t}var ln=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(e,t,n,o){this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(e),this.view=s1(this.buffer)}update(e){Ir(this),Oe(e);let{view:t,buffer:n,blockLen:o}=this,i=e.length;for(let s=0;s<i;){let a=Math.min(o-this.pos,i-s);if(a===o){let c=s1(e);for(;o<=i-s;s+=o)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Ir(this),i1(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:i}=this,{pos:s}=this;t[s++]=128,pt(this.buffer.subarray(s)),this.padOffset>o-s&&(this.process(n,0),s=0);for(let f=s;f<o;f++)t[f]=0;n.setBigUint64(o-8,BigInt(this.length*8),i),this.process(n,0);let a=s1(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<u;f++)a.setUint32(4*f,l[f],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||=new this.constructor,e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:i,destroyed:s,pos:a}=this;return e.destroyed=s,e.finished=i,e.length=o,e.pos=a,o%t&&e.buffer.set(n),e}clone(){return this._cloneInto()}},mt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var be=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var u1=BigInt(4294967295),A0=BigInt(32);function U6(r,e=!1){return e?{h:Number(r&u1),l:Number(r>>A0&u1)}:{h:Number(r>>A0&u1)|0,l:Number(r&u1)|0}}function P0(r,e=!1){let t=r.length,n=new Uint32Array(t),o=new Uint32Array(t);for(let i=0;i<t;i++){let{h:s,l:a}=U6(r[i],e);[n[i],o[i]]=[s,a]}return[n,o]}var _i=(r,e,t)=>r>>>t,Ii=(r,e,t)=>r<<32-t|e>>>t,Xt=(r,e,t)=>r>>>t|e<<32-t,Jt=(r,e,t)=>r<<32-t|e>>>t,fn=(r,e,t)=>r<<64-t|e>>>t-32,hn=(r,e,t)=>r>>>t-32|e<<64-t;function Je(r,e,t,n){let o=(e>>>0)+(n>>>0);return{h:r+t+(o/2**32|0)|0,l:o|0}}var C0=(r,e,t)=>(r>>>0)+(e>>>0)+(t>>>0),R0=(r,e,t,n)=>e+t+n+(r/2**32|0)|0,D0=(r,e,t,n)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0),L0=(r,e,t,n,o)=>e+t+n+o+(r/2**32|0)|0,k0=(r,e,t,n,o)=>(r>>>0)+(e>>>0)+(t>>>0)+(n>>>0)+(o>>>0),O0=(r,e,t,n,o,i)=>e+t+n+o+i+(r/2**32|0)|0;var q6=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Rt=new Uint32Array(64),Ti=class extends ln{constructor(e){super(64,e,8,!1)}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:a,H:c}=this;return[e,t,n,o,i,s,a,c]}set(e,t,n,o,i,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)Rt[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let d=Rt[f-15],h=Rt[f-2],g=Ve(d,7)^Ve(d,18)^d>>>3,b=Ve(h,17)^Ve(h,19)^h>>>10;Rt[f]=b+Rt[f-7]+g+Rt[f-16]|0}let{A:n,B:o,C:i,D:s,E:a,F:c,G:u,H:l}=this;for(let f=0;f<64;f++){let d=Ve(a,6)^Ve(a,11)^Ve(a,25),h=l+d+I0(a,c,u)+q6[f]+Rt[f]|0,b=(Ve(n,2)^Ve(n,13)^Ve(n,22))+T0(n,o,i)|0;l=u,u=c,c=a,a=s+h|0,s=i,i=o,o=n,n=h+b|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,o,i,s,a,c,u,l)}roundClean(){pt(Rt)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),pt(this.buffer)}},Ai=class extends Ti{A=mt[0]|0;B=mt[1]|0;C=mt[2]|0;D=mt[3]|0;E=mt[4]|0;F=mt[5]|0;G=mt[6]|0;H=mt[7]|0;constructor(){super(32)}};var B0=P0(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(r=>BigInt(r))),z6=B0[0],V6=B0[1],Dt=new Uint32Array(80),Lt=new Uint32Array(80),Pi=class extends ln{constructor(e){super(128,e,16,!1)}get(){let{Ah:e,Al:t,Bh:n,Bl:o,Ch:i,Cl:s,Dh:a,Dl:c,Eh:u,El:l,Fh:f,Fl:d,Gh:h,Gl:g,Hh:b,Hl:p}=this;return[e,t,n,o,i,s,a,c,u,l,f,d,h,g,b,p]}set(e,t,n,o,i,s,a,c,u,l,f,d,h,g,b,p){this.Ah=e|0,this.Al=t|0,this.Bh=n|0,this.Bl=o|0,this.Ch=i|0,this.Cl=s|0,this.Dh=a|0,this.Dl=c|0,this.Eh=u|0,this.El=l|0,this.Fh=f|0,this.Fl=d|0,this.Gh=h|0,this.Gl=g|0,this.Hh=b|0,this.Hl=p|0}process(e,t){for(let S=0;S<16;S++,t+=4)Dt[S]=e.getUint32(t),Lt[S]=e.getUint32(t+=4);for(let S=16;S<80;S++){let R=Dt[S-15]|0,A=Lt[S-15]|0,O=Xt(R,A,1)^Xt(R,A,8)^_i(R,A,7),L=Jt(R,A,1)^Jt(R,A,8)^Ii(R,A,7),T=Dt[S-2]|0,M=Lt[S-2]|0,W=Xt(T,M,19)^fn(T,M,61)^_i(T,M,6),U=Jt(T,M,19)^hn(T,M,61)^Ii(T,M,6),m=D0(L,U,Lt[S-7],Lt[S-16]),w=L0(m,O,W,Dt[S-7],Dt[S-16]);Dt[S]=w|0,Lt[S]=m|0}let{Ah:n,Al:o,Bh:i,Bl:s,Ch:a,Cl:c,Dh:u,Dl:l,Eh:f,El:d,Fh:h,Fl:g,Gh:b,Gl:p,Hh:y,Hl:v}=this;for(let S=0;S<80;S++){let R=Xt(f,d,14)^Xt(f,d,18)^fn(f,d,41),A=Jt(f,d,14)^Jt(f,d,18)^hn(f,d,41),O=f&h^~f&b,L=d&g^~d&p,T=k0(v,A,L,V6[S],Lt[S]),M=O0(T,y,R,O,z6[S],Dt[S]),W=T|0,U=Xt(n,o,28)^fn(n,o,34)^fn(n,o,39),m=Jt(n,o,28)^hn(n,o,34)^hn(n,o,39),w=n&i^n&a^i&a,_=o&s^o&c^s&c;y=b|0,v=p|0,b=h|0,p=g|0,h=f|0,g=d|0,{h:f,l:d}=Je(u|0,l|0,M|0,W|0),u=a|0,l=c|0,a=i|0,c=s|0,i=n|0,s=o|0;let E=C0(W,m,_);n=R0(E,M,U,w),o=E|0}({h:n,l:o}=Je(this.Ah|0,this.Al|0,n|0,o|0)),{h:i,l:s}=Je(this.Bh|0,this.Bl|0,i|0,s|0),{h:a,l:c}=Je(this.Ch|0,this.Cl|0,a|0,c|0),{h:u,l}=Je(this.Dh|0,this.Dl|0,u|0,l|0),{h:f,l:d}=Je(this.Eh|0,this.El|0,f|0,d|0),{h,l:g}=Je(this.Fh|0,this.Fl|0,h|0,g|0),{h:b,l:p}=Je(this.Gh|0,this.Gl|0,b|0,p|0),{h:y,l:v}=Je(this.Hh|0,this.Hl|0,y|0,v|0),this.set(n,o,i,s,a,c,u,l,f,d,h,g,b,p,y,v)}roundClean(){pt(Dt,Lt)}destroy(){this.destroyed=!0,pt(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},Ci=class extends Pi{Ah=be[0]|0;Al=be[1]|0;Bh=be[2]|0;Bl=be[3]|0;Ch=be[4]|0;Cl=be[5]|0;Dh=be[6]|0;Dl=be[7]|0;Eh=be[8]|0;El=be[9]|0;Fh=be[10]|0;Fl=be[11]|0;Gh=be[12]|0;Gl=be[13]|0;Hh=be[14]|0;Hl=be[15]|0;constructor(){super(64)}};var Tr=vi(()=>new Ai,Si(1));var l1=vi(()=>new Ci,Si(3));var H=(r,e,t)=>Oe(r,e,t),Di=Ct,Ar=a1,le=(...r)=>Ei(...r),Pr=r=>un(r),er=xi,dn=r=>c1(r),h1=BigInt(0),Ri=BigInt(1);function He(r,e=""){if(typeof r!="boolean"){let t=e&&`"${e}" `;throw new TypeError(t+"expected boolean, got type="+typeof r)}return r}function d1(r){if(typeof r=="bigint"){if(!f1(r))throw new RangeError("positive bigint expected, got "+r)}else Di(r);return r}function $e(r,e=""){if(typeof r!="number"){let t=e&&`"${e}" `;throw new TypeError(t+"expected number, got type="+typeof r)}if(!Number.isSafeInteger(r)){let t=e&&`"${e}" `;throw new RangeError(t+"expected safe integer, got "+r)}}function pn(r){let e=d1(r).toString(16);return e.length&1?"0"+e:e}function N0(r){if(typeof r!="string")throw new TypeError("hex string expected, got "+typeof r);return r===""?h1:BigInt("0x"+r)}function tr(r){return N0(a1(r))}function et(r){return N0(a1(mn(Oe(r)).reverse()))}function p1(r,e){if(Ct(e),e===0)throw new RangeError("zero length");r=d1(r);let t=r.toString(16);if(t.length>e*2)throw new RangeError("number too large");return un(t.padStart(e*2,"0"))}function Li(r,e){return p1(r,e).reverse()}function F0(r,e){if(r=H(r),e=H(e),r.length!==e.length)return!1;let t=0;for(let n=0;n<r.length;n++)t|=r[n]^e[n];return t===0}function mn(r){return Uint8Array.from(H(r))}function m1(r){if(typeof r!="string")throw new TypeError("ascii string expected, got "+typeof r);return Uint8Array.from(r,(e,t)=>{let n=e.charCodeAt(0);if(e.length!==1||n>127)throw new RangeError(`string contains non-ASCII character "${r[t]}" with code ${n} at position ${t}`);return n})}var f1=r=>typeof r=="bigint"&&h1<=r;function H6(r,e,t){return f1(r)&&f1(e)&&f1(t)&&e<=r&&r<t}function Cr(r,e,t,n){if(!H6(e,t,n))throw new RangeError("expected valid "+r+": "+t+" <= n < "+n+", got "+e)}function Rr(r){if(r<h1)throw new Error("expected non-negative bigint, got "+r);let e;for(e=0;r>h1;r>>=Ri,e+=1);return e}var gn=r=>(Ri<<BigInt(r))-Ri;function M0(r,e,t){if(Ct(r,"hashLen"),Ct(e,"qByteLen"),typeof t!="function")throw new TypeError("hmacFn must be a function");let n=p=>new Uint8Array(p),o=Uint8Array.of(),i=Uint8Array.of(0),s=Uint8Array.of(1),a=1e3,c=n(r),u=n(r),l=0,f=()=>{c.fill(1),u.fill(0),l=0},d=(...p)=>t(u,le(c,...p)),h=(p=o)=>{u=d(i,p),c=d(),p.length!==0&&(u=d(s,p),c=d())},g=()=>{if(l++>=a)throw new Error("drbg: tried max amount of iterations");let p=0,y=[];for(;p<e;){c=d();let v=c.slice();y.push(v),p+=c.length}return le(...y)};return(p,y)=>{f(),h(p);let v;for(;(v=y(g()))===void 0;)h();return f(),v}}function je(r,e={},t={}){if(Object.prototype.toString.call(r)!=="[object Object]")throw new TypeError("expected valid options object");function n(i,s,a){if(!a&&s!=="function"&&!Object.hasOwn(r,i))throw new TypeError(`param "${i}" is invalid: expected own property`);let c=r[i];if(a&&c===void 0)return;let u=typeof c;if(u!==s||c===null)throw new TypeError(`param "${i}" is invalid: expected ${s}, got ${u}`)}let o=(i,s)=>Object.entries(i).forEach(([a,c])=>n(a,c,s));o(e,!1),o(t,!0)}var ki=()=>{throw new Error("not implemented")};var we=BigInt(0),ie=BigInt(1),rr=BigInt(2),z0=BigInt(3),V0=BigInt(4),H0=BigInt(5),$6=BigInt(7),$0=BigInt(8),j6=BigInt(9),j0=BigInt(16);function ae(r,e){if(e<=we)throw new Error("mod: expected positive modulus, got "+e);let t=r%e;return t>=we?t:e+t}function re(r,e,t){if(e<we)throw new Error("pow2: expected non-negative exponent, got "+e);let n=r;for(;e-- >we;)n*=n,n%=t;return n}function U0(r,e){if(r===we)throw new Error("invert: expected non-zero number");if(e<=we)throw new Error("invert: expected positive modulus, got "+e);let t=ae(r,e),n=e,o=we,i=ie,s=ie,a=we;for(;t!==we;){let u=n/t,l=n-t*u,f=o-s*u,d=i-a*u;n=t,t=l,o=s,i=a,s=f,a=d}if(n!==ie)throw new Error("invert: does not exist");return ae(o,e)}function Oi(r,e,t){let n=r;if(!n.eql(n.sqr(e),t))throw new Error("Cannot find square root")}function G0(r,e){let t=r,n=(t.ORDER+ie)/V0,o=t.pow(e,n);return Oi(t,o,e),o}function G6(r,e){let t=r,n=(t.ORDER-H0)/$0,o=t.mul(e,rr),i=t.pow(o,n),s=t.mul(e,i),a=t.mul(t.mul(s,rr),i),c=t.mul(s,t.sub(a,t.ONE));return Oi(t,c,e),c}function Y6(r){let e=Dr(r),t=Y0(r),n=t(e,e.neg(e.ONE)),o=t(e,n),i=t(e,e.neg(n)),s=(r+$6)/j0;return((a,c)=>{let u=a,l=u.pow(c,s),f=u.mul(l,n),d=u.mul(l,o),h=u.mul(l,i),g=u.eql(u.sqr(f),c),b=u.eql(u.sqr(d),c);l=u.cmov(l,f,g),f=u.cmov(h,d,b);let p=u.eql(u.sqr(f),c),y=u.cmov(l,f,p);return Oi(u,y,c),y})}function Y0(r){if(r<z0)throw new Error("sqrt is not defined for small field");let e=r-ie,t=0;for(;e%rr===we;)e/=rr,t++;let n=rr,o=Dr(r);for(;K0(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(t===1)return G0;let i=o.pow(n,e),s=(e+ie)/rr;return function(c,u){let l=c;if(l.is0(u))return u;if(K0(l,u)!==1)throw new Error("Cannot find square root");let f=t,d=l.mul(l.ONE,i),h=l.pow(u,e),g=l.pow(u,s);for(;!l.eql(h,l.ONE);){if(l.is0(h))return l.ZERO;let b=1,p=l.sqr(h);for(;!l.eql(p,l.ONE);)if(b++,p=l.sqr(p),b===f)throw new Error("Cannot find square root");let y=ie<<BigInt(f-b-1),v=l.pow(d,y);f=b,d=l.sqr(v),h=l.mul(h,d),g=l.mul(g,v)}return g}}function Z6(r){return r%V0===z0?G0:r%$0===H0?G6:r%j0===j6?Y6(r):Y0(r)}var gt=(r,e)=>(ae(r,e)&ie)===ie,Q6=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Bi(r){let e={ORDER:"bigint",BYTES:"number",BITS:"number"},t=Q6.reduce((n,o)=>(n[o]="function",n),e);if(je(r,t),$e(r.BYTES,"BYTES"),$e(r.BITS,"BITS"),r.BYTES<1||r.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(r.ORDER<=ie)throw new Error("invalid field: expected ORDER > 1, got "+r.ORDER);return r}function W6(r,e,t){let n=r;if(t<we)throw new Error("invalid exponent, negatives unsupported");if(t===we)return n.ONE;if(t===ie)return e;let o=n.ONE,i=e;for(;t>we;)t&ie&&(o=n.mul(o,i)),i=n.sqr(i),t>>=ie;return o}function yn(r,e,t=!1){let n=r,o=new Array(e.length).fill(t?n.ZERO:void 0),i=e.reduce((a,c,u)=>n.is0(c)?a:(o[u]=a,n.mul(a,c)),n.ONE),s=n.inv(i);return e.reduceRight((a,c,u)=>n.is0(c)?a:(o[u]=n.mul(a,o[u]),n.mul(a,c)),s),o}function K0(r,e){let t=r,n=(t.ORDER-ie)/rr,o=t.pow(e,n),i=t.eql(o,t.ONE),s=t.eql(o,t.ZERO),a=t.eql(o,t.neg(t.ONE));if(!i&&!s&&!a)throw new Error("invalid Legendre symbol result");return i?1:s?0:-1}function X6(r,e){if(e!==void 0&&Di(e),r<=we)throw new Error("invalid n length: expected positive n, got "+r);if(e!==void 0&&e<1)throw new Error("invalid n length: expected positive bit length, got "+e);let t=Rr(r);if(e!==void 0&&e<t)throw new Error(`invalid n length: expected bit length (${t}) >= n.length (${e})`);let n=e!==void 0?e:t,o=Math.ceil(n/8);return{nBitLength:n,nByteLength:o}}var q0=new WeakMap,g1=class{ORDER;BITS;BYTES;isLE;ZERO=we;ONE=ie;_lengths;_mod;constructor(e,t={}){if(e<=ie)throw new Error("invalid field: expected ORDER > 1, got "+e);let n;this.isLE=!1,t!=null&&typeof t=="object"&&(typeof t.BITS=="number"&&(n=t.BITS),typeof t.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:t.sqrt,enumerable:!0}),typeof t.isLE=="boolean"&&(this.isLE=t.isLE),t.allowedLengths&&(this._lengths=Object.freeze(t.allowedLengths.slice())),typeof t.modFromBytes=="boolean"&&(this._mod=t.modFromBytes));let{nBitLength:o,nByteLength:i}=X6(e,n);if(i>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=e,this.BITS=o,this.BYTES=i,Object.freeze(this)}create(e){return ae(e,this.ORDER)}isValid(e){if(typeof e!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof e);return we<=e&&e<this.ORDER}is0(e){return e===we}isValidNot0(e){return!this.is0(e)&&this.isValid(e)}isOdd(e){return(e&ie)===ie}neg(e){return ae(-e,this.ORDER)}eql(e,t){return e===t}sqr(e){return ae(e*e,this.ORDER)}add(e,t){return ae(e+t,this.ORDER)}sub(e,t){return ae(e-t,this.ORDER)}mul(e,t){return ae(e*t,this.ORDER)}pow(e,t){return W6(this,e,t)}div(e,t){return ae(e*U0(t,this.ORDER),this.ORDER)}sqrN(e){return e*e}addN(e,t){return e+t}subN(e,t){return e-t}mulN(e,t){return e*t}inv(e){return U0(e,this.ORDER)}sqrt(e){let t=q0.get(this);return t||q0.set(this,t=Z6(this.ORDER)),t(this,e)}toBytes(e){return this.isLE?Li(e,this.BYTES):p1(e,this.BYTES)}fromBytes(e,t=!1){H(e);let{_lengths:n,BYTES:o,isLE:i,ORDER:s,_mod:a}=this;if(n){if(e.length<1||!n.includes(e.length)||e.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+e.length);let u=new Uint8Array(o);u.set(e,i?0:u.length-e.length),e=u}if(e.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+e.length);let c=i?et(e):tr(e);if(a&&(c=ae(c,s)),!t&&!this.isValid(c))throw new Error("invalid field element: outside of range 0..ORDER");return c}invertBatch(e){return yn(this,e)}cmov(e,t,n){return He(n,"condition"),n?t:e}};Object.freeze(g1.prototype);function Dr(r,e={}){return new g1(r,e)}function Z0(r){if(typeof r!="bigint")throw new Error("field order must be bigint");if(r<=ie)throw new Error("field order must be greater than 1");let e=Rr(r-ie);return Math.ceil(e/8)}function Ni(r){let e=Z0(r);return e+Math.ceil(e/2)}function Fi(r,e,t=!1){H(r);let n=r.length,o=Z0(e),i=Math.max(Ni(e),16);if(n<i||n>1024)throw new Error("expected "+i+"-1024 bytes of input, got "+n);let s=t?et(r):tr(r),a=ae(s,e-ie)+ie;return t?Li(a,o):p1(a,o)}var Lr=BigInt(0),nr=BigInt(1);function bn(r,e){let t=e.negate();return r?t:e}function or(r,e){let t=yn(r.Fp,e.map(n=>n.Z));return e.map((n,o)=>r.fromAffine(n.toAffine(t[o])))}function J0(r,e){if(!Number.isSafeInteger(r)||r<=0||r>e)throw new Error("invalid window size, expected [1.."+e+"], got W="+r)}function Mi(r,e){J0(r,e);let t=Math.ceil(e/r)+1,n=2**(r-1),o=2**r,i=gn(r),s=BigInt(r);return{windows:t,windowSize:n,mask:i,maxNumber:o,shiftBy:s}}function Q0(r,e,t){let{windowSize:n,mask:o,maxNumber:i,shiftBy:s}=t,a=Number(r&o),c=r>>s;a>n&&(a-=i,c+=nr);let u=e*n,l=u+Math.abs(a)-1,f=a===0,d=a<0,h=e%2!==0;return{nextN:c,offset:l,isZero:f,isNeg:d,isNegF:h,offsetF:u}}var Ui=new WeakMap,e3=new WeakMap;function Ki(r){return e3.get(r)||1}function W0(r){if(r!==Lr)throw new Error("invalid wNAF")}var kr=class{BASE;ZERO;Fn;bits;constructor(e,t){this.BASE=e.BASE,this.ZERO=e.ZERO,this.Fn=e.Fn,this.bits=t}_unsafeLadder(e,t,n=this.ZERO){let o=e;for(;t>Lr;)t&nr&&(n=n.add(o)),o=o.double(),t>>=nr;return n}precomputeWindow(e,t){let{windows:n,windowSize:o}=Mi(t,this.bits),i=[],s=e,a=s;for(let c=0;c<n;c++){a=s,i.push(a);for(let u=1;u<o;u++)a=a.add(s),i.push(a);s=a.double()}return i}wNAF(e,t,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,i=this.BASE,s=Mi(e,this.bits);for(let a=0;a<s.windows;a++){let{nextN:c,offset:u,isZero:l,isNeg:f,isNegF:d,offsetF:h}=Q0(n,a,s);n=c,l?i=i.add(bn(d,t[h])):o=o.add(bn(f,t[u]))}return W0(n),{p:o,f:i}}wNAFUnsafe(e,t,n,o=this.ZERO){let i=Mi(e,this.bits);for(let s=0;s<i.windows&&n!==Lr;s++){let{nextN:a,offset:c,isZero:u,isNeg:l}=Q0(n,s,i);if(n=a,!u){let f=t[c];o=o.add(l?f.negate():f)}}return W0(n),o}getPrecomputes(e,t,n){let o=Ui.get(t);return o||(o=this.precomputeWindow(t,e),e!==1&&(typeof n=="function"&&(o=n(o)),Ui.set(t,o))),o}cached(e,t,n){let o=Ki(e);return this.wNAF(o,this.getPrecomputes(o,e,n),t)}unsafe(e,t,n,o){let i=Ki(e);return i===1?this._unsafeLadder(e,t,o):this.wNAFUnsafe(i,this.getPrecomputes(i,e,n),t,o)}createCache(e,t){J0(t,this.bits),e3.set(e,t),Ui.delete(e)}hasCache(e){return Ki(e)!==1}};function t3(r,e,t,n){let o=e,i=r.ZERO,s=r.ZERO;for(;t>Lr||n>Lr;)t&nr&&(i=i.add(o)),n&nr&&(s=s.add(o)),o=o.double(),t>>=nr,n>>=nr;return{p1:i,p2:s}}function X0(r,e,t){if(e){if(e.ORDER!==r)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Bi(e),e}else return Dr(r,{isLE:t})}function y1(r,e,t={},n){if(n===void 0&&(n=r==="edwards"),!e||typeof e!="object")throw new Error(`expected valid ${r} CURVE object`);for(let c of["p","n","h"]){let u=e[c];if(!(typeof u=="bigint"&&u>Lr))throw new Error(`CURVE.${c} must be positive bigint`)}let o=X0(e.p,t.Fp,n),i=X0(e.n,t.Fn,n),a=["Gx","Gy","a",r==="weierstrass"?"b":"d"];for(let c of a)if(!o.isValid(e[c]))throw new Error(`CURVE.${c} must be valid field element of CURVE.Fp`);return e=Object.freeze(Object.assign({},e)),{CURVE:e,Fp:o,Fn:i}}function b1(r,e){return function(n){let o=r(n);return{secretKey:o,publicKey:e(o)}}}var kt=BigInt(0),ge=BigInt(1),qi=BigInt(2),J6=BigInt(8);function ea(r,e,t,n){let o=r.sqr(t),i=r.sqr(n),s=r.add(r.mul(e.a,o),i),a=r.add(r.ONE,r.mul(e.d,r.mul(o,i)));return r.eql(s,a)}function r3(r,e={}){let t=e,n=y1("edwards",r,t,t.FpFnLE),{Fp:o,Fn:i}=n,s=n.CURVE,{h:a}=s;je(t,{},{uvRatio:"function"});let c=qi<<BigInt(i.BYTES*8)-ge,u=b=>o.create(b),l=t.uvRatio===void 0?(b,p)=>{try{return{isValid:!0,value:o.sqrt(o.div(b,p))}}catch{return{isValid:!1,value:kt}}}:t.uvRatio;if(!ea(o,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function f(b,p,y=!1){let v=y?ge:kt;return Cr("coordinate "+b,p,v,c),p}function d(b){if(!(b instanceof h))throw new Error("EdwardsPoint expected")}class h{static BASE=new h(s.Gx,s.Gy,ge,u(s.Gx*s.Gy));static ZERO=new h(kt,ge,ge,kt);static Fp=o;static Fn=i;X;Y;Z;T;constructor(p,y,v,S){this.X=f("x",p),this.Y=f("y",y),this.Z=f("z",v,!0),this.T=f("t",S),Object.freeze(this)}static CURVE(){return s}static fromAffine(p){if(p instanceof h)throw new Error("extended point not allowed");let{x:y,y:v}=p||{};return f("x",y),f("y",v),new h(y,v,ge,u(y*v))}static fromBytes(p,y=!1){let v=o.BYTES,{a:S,d:R}=s;p=mn(H(p,v,"point")),He(y,"zip215");let A=mn(p),O=p[v-1];A[v-1]=O&-129;let L=et(A),T=y?c:o.ORDER;Cr("point.y",L,kt,T);let M=u(L*L),W=u(M-ge),U=u(R*M-S),{isValid:m,value:w}=l(W,U);if(!m)throw new Error("bad point: invalid y coordinate");let _=(w&ge)===ge,E=(O&128)!==0;if(!y&&w===kt&&E)throw new Error("bad point: x=0 and x_0=1");return E!==_&&(w=u(-w)),h.fromAffine({x:w,y:L})}static fromHex(p,y=!1){return h.fromBytes(Pr(p),y)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(p=8,y=!0){return g.createCache(this,p),y||this.multiply(qi),this}assertValidity(){let p=this,{a:y,d:v}=s;if(p.is0())throw new Error("bad point: ZERO");let{X:S,Y:R,Z:A,T:O}=p,L=u(S*S),T=u(R*R),M=u(A*A),W=u(M*M),U=u(L*y),m=u(M*u(U+T)),w=u(W+u(v*u(L*T)));if(m!==w)throw new Error("bad point: equation left != right (1)");let _=u(S*R),E=u(A*O);if(_!==E)throw new Error("bad point: equation left != right (2)")}equals(p){d(p);let{X:y,Y:v,Z:S}=this,{X:R,Y:A,Z:O}=p,L=u(y*O),T=u(R*S),M=u(v*O),W=u(A*S);return L===T&&M===W}is0(){return this.equals(h.ZERO)}negate(){return new h(u(-this.X),this.Y,this.Z,u(-this.T))}double(){let{a:p}=s,{X:y,Y:v,Z:S}=this,R=u(y*y),A=u(v*v),O=u(qi*u(S*S)),L=u(p*R),T=y+v,M=u(u(T*T)-R-A),W=L+A,U=W-O,m=L-A,w=u(M*U),_=u(W*m),E=u(M*m),x=u(U*W);return new h(w,_,x,E)}add(p){d(p);let{a:y,d:v}=s,{X:S,Y:R,Z:A,T:O}=this,{X:L,Y:T,Z:M,T:W}=p,U=u(S*L),m=u(R*T),w=u(O*v*W),_=u(A*M),E=u((S+R)*(L+T)-U-m),x=_-w,I=_+w,C=u(m-y*U),P=u(E*x),D=u(I*C),B=u(E*C),V=u(x*I);return new h(P,D,V,B)}subtract(p){return d(p),this.add(p.negate())}multiply(p){if(!i.isValidNot0(p))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");let{p:y,f:v}=g.cached(this,p,S=>or(h,S));return or(h,[y,v])[0]}multiplyUnsafe(p){if(!i.isValid(p))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return p===kt?h.ZERO:this.is0()||p===ge?this:g.unsafe(this,p,y=>or(h,y))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return g.unsafe(this,s.n).is0()}toAffine(p){let y=this,v=p,{X:S,Y:R,Z:A}=y,O=y.is0();v==null&&(v=O?J6:o.inv(A));let L=u(S*v),T=u(R*v),M=o.mul(A,v);if(O)return{x:kt,y:ge};if(M!==ge)throw new Error("invZ was invalid");return{x:L,y:T}}clearCofactor(){return a===ge?this:this.multiplyUnsafe(a)}toBytes(){let{x:p,y}=this.toAffine(),v=o.toBytes(y);return v[v.length-1]|=p&ge?128:0,v}toHex(){return Ar(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let g=new kr(h,i.BITS);return i.BITS>=8&&h.BASE.precompute(8),Object.freeze(h.prototype),Object.freeze(h),h}var w1=class{static BASE;static ZERO;static Fp;static Fn;ep;constructor(e){this.ep=e}static fromBytes(e){ki()}static fromHex(e){ki()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(e){return this.ep.toAffine(e)}toHex(){return Ar(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(e){return this.assertSame(e),this.init(this.ep.add(e.ep))}subtract(e){return this.assertSame(e),this.init(this.ep.subtract(e.ep))}multiply(e){return this.init(this.ep.multiply(e))}multiplyUnsafe(e){return this.init(this.ep.multiplyUnsafe(e))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(e,t){return this.ep.precompute(e,t),this}};function n3(r,e,t={}){if(typeof e!="function")throw new Error('"hash" function param is required');let n=e,o=t;je(o,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});let{prehash:i}=o,{BASE:s,Fp:a,Fn:c}=r,u=n.outputLen,l=2*a.BYTES;if(u!==void 0&&($e(u,"hash.outputLen"),u!==l))throw new Error(`hash.outputLen must be ${l}, got ${u}`);let f=o.randomBytes===void 0?dn:o.randomBytes,d=o.adjustScalarBytes===void 0?m=>m:o.adjustScalarBytes,h=o.domain===void 0?(m,w,_)=>{if(He(_,"phflag"),w.length||_)throw new Error("Contexts/pre-hash are not supported");return m}:o.domain;function g(m){return c.create(et(m))}function b(m){let w=L.secretKey;H(m,L.secretKey,"secretKey");let _=H(n(m),2*w,"hashedSecretKey"),E=d(_.slice(0,w)),x=_.slice(w,2*w),I=g(E);return{head:E,prefix:x,scalar:I}}function p(m){let{head:w,prefix:_,scalar:E}=b(m),x=s.multiply(E),I=x.toBytes();return{head:w,prefix:_,scalar:E,point:x,pointBytes:I}}function y(m){return p(m).pointBytes}function v(m=Uint8Array.of(),...w){let _=le(...w);return g(n(h(_,H(m,void 0,"context"),!!i)))}function S(m,w,_={}){m=H(m,void 0,"message"),i&&(m=i(m));let{prefix:E,scalar:x,pointBytes:I}=p(w),C=v(_.context,E,m),P=s.multiply(C).toBytes(),D=v(_.context,P,I,m),B=c.create(C+D*x);if(!c.isValid(B))throw new Error("sign failed: invalid s");let V=le(P,c.toBytes(B));return H(V,L.signature,"result")}let R={zip215:o.zip215};function A(m,w,_,E=R){let{context:x}=E,I=E.zip215===void 0?!!R.zip215:E.zip215,C=L.signature;m=H(m,C,"signature"),w=H(w,void 0,"message"),_=H(_,L.publicKey,"publicKey"),I!==void 0&&He(I,"zip215"),i&&(w=i(w));let P=C/2,D=m.subarray(0,P),B=et(m.subarray(P,C)),V,G,q;try{V=r.fromBytes(_,I),G=r.fromBytes(D,I),q=s.multiplyUnsafe(B)}catch{return!1}if(!I&&V.isSmallOrder())return!1;let ue=v(x,D,_,w);return G.add(V.multiplyUnsafe(ue)).subtract(q).clearCofactor().is0()}let O=a.BYTES,L={secretKey:O,publicKey:O,signature:2*O,seed:O};function T(m){return m=m===void 0?f(L.seed):m,H(m,L.seed,"seed")}function M(m){return er(m)&&m.length===L.secretKey}function W(m,w){try{return!!r.fromBytes(m,w===void 0?R.zip215:w)}catch{return!1}}let U={getExtendedPublicKey:p,randomSecretKey:T,isValidSecretKey:M,isValidPublicKey:W,toMontgomery(m){let{y:w}=r.fromBytes(m),_=L.publicKey,E=_===32;if(!E&&_!==57)throw new Error("only defined for 25519 and 448");let x=E?a.div(ge+w,ge-w):a.div(w-ge,w+ge);return a.toBytes(x)},toMontgomerySecret(m){let w=L.secretKey;H(m,w);let _=n(m.subarray(0,w));return d(_).subarray(0,w)}};return Object.freeze(L),Object.freeze(U),Object.freeze({keygen:b1(T,y),getPublicKey:y,sign:S,verify:A,utils:U,Point:r,lengths:L})}function wn(r,e){if($e(r),$e(e),e<0||e>4)throw new Error("invalid I2OSP length: "+e);if(r<0||r>2**(8*e)-1)throw new Error("invalid I2OSP input: "+r);let t=Array.from({length:e}).fill(0);for(let n=e-1;n>=0;n--)t[n]=r&255,r>>>=8;return new Uint8Array(t)}function ta(r,e){let t=new Uint8Array(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function ra(r){if(!er(r)&&typeof r!="string")throw new Error("DST must be Uint8Array or ascii string");let e=typeof r=="string"?m1(r):r;if(e.length===0)throw new Error("DST must be non-empty");return e}function zi(r,e,t,n){H(r),$e(t),e=ra(e),e.length>255&&(e=n(le(m1("H2C-OVERSIZE-DST-"),e)));let{outputLen:o,blockLen:i}=n,s=Math.ceil(t/o);if(t>65535||s>255)throw new Error("expand_message_xmd: invalid lenInBytes");let a=le(e,wn(e.length,1)),c=new Uint8Array(i),u=wn(t,2),l=new Array(s),f=n(le(c,r,u,wn(0,1),a));l[0]=n(le(f,wn(1,1),a));for(let h=1;h<s;h++){let g=[ta(f,l[h-1]),wn(h+1,1),a];l[h]=n(le(...g))}return le(...l).slice(0,t)}var o3="HashToScalar-";var na=BigInt(0),yt=BigInt(1),i3=BigInt(2);var oa=BigInt(5),ia=BigInt(8),Or=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),ji={p:Or,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:ia,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function sa(r){let e=BigInt(10),t=BigInt(20),n=BigInt(40),o=BigInt(80),i=Or,a=r*r%i*r%i,c=re(a,i3,i)*a%i,u=re(c,yt,i)*r%i,l=re(u,oa,i)*u%i,f=re(l,e,i)*l%i,d=re(f,t,i)*f%i,h=re(d,n,i)*d%i,g=re(h,o,i)*h%i,b=re(g,o,i)*h%i,p=re(b,e,i)*l%i;return{pow_p_5_8:re(p,i3,i)*r%i,b2:a}}function aa(r){return r[0]&=248,r[31]&=127,r[31]|=64,r}var Vi=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function Gi(r,e){let t=Or,n=ae(e*e*e,t),o=ae(n*n*e,t),i=sa(r*o).pow_p_5_8,s=ae(r*n*i,t),a=ae(e*s*s,t),c=s,u=ae(s*Vi,t),l=a===r,f=a===ae(-r,t),d=a===ae(-r*Vi,t);return l&&(s=c),(f||d)&&(s=u),gt(s,t)&&(s=ae(-s,t)),{isValid:l||f,value:s}}var Bt=r3(ji,{uvRatio:Gi}),Ot=Bt.Fp,c3=Bt.Fn;function ca(r){return n3(Bt,l1,Object.assign({adjustScalarBytes:aa,zip215:!0},r))}var u3=ca({});var Hi=Vi,ua=BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235"),la=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),fa=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),ha=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952"),s3=r=>Gi(yt,r),da=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),$i=r=>Ot.create(et(r)&da);function a3(r){let{d:e}=ji,t=Or,n=y=>Ot.create(y),o=n(Hi*r*r),i=n((o+yt)*fa),s=BigInt(-1),a=n((s-e*o)*n(o+e)),{isValid:c,value:u}=Gi(i,a),l=n(u*r);gt(l,t)||(l=n(-l)),c||(u=l),c||(s=o);let f=n(s*(o-yt)*ha-a),d=u*u,h=n((u+u)*a),g=n(f*ua),b=n(yt-d),p=n(yt+d);return new Bt(n(h*p),n(b*g),n(g*p),n(h*b))}var Nt=class r extends w1{static BASE=new r(Bt.BASE);static ZERO=new r(Bt.ZERO);static Fp=Ot;static Fn=c3;constructor(e){super(e)}static fromAffine(e){return new r(Bt.fromAffine(e))}assertSame(e){if(!(e instanceof r))throw new Error("RistrettoPoint expected")}init(e){return new r(e)}static fromBytes(e){Oe(e,32);let{a:t,d:n}=ji,o=Or,i=R=>Ot.create(R),s=$i(e);if(!F0(Ot.toBytes(s),e)||gt(s,o))throw new Error("invalid ristretto255 encoding 1");let a=i(s*s),c=i(yt+t*a),u=i(yt-t*a),l=i(c*c),f=i(u*u),d=i(t*n*l-f),{isValid:h,value:g}=s3(i(d*f)),b=i(g*u),p=i(g*b*d),y=i((s+s)*b);gt(y,o)&&(y=i(-y));let v=i(c*p),S=i(y*v);if(!h||gt(S,o)||v===na)throw new Error("invalid ristretto255 encoding 2");return new r(new Bt(y,v,yt,S))}static fromHex(e){return r.fromBytes(un(e))}toBytes(){let{X:e,Y:t,Z:n,T:o}=this.ep,i=Or,s=p=>Ot.create(p),a=s(s(n+t)*s(n-t)),c=s(e*t),u=s(c*c),{value:l}=s3(s(a*u)),f=s(l*a),d=s(l*c),h=s(f*d*o),g;if(gt(o*h,i)){let p=s(t*Hi),y=s(e*Hi);e=p,t=y,g=s(f*la)}else g=d;gt(e*h,i)&&(t=s(-t));let b=s((n-t)*g);return gt(b,i)&&(b=s(-b)),Ot.toBytes(b)}equals(e){this.assertSame(e);let{X:t,Y:n}=this.ep,{X:o,Y:i}=e.ep,s=u=>Ot.create(u),a=s(t*i)===s(n*o),c=s(n*i)===s(t*o);return a||c}is0(){return this.equals(r.ZERO)}};Object.freeze(Nt.BASE);Object.freeze(Nt.ZERO);Object.freeze(Nt.prototype);Object.freeze(Nt);var pa=Object.freeze({Point:Nt,hashToCurve(r,e){let t=e?.DST===void 0?"ristretto255_XMD:SHA-512_R255MAP_RO_":e.DST,n=zi(r,t,64,l1);return pa.deriveToCurve(n)},hashToScalar(r,e={DST:o3}){let t=zi(r,e.DST,64,l1);return c3.create(et(t))},deriveToCurve(r){Oe(r,64);let e=$i(r.subarray(0,32)),t=a3(e),n=$i(r.subarray(32,64)),o=a3(n);return new Nt(t.add(o))}});var x1=32;var Yi,ma=(async()=>{try{return await Ne.get().subtle.generateKey({name:"Ed25519"},!0,["sign","verify"]),!0}catch{return!1}})();async function ga(r,e,t){if(r.buffer instanceof ArrayBuffer){let n=await Ne.get().subtle.importKey("raw",r.buffer,{name:"Ed25519"},!1,["verify"]);return await Ne.get().subtle.verify({name:"Ed25519"},n,e,t instanceof Uint8Array?t:t.subarray())}throw new TypeError("WebCrypto does not support SharedArrayBuffer for Ed25519 keys")}function ya(r,e,t){return u3.verify(e,t instanceof Uint8Array?t:t.subarray(),r)}async function l3(r,e,t){return Yi==null&&(Yi=await ma),Yi?ga(r,e,t):ya(r,e,t)}function E1(r){return r==null?!1:typeof r.then=="function"&&typeof r.catch=="function"&&typeof r.finally=="function"}var v1=class{type="Ed25519";raw;constructor(e){this.raw=Zi(e,x1)}toMultihash(){return ze.digest(Pt(this))}toCID(){return X.createV1(114,this.toMultihash())}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Q(this.raw,e.raw)}verify(e,t,n){n?.signal?.throwIfAborted();let o=l3(this.raw,t,e);return E1(o)?o.then(i=>(n?.signal?.throwIfAborted(),i)):o}};function Qi(r){return r=Zi(r,x1),new v1(r)}function Zi(r,e){if(r=Uint8Array.from(r??[]),r.length!==e)throw new K(`Key must be a Uint8Array of length ${e}, got ${r.length}`);return r}var wa=Math.pow(2,7),xa=Math.pow(2,14),Ea=Math.pow(2,21),Wi=Math.pow(2,28),Xi=Math.pow(2,35),Ji=Math.pow(2,42),es=Math.pow(2,49),Y=128,Se=127;function De(r){if(r<wa)return 1;if(r<xa)return 2;if(r<Ea)return 3;if(r<Wi)return 4;if(r<Xi)return 5;if(r<Ji)return 6;if(r<es)return 7;if(Number.MAX_SAFE_INTEGER!=null&&r>Number.MAX_SAFE_INTEGER)throw new RangeError("Could not encode varint");return 8}function Br(r,e,t=0){switch(De(r)){case 8:e[t++]=r&255|Y,r/=128;case 7:e[t++]=r&255|Y,r/=128;case 6:e[t++]=r&255|Y,r/=128;case 5:e[t++]=r&255|Y,r/=128;case 4:e[t++]=r&255|Y,r>>>=7;case 3:e[t++]=r&255|Y,r>>>=7;case 2:e[t++]=r&255|Y,r>>>=7;case 1:{e[t++]=r&255,r>>>=7;break}default:throw new Error("unreachable")}return e}function va(r,e,t=0){switch(De(r)){case 8:e.set(t++,r&255|Y),r/=128;case 7:e.set(t++,r&255|Y),r/=128;case 6:e.set(t++,r&255|Y),r/=128;case 5:e.set(t++,r&255|Y),r/=128;case 4:e.set(t++,r&255|Y),r>>>=7;case 3:e.set(t++,r&255|Y),r>>>=7;case 2:e.set(t++,r&255|Y),r>>>=7;case 1:{e.set(t++,r&255),r>>>=7;break}default:throw new Error("unreachable")}return e}function ts(r,e){let t=r[e],n=0;if(n+=t&Se,t<Y||(t=r[e+1],n+=(t&Se)<<7,t<Y)||(t=r[e+2],n+=(t&Se)<<14,t<Y)||(t=r[e+3],n+=(t&Se)<<21,t<Y)||(t=r[e+4],n+=(t&Se)*Wi,t<Y)||(t=r[e+5],n+=(t&Se)*Xi,t<Y)||(t=r[e+6],n+=(t&Se)*Ji,t<Y)||(t=r[e+7],n+=(t&Se)*es,t<Y))return n;throw new RangeError("Could not decode varint")}function Sa(r,e){let t=r.get(e),n=0;if(n+=t&Se,t<Y||(t=r.get(e+1),n+=(t&Se)<<7,t<Y)||(t=r.get(e+2),n+=(t&Se)<<14,t<Y)||(t=r.get(e+3),n+=(t&Se)<<21,t<Y)||(t=r.get(e+4),n+=(t&Se)*Wi,t<Y)||(t=r.get(e+5),n+=(t&Se)*Xi,t<Y)||(t=r.get(e+6),n+=(t&Se)*Ji,t<Y)||(t=r.get(e+7),n+=(t&Se)*es,t<Y))return n;throw new RangeError("Could not decode varint")}function S1(r,e,t=0){return e==null&&(e=ve(De(r))),e instanceof Uint8Array?Br(r,e,t):va(r,e,t)}function ir(r,e=0){return r instanceof Uint8Array?ts(r,e):Sa(r,e)}var rs=new Float32Array([-0]),Ft=new Uint8Array(rs.buffer);function h3(r,e,t){rs[0]=r,e[t]=Ft[0],e[t+1]=Ft[1],e[t+2]=Ft[2],e[t+3]=Ft[3]}function d3(r,e){return Ft[0]=r[e],Ft[1]=r[e+1],Ft[2]=r[e+2],Ft[3]=r[e+3],rs[0]}var ns=new Float64Array([-0]),_e=new Uint8Array(ns.buffer);function p3(r,e,t){ns[0]=r,e[t]=_e[0],e[t+1]=_e[1],e[t+2]=_e[2],e[t+3]=_e[3],e[t+4]=_e[4],e[t+5]=_e[5],e[t+6]=_e[6],e[t+7]=_e[7]}function m3(r,e){return _e[0]=r[e],_e[1]=r[e+1],_e[2]=r[e+2],_e[3]=r[e+3],_e[4]=r[e+4],_e[5]=r[e+5],_e[6]=r[e+6],_e[7]=r[e+7],ns[0]}var _a=BigInt(Number.MAX_SAFE_INTEGER),Ia=BigInt(Number.MIN_SAFE_INTEGER),Be=class r{lo;hi;constructor(e,t){this.lo=e|0,this.hi=t|0}toNumber(e=!1){if(!e&&this.hi>>>31>0){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(t+n*4294967296)}return this.lo+this.hi*4294967296}toBigInt(e=!1){if(e)return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n);if(this.hi>>>31){let t=~this.lo+1>>>0,n=~this.hi>>>0;return t===0&&(n=n+1>>>0),-(BigInt(t)+(BigInt(n)<<32n))}return BigInt(this.lo>>>0)+(BigInt(this.hi>>>0)<<32n)}toString(e=!1){return this.toBigInt(e).toString()}zzEncode(){let e=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^e)>>>0,this.lo=(this.lo<<1^e)>>>0,this}zzDecode(){let e=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^e)>>>0,this.hi=(this.hi>>>1^e)>>>0,this}length(){let e=this.lo,t=(this.lo>>>28|this.hi<<4)>>>0,n=this.hi>>>24;return n===0?t===0?e<16384?e<128?1:2:e<2097152?3:4:t<16384?t<128?5:6:t<2097152?7:8:n<128?9:10}static fromBigInt(e){if(e===0n)return sr;if(e<_a&&e>Ia)return this.fromNumber(Number(e));let t=e<0n;t&&(e=-e);let n=e>>32n,o=e-(n<<32n);return t&&(n=~n|0n,o=~o|0n,++o>g3&&(o=0n,++n>g3&&(n=0n))),new r(Number(o),Number(n))}static fromNumber(e){if(e===0)return sr;let t=e<0;t&&(e=-e);let n=e>>>0,o=(e-n)/4294967296>>>0;return t&&(o=~o>>>0,n=~n>>>0,++n>4294967295&&(n=0,++o>4294967295&&(o=0))),new r(n,o)}static from(e){return typeof e=="number"?r.fromNumber(e):typeof e=="bigint"?r.fromBigInt(e):typeof e=="string"?r.fromBigInt(BigInt(e)):e.low!=null||e.high!=null?new r(e.low>>>0,e.high>>>0):sr}},sr=new Be(0,0);sr.toBigInt=function(){return 0n};sr.zzEncode=sr.zzDecode=function(){return this};sr.length=function(){return 1};var g3=4294967296n;function y3(r){let e=0,t=0;for(let n=0;n<r.length;++n)t=r.charCodeAt(n),t<128?e+=1:t<2048?e+=2:(t&64512)===55296&&(r.charCodeAt(n+1)&64512)===56320?(++n,e+=4):e+=3;return e}function b3(r,e,t){if(t-e<1)return"";let o,i=[],s=0,a;for(;e<t;)a=r[e++],a<128?i[s++]=a:a>191&&a<224?i[s++]=(a&31)<<6|r[e++]&63:a>239&&a<365?(a=((a&7)<<18|(r[e++]&63)<<12|(r[e++]&63)<<6|r[e++]&63)-65536,i[s++]=55296+(a>>10),i[s++]=56320+(a&1023)):i[s++]=(a&15)<<12|(r[e++]&63)<<6|r[e++]&63,s>8191&&((o??(o=[])).push(String.fromCharCode.apply(String,i)),s=0);return o!=null?(s>0&&o.push(String.fromCharCode.apply(String,i.slice(0,s))),o.join("")):String.fromCharCode.apply(String,i.slice(0,s))}function os(r,e,t){let n=t,o,i;for(let s=0;s<r.length;++s)o=r.charCodeAt(s),o<128?e[t++]=o:o<2048?(e[t++]=o>>6|192,e[t++]=o&63|128):(o&64512)===55296&&((i=r.charCodeAt(s+1))&64512)===56320?(o=65536+((o&1023)<<10)+(i&1023),++s,e[t++]=o>>18|240,e[t++]=o>>12&63|128,e[t++]=o>>6&63|128,e[t++]=o&63|128):(e[t++]=o>>12|224,e[t++]=o>>6&63|128,e[t++]=o&63|128);return t-n}function Ge(r,e){return RangeError(`index out of range: ${r.pos} + ${e??1} > ${r.len}`)}function I1(r,e){return(r[e-4]|r[e-3]<<8|r[e-2]<<16|r[e-1]<<24)>>>0}var is=class{buf;pos;len;_slice=Uint8Array.prototype.subarray;constructor(e){this.buf=e,this.pos=0,this.len=e.length}uint32(){let e=4294967295;if(e=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(e=(e|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(e=(e|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return e;if((this.pos+=5)>this.len)throw this.pos=this.len,Ge(this,10);return e}int32(){return this.uint32()|0}sint32(){let e=this.uint32();return e>>>1^-(e&1)|0}bool(){return this.uint32()!==0}fixed32(){if(this.pos+4>this.len)throw Ge(this,4);return I1(this.buf,this.pos+=4)}sfixed32(){if(this.pos+4>this.len)throw Ge(this,4);return I1(this.buf,this.pos+=4)|0}float(){if(this.pos+4>this.len)throw Ge(this,4);let e=d3(this.buf,this.pos);return this.pos+=4,e}double(){if(this.pos+8>this.len)throw Ge(this,4);let e=m3(this.buf,this.pos);return this.pos+=8,e}bytes(){let e=this.uint32(),t=this.pos,n=this.pos+e;if(n>this.len)throw Ge(this,e);return this.pos+=e,t===n?new Uint8Array(0):this.buf.subarray(t,n)}string(){let e=this.bytes();return b3(e,0,e.length)}skip(e){if(typeof e=="number"){if(this.pos+e>this.len)throw Ge(this,e);this.pos+=e}else do if(this.pos>=this.len)throw Ge(this);while((this.buf[this.pos++]&128)!==0);return this}skipType(e){switch(e){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(e=this.uint32()&7)!==4;)this.skipType(e);break;case 5:this.skip(4);break;default:throw Error(`invalid wire type ${e} at offset ${this.pos}`)}return this}readLongVarint(){let e=new Be(0,0),t=0;if(this.len-this.pos>4){for(;t<4;++t)if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e;if(e.lo=(e.lo|(this.buf[this.pos]&127)<<28)>>>0,e.hi=(e.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return e;t=0}else{for(;t<3;++t){if(this.pos>=this.len)throw Ge(this);if(e.lo=(e.lo|(this.buf[this.pos]&127)<<t*7)>>>0,this.buf[this.pos++]<128)return e}return e.lo=(e.lo|(this.buf[this.pos++]&127)<<t*7)>>>0,e}if(this.len-this.pos>4){for(;t<5;++t)if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}else for(;t<5;++t){if(this.pos>=this.len)throw Ge(this);if(e.hi=(e.hi|(this.buf[this.pos]&127)<<t*7+3)>>>0,this.buf[this.pos++]<128)return e}throw Error("invalid varint encoding")}readFixed64(){if(this.pos+8>this.len)throw Ge(this,8);let e=I1(this.buf,this.pos+=4),t=I1(this.buf,this.pos+=4);return new Be(e,t)}int64(){return this.readLongVarint().toBigInt()}int64Number(){return this.readLongVarint().toNumber()}int64String(){return this.readLongVarint().toString()}uint64(){return this.readLongVarint().toBigInt(!0)}uint64Number(){let e=ts(this.buf,this.pos);return this.pos+=De(e),e}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 xn(r){return new is(r instanceof Uint8Array?r:r.subarray())}function tt(r,e,t){let n=xn(r);return e.decode(n,void 0,t)}function ss(r){let e=r??8192,t=e>>>1,n,o=e;return function(s){if(s<1||s>t)return ve(s);o+s>e&&(n=ve(e),o=0);let a=n.subarray(o,o+=s);return(o&7)!==0&&(o=(o|7)+1),a}}var ar=class{fn;len;next;val;constructor(e,t,n){this.fn=e,this.len=t,this.next=void 0,this.val=n}};function as(){}var us=class{head;tail;len;next;constructor(e){this.head=e.head,this.tail=e.tail,this.len=e.len,this.next=e.states}},Ta=ss();function Aa(r){return globalThis.Buffer!=null?ve(r):Ta(r)}var vn=class{len;head;tail;states;constructor(){this.len=0,this.head=new ar(as,0,0),this.tail=this.head,this.states=null}_push(e,t,n){return this.tail=this.tail.next=new ar(e,t,n),this.len+=t,this}uint32(e){return this.len+=(this.tail=this.tail.next=new ls((e=e>>>0)<128?1:e<16384?2:e<2097152?3:e<268435456?4:5,e)).len,this}int32(e){return e<0?this._push(T1,10,Be.fromNumber(e)):this.uint32(e)}sint32(e){return this.uint32((e<<1^e>>31)>>>0)}uint64(e){let t=Be.fromBigInt(e);return this._push(T1,t.length(),t)}uint64Number(e){return this._push(Br,De(e),e)}uint64String(e){return this.uint64(BigInt(e))}int64(e){return this.uint64(e)}int64Number(e){return this.uint64Number(e)}int64String(e){return this.uint64String(e)}sint64(e){let t=Be.fromBigInt(e).zzEncode();return this._push(T1,t.length(),t)}sint64Number(e){let t=Be.fromNumber(e).zzEncode();return this._push(T1,t.length(),t)}sint64String(e){return this.sint64(BigInt(e))}bool(e){return this._push(cs,1,e?1:0)}fixed32(e){return this._push(En,4,e>>>0)}sfixed32(e){return this.fixed32(e)}fixed64(e){let t=Be.fromBigInt(e);return this._push(En,4,t.lo)._push(En,4,t.hi)}fixed64Number(e){let t=Be.fromNumber(e);return this._push(En,4,t.lo)._push(En,4,t.hi)}fixed64String(e){return this.fixed64(BigInt(e))}sfixed64(e){return this.fixed64(e)}sfixed64Number(e){return this.fixed64Number(e)}sfixed64String(e){return this.fixed64String(e)}float(e){return this._push(h3,4,e)}double(e){return this._push(p3,8,e)}bytes(e){let t=e.length>>>0;return t===0?this._push(cs,1,0):this.uint32(t)._push(Ca,t,e)}string(e){let t=y3(e);return t!==0?this.uint32(t)._push(os,t,e):this._push(cs,1,0)}fork(){return this.states=new us(this),this.head=this.tail=new ar(as,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 ar(as,0,0),this.len=0),this}ldelim(){let e=this.head,t=this.tail,n=this.len;return this.reset().uint32(n),n!==0&&(this.tail.next=e.next,this.tail=t,this.len+=n),this}finish(){let e=this.head.next,t=Aa(this.len),n=0;for(;e!=null;)e.fn(e.val,t,n),n+=e.len,e=e.next;return t}};function cs(r,e,t){e[t]=r&255}function Pa(r,e,t){for(;r>127;)e[t++]=r&127|128,r>>>=7;e[t]=r}var ls=class extends ar{next;constructor(e,t){super(Pa,e,t),this.next=void 0}};function T1(r,e,t){for(;r.hi!==0;)e[t++]=r.lo&127|128,r.lo=(r.lo>>>7|r.hi<<25)>>>0,r.hi>>>=7;for(;r.lo>127;)e[t++]=r.lo&127|128,r.lo=r.lo>>>7;e[t++]=r.lo}function En(r,e,t){e[t]=r&255,e[t+1]=r>>>8&255,e[t+2]=r>>>16&255,e[t+3]=r>>>24}function Ca(r,e,t){e.set(r,t)}globalThis.Buffer!=null&&(vn.prototype.bytes=function(r){let e=r.length>>>0;return this.uint32(e),e>0&&this._push(Ra,e,r),this},vn.prototype.string=function(r){let e=globalThis.Buffer.byteLength(r);return this.uint32(e),e>0&&this._push(Da,e,r),this});function Ra(r,e,t){e.set(r,t)}function Da(r,e,t){r.length<40?os(r,e,t):e.utf8Write!=null?e.utf8Write(r,t):e.set(F(r),t)}function fs(){return new vn}function rt(r,e){let t=fs();return e.encode(r,t,{lengthDelimited:!1}),t.finish()}function*nt(r,e,t){let n=xn(r);yield*e.stream(n,void 0,"$",t)}var A1={VARINT:0,BIT64:1,LENGTH_DELIMITED:2,START_GROUP:3,END_GROUP:4,BIT32:5};function P1(r,e,t,n,o){return{name:r,type:e,encode:t,decode:n,stream:o}}function Nr(r){function e(i){if(r[i.toString()]==null)throw new Error("Invalid enum value");return r[i]}let t=function(s,a){let c=e(s);a.int32(c)},n=function(s){let a=s.int32();return e(a)},o=function*(s){let a=s.int32();yield e(a)};return P1("enum",A1.VARINT,t,n,o)}function ot(r,e,t){return P1("message",A1.LENGTH_DELIMITED,r,e,t)}var bt=class extends Error{code="ERR_MAX_LENGTH";name="MaxLengthError"};var ne;(function(r){r.RSA="RSA",r.Ed25519="Ed25519",r.secp256k1="secp256k1",r.ECDSA="ECDSA"})(ne||(ne={}));var hs;(function(r){r[r.RSA=0]="RSA",r[r.Ed25519=1]="Ed25519",r[r.secp256k1=2]="secp256k1",r[r.ECDSA=3]="ECDSA"})(hs||(hs={}));(function(r){r.codec=()=>Nr(hs)})(ne||(ne={}));var it;(function(r){let e;r.codec=()=>(e==null&&(e=ot((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.Type!=null&&(s.uint32(8),ne.codec().encode(i.Type,s)),i.Data!=null&&(s.uint32(18),s.bytes(i.Data)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{c.Type=ne.codec().decode(i);break}case 2:{c.Data=i.bytes();break}default:{i.skipType(l&7);break}}}return c},function*(i,s,a,c={}){let u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{yield{field:`${a}.Type`,value:ne.codec().decode(i)};break}case 2:{yield{field:`${a}.Data`,value:i.bytes()};break}default:{i.skipType(l&7);break}}}})),e);function t(i){return rt(i,r.codec())}r.encode=t;function n(i,s){return tt(i,r.codec(),s)}r.decode=n;function o(i,s){return nt(i,r.codec(),s)}r.stream=o})(it||(it={}));var ds;(function(r){let e;r.codec=()=>(e==null&&(e=ot((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.Type!=null&&(s.uint32(8),ne.codec().encode(i.Type,s)),i.Data!=null&&(s.uint32(18),s.bytes(i.Data)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{c.Type=ne.codec().decode(i);break}case 2:{c.Data=i.bytes();break}default:{i.skipType(l&7);break}}}return c},function*(i,s,a,c={}){let u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{yield{field:`${a}.Type`,value:ne.codec().decode(i)};break}case 2:{yield{field:`${a}.Data`,value:i.bytes()};break}default:{i.skipType(l&7);break}}}})),e);function t(i){return rt(i,r.codec())}r.encode=t;function n(i,s){return tt(i,r.codec(),s)}r.decode=n;function o(i,s){return nt(i,r.codec(),s)}r.stream=o})(ds||(ds={}));function C1(r){if(isNaN(r)||r<=0)throw new K("random bytes length must be a Number bigger than 0");return c1(r)}var _n={};Ae(_n,{MAX_RSA_KEY_SIZE:()=>ps,generateRSAKeyPair:()=>_3,jwkToJWKKeyPair:()=>I3,jwkToPkcs1:()=>Ba,jwkToPkix:()=>bs,jwkToRSAPrivateKey:()=>vs,pkcs1MessageToJwk:()=>gs,pkcs1MessageToRSAPrivateKey:()=>ws,pkcs1ToJwk:()=>Oa,pkcs1ToRSAPrivateKey:()=>S3,pkixMessageToJwk:()=>ys,pkixMessageToRSAPublicKey:()=>Es,pkixToJwk:()=>Na,pkixToRSAPublicKey:()=>xs});var Fr=class{type="RSA";jwk;_raw;_multihash;constructor(e,t){this.jwk=e,this._multihash=t}get raw(){return this._raw==null&&(this._raw=_n.jwkToPkix(this.jwk)),this._raw}toMultihash(){return this._multihash}toCID(){return X.createV1(114,this._multihash)}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Q(this.raw,e.raw)}verify(e,t,n){return v3(this.jwk,t,e,n)}},Sn=class{type="RSA";jwk;_raw;publicKey;constructor(e,t){this.jwk=e,this.publicKey=t}get raw(){return this._raw==null&&(this._raw=_n.jwkToPkcs1(this.jwk)),this._raw}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Q(this.raw,e.raw)}sign(e,t){return E3(this.jwk,e,t)}};var ps=8192,ms=18,La=1062,ka=Uint8Array.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);function Oa(r){let e=ht(r);return gs(e)}function gs(r){return{n:N(r[1],"base64url"),e:N(r[2],"base64url"),d:N(r[3],"base64url"),p:N(r[4],"base64url"),q:N(r[5],"base64url"),dp:N(r[6],"base64url"),dq:N(r[7],"base64url"),qi:N(r[8],"base64url"),kty:"RSA"}}function Ba(r){if(r.n==null||r.e==null||r.d==null||r.p==null||r.q==null||r.dp==null||r.dq==null||r.qi==null)throw new K("JWK was missing components");return At([Re(Uint8Array.from([0])),Re(F(r.n,"base64url")),Re(F(r.e,"base64url")),Re(F(r.d,"base64url")),Re(F(r.p,"base64url")),Re(F(r.q,"base64url")),Re(F(r.dp,"base64url")),Re(F(r.dq,"base64url")),Re(F(r.qi,"base64url"))]).subarray()}function Na(r){let e=ht(r,{offset:0});return ys(e)}function ys(r){let e=ht(r[1],{offset:0});return{kty:"RSA",n:N(e[0],"base64url"),e:N(e[1],"base64url")}}function bs(r){if(r.n==null||r.e==null)throw new K("JWK was missing components");return At([ka,n1(At([Re(F(r.n,"base64url")),Re(F(r.e,"base64url"))]))]).subarray()}function S3(r){let e=ht(r);return ws(e)}function ws(r){let e=gs(r);return vs(e)}function xs(r,e){if(r.byteLength>=La)throw new ut("Key size is too large");let t=ht(r,{offset:0});return Es(t,r,e)}function Es(r,e,t){let n=ys(r);if(t==null){let o=Tr(it.encode({Type:ne.RSA,Data:e}));t=Xe(ms,o)}return new Fr(n,t)}function vs(r){if(A3(r)>ps)throw new K("Key size is too large");let e=I3(r),t=Tr(it.encode({Type:ne.RSA,Data:bs(e.publicKey)})),n=Xe(ms,t);return new Sn(e.privateKey,new Fr(e.publicKey,n))}async function _3(r){if(r>ps)throw new K("Key size is too large");let e=await T3(r),t=Tr(it.encode({Type:ne.RSA,Data:bs(e.publicKey)})),n=Xe(ms,t);return new Sn(e.privateKey,new Fr(e.publicKey,n))}function I3(r){if(r==null)throw new K("Missing key parameter");return{privateKey:r,publicKey:{kty:r.kty,n:r.n,e:r.e}}}async function T3(r,e){let t=await Ne.get().subtle.generateKey({name:"RSASSA-PKCS1-v1_5",modulusLength:r,publicExponent:new Uint8Array([1,0,1]),hash:{name:"SHA-256"}},!0,["sign","verify"]);e?.signal?.throwIfAborted();let n=await Fa(t,e);return{privateKey:n[0],publicKey:n[1]}}async function E3(r,e,t){let n=await Ne.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["sign"]);t?.signal?.throwIfAborted();let o=await Ne.get().subtle.sign({name:"RSASSA-PKCS1-v1_5"},n,e instanceof Uint8Array?e:e.subarray());return t?.signal?.throwIfAborted(),new Uint8Array(o,0,o.byteLength)}async function v3(r,e,t,n){let o=await Ne.get().subtle.importKey("jwk",r,{name:"RSASSA-PKCS1-v1_5",hash:{name:"SHA-256"}},!1,["verify"]);n?.signal?.throwIfAborted();let i=await Ne.get().subtle.verify({name:"RSASSA-PKCS1-v1_5"},o,e,t instanceof Uint8Array?t:t.subarray());return n?.signal?.throwIfAborted(),i}async function Fa(r,e){if(r.privateKey==null||r.publicKey==null)throw new K("Private and public key are required");let t=await Promise.all([Ne.get().subtle.exportKey("jwk",r.privateKey),Ne.get().subtle.exportKey("jwk",r.publicKey)]);return e?.signal?.throwIfAborted(),t}function A3(r){if(r.kty!=="RSA")throw new K("invalid key type");if(r.n==null)throw new K("invalid key modulus");return F(r.n,"base64url").length*8}var R1=class{oHash;iHash;blockLen;outputLen;canXOF=!1;finished=!1;destroyed=!1;constructor(e,t){if(o1(e),Oe(t,void 0,"key"),this.iHash=e.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(t.length>n?e.create().update(t).digest():t);for(let i=0;i<o.length;i++)o[i]^=54;this.iHash.update(o),this.oHash=e.create();for(let i=0;i<o.length;i++)o[i]^=106;this.oHash.update(o),pt(o)}update(e){return Ir(this),this.iHash.update(e),this}digestInto(e){Ir(this),i1(e,this),this.finished=!0;let t=e.subarray(0,this.outputLen);this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let e=new Uint8Array(this.oHash.outputLen);return this.digestInto(e),e}_cloneInto(e){e||=Object.create(Object.getPrototypeOf(this),{});let{oHash:t,iHash:n,finished:o,destroyed:i,blockLen:s,outputLen:a}=this;return e=e,e.finished=o,e.destroyed=i,e.blockLen=s,e.outputLen=a,e.oHash=t._cloneInto(e.oHash),e.iHash=n._cloneInto(e.iHash),e}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},P3=(()=>{let r=((e,t,n)=>new R1(e,t).update(n).digest());return r.create=(e,t)=>new R1(e,t),r})();var C3=(r,e)=>(r+(r>=0?e:-e)/R3)/e;function Ma(r,e,t){Cr("scalar",r,st,t);let[[n,o],[i,s]]=e,a=C3(s*r,t),c=C3(-o*r,t),u=r-a*n-c*i,l=-a*o-c*s,f=u<st,d=l<st;f&&(u=-u),d&&(l=-l);let h=gn(Math.ceil(Rr(t)/2))+Mt;if(u<st||u>=h||l<st||l>=h)throw new Error("splitScalar (endomorphism): failed for k");return{k1neg:f,k1:u,k2neg:d,k2:l}}function _s(r){if(!["compact","recovered","der"].includes(r))throw new Error('Signature format must be "compact", "recovered", or "der"');return r}function Ss(r,e){je(r);let t={};for(let n of Object.keys(e))t[n]=r[n]===void 0?e[n]:r[n];return He(t.lowS,"lowS"),He(t.prehash,"prehash"),t.format!==void 0&&_s(t.format),t}var Is=class extends Error{constructor(e=""){super(e)}},Ye={Err:Is,_tlv:{encode:(r,e)=>{let{Err:t}=Ye;if($e(r,"tag"),r<0||r>255)throw new t("tlv.encode: wrong tag");if(typeof e!="string")throw new TypeError('"data" expected string, got type='+typeof e);if(e.length&1)throw new t("tlv.encode: unpadded data");let n=e.length/2,o=pn(n);if(o.length/2&128)throw new t("tlv.encode: long form length too big");let i=n>127?pn(o.length/2|128):"";return pn(r)+i+o+e},decode(r,e){let{Err:t}=Ye;e=H(e,void 0,"DER data");let n=0;if(r<0||r>255)throw new t("tlv.encode: wrong tag");if(e.length<2||e[n++]!==r)throw new t("tlv.decode: wrong tlv");let o=e[n++],i=!!(o&128),s=0;if(!i)s=o;else{let c=o&127;if(!c)throw new t("tlv.decode(long): indefinite length not supported");if(c>4)throw new t("tlv.decode(long): byte length is too big");let u=e.subarray(n,n+c);if(u.length!==c)throw new t("tlv.decode: length bytes not complete");if(u[0]===0)throw new t("tlv.decode(long): zero leftmost byte");for(let l of u)s=s<<8|l;if(n+=c,s<128)throw new t("tlv.decode(long): not minimal encoding")}let a=e.subarray(n,n+s);if(a.length!==s)throw new t("tlv.decode: wrong value length");return{v:a,l:e.subarray(n+s)}}},_int:{encode(r){let{Err:e}=Ye;if(d1(r),r<st)throw new e("integer: negative integers are not allowed");let t=pn(r);if(Number.parseInt(t[0],16)&8&&(t="00"+t),t.length&1)throw new e("unexpected DER parsing assertion: unpadded hex");return t},decode(r){let{Err:e}=Ye;if(r.length<1)throw new e("invalid signature integer: empty");if(r[0]&128)throw new e("invalid signature integer: negative");if(r.length>1&&r[0]===0&&!(r[1]&128))throw new e("invalid signature integer: unnecessary leading zero");return tr(r)}},toSig(r){let{Err:e,_int:t,_tlv:n}=Ye,o=H(r,void 0,"signature"),{v:i,l:s}=n.decode(48,o);if(s.length)throw new e("invalid signature: left bytes after parsing");let{v:a,l:c}=n.decode(2,i),{v:u,l}=n.decode(2,c);if(l.length)throw new e("invalid signature: left bytes after parsing");return{r:t.decode(a),s:t.decode(u)}},hexFromSig(r){let{_tlv:e,_int:t}=Ye,n=e.encode(2,t.encode(r.r)),o=e.encode(2,t.encode(r.s)),i=n+o;return e.encode(48,i)}};Object.freeze(Ye._tlv);Object.freeze(Ye._int);Object.freeze(Ye);var st=BigInt(0),Mt=BigInt(1),R3=BigInt(2),D1=BigInt(3),Ua=BigInt(4);function D3(r,e={}){let t=y1("weierstrass",r,e),n=t.Fp,o=t.Fn,i=t.CURVE,{h:s,n:a}=i;je(e,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:c,allowInfinityPoint:u}=e;if(c&&(!n.is0(i.a)||typeof c.beta!="bigint"||!Array.isArray(c.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=k3(n,o);function f(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function d(U,m,w){if(u&&m.is0())return Uint8Array.of(0);let{x:_,y:E}=m.toAffine(),x=n.toBytes(_);if(He(w,"isCompressed"),w){f();let I=!n.isOdd(E);return le(L3(I),x)}else return le(Uint8Array.of(4),x,n.toBytes(E))}function h(U){H(U,void 0,"Point");let{publicKey:m,publicKeyUncompressed:w}=l,_=U.length,E=U[0],x=U.subarray(1);if(u&&_===1&&E===0)return{x:n.ZERO,y:n.ZERO};if(_===m&&(E===2||E===3)){let I=n.fromBytes(x);if(!n.isValid(I))throw new Error("bad point: is not on curve, wrong x");let C=p(I),P;try{P=n.sqrt(C)}catch(V){let G=V instanceof Error?": "+V.message:"";throw new Error("bad point: is not on curve, sqrt error"+G)}f();let D=n.isOdd(P);return(E&1)===1!==D&&(P=n.neg(P)),{x:I,y:P}}else if(_===w&&E===4){let I=n.BYTES,C=n.fromBytes(x.subarray(0,I)),P=n.fromBytes(x.subarray(I,I*2));if(!y(C,P))throw new Error("bad point: is not on curve");return{x:C,y:P}}else throw new Error(`bad point: got length ${_}, expected compressed=${m} or uncompressed=${w}`)}let g=e.toBytes===void 0?d:e.toBytes,b=e.fromBytes===void 0?h:e.fromBytes;function p(U){let m=n.sqr(U),w=n.mul(m,U);return n.add(n.add(w,n.mul(U,i.a)),i.b)}function y(U,m){let w=n.sqr(m),_=p(U);return n.eql(w,_)}if(!y(i.Gx,i.Gy))throw new Error("bad curve params: generator point");let v=n.mul(n.pow(i.a,D1),Ua),S=n.mul(n.sqr(i.b),BigInt(27));if(n.is0(n.add(v,S)))throw new Error("bad curve params: a or b");function R(U,m,w=!1){if(!n.isValid(m)||w&&n.is0(m))throw new Error(`bad point coordinate ${U}`);return m}function A(U){if(!(U instanceof T))throw new Error("Weierstrass Point expected")}function O(U){if(!c||!c.basises)throw new Error("no endo");return Ma(U,c.basises,o.ORDER)}function L(U,m,w,_,E){return w=new T(n.mul(w.X,U),w.Y,w.Z),m=bn(_,m),w=bn(E,w),m.add(w)}class T{static BASE=new T(i.Gx,i.Gy,n.ONE);static ZERO=new T(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(m,w,_){this.X=R("x",m),this.Y=R("y",w,!0),this.Z=R("z",_),Object.freeze(this)}static CURVE(){return i}static fromAffine(m){let{x:w,y:_}=m||{};if(!m||!n.isValid(w)||!n.isValid(_))throw new Error("invalid affine point");if(m instanceof T)throw new Error("projective point not allowed");return n.is0(w)&&n.is0(_)?T.ZERO:new T(w,_,n.ONE)}static fromBytes(m){let w=T.fromAffine(b(H(m,void 0,"point")));return w.assertValidity(),w}static fromHex(m){return T.fromBytes(Pr(m))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(m=8,w=!0){return W.createCache(this,m),w||this.multiply(D1),this}assertValidity(){let m=this;if(m.is0()){if(e.allowInfinityPoint&&n.is0(m.X)&&n.eql(m.Y,n.ONE)&&n.is0(m.Z))return;throw new Error("bad point: ZERO")}let{x:w,y:_}=m.toAffine();if(!n.isValid(w)||!n.isValid(_))throw new Error("bad point: x or y not field elements");if(!y(w,_))throw new Error("bad point: equation left != right");if(!m.isTorsionFree())throw new Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:m}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(m)}equals(m){A(m);let{X:w,Y:_,Z:E}=this,{X:x,Y:I,Z:C}=m,P=n.eql(n.mul(w,C),n.mul(x,E)),D=n.eql(n.mul(_,C),n.mul(I,E));return P&&D}negate(){return new T(this.X,n.neg(this.Y),this.Z)}double(){let{a:m,b:w}=i,_=n.mul(w,D1),{X:E,Y:x,Z:I}=this,C=n.ZERO,P=n.ZERO,D=n.ZERO,B=n.mul(E,E),V=n.mul(x,x),G=n.mul(I,I),q=n.mul(E,x);return q=n.add(q,q),D=n.mul(E,I),D=n.add(D,D),C=n.mul(m,D),P=n.mul(_,G),P=n.add(C,P),C=n.sub(V,P),P=n.add(V,P),P=n.mul(C,P),C=n.mul(q,C),D=n.mul(_,D),G=n.mul(m,G),q=n.sub(B,G),q=n.mul(m,q),q=n.add(q,D),D=n.add(B,B),B=n.add(D,B),B=n.add(B,G),B=n.mul(B,q),P=n.add(P,B),G=n.mul(x,I),G=n.add(G,G),B=n.mul(G,q),C=n.sub(C,B),D=n.mul(G,V),D=n.add(D,D),D=n.add(D,D),new T(C,P,D)}add(m){A(m);let{X:w,Y:_,Z:E}=this,{X:x,Y:I,Z:C}=m,P=n.ZERO,D=n.ZERO,B=n.ZERO,V=i.a,G=n.mul(i.b,D1),q=n.mul(w,x),ue=n.mul(_,I),he=n.mul(E,C),de=n.add(w,_),se=n.add(x,I);de=n.mul(de,se),se=n.add(q,ue),de=n.sub(de,se),se=n.add(w,E);let Te=n.add(x,C);return se=n.mul(se,Te),Te=n.add(q,he),se=n.sub(se,Te),Te=n.add(_,E),P=n.add(I,C),Te=n.mul(Te,P),P=n.add(ue,he),Te=n.sub(Te,P),B=n.mul(V,se),P=n.mul(G,he),B=n.add(P,B),P=n.sub(ue,B),B=n.add(ue,B),D=n.mul(P,B),ue=n.add(q,q),ue=n.add(ue,q),he=n.mul(V,he),se=n.mul(G,se),ue=n.add(ue,he),he=n.sub(q,he),he=n.mul(V,he),se=n.add(se,he),q=n.mul(ue,se),D=n.add(D,q),q=n.mul(Te,se),P=n.mul(de,P),P=n.sub(P,q),q=n.mul(de,ue),B=n.mul(Te,B),B=n.add(B,q),new T(P,D,B)}subtract(m){return A(m),this.add(m.negate())}is0(){return this.equals(T.ZERO)}multiply(m){let{endo:w}=e;if(!o.isValidNot0(m))throw new RangeError("invalid scalar: out of range");let _,E,x=I=>W.cached(this,I,C=>or(T,C));if(w){let{k1neg:I,k1:C,k2neg:P,k2:D}=O(m),{p:B,f:V}=x(C),{p:G,f:q}=x(D);E=V.add(q),_=L(w.beta,B,G,I,P)}else{let{p:I,f:C}=x(m);_=I,E=C}return or(T,[_,E])[0]}multiplyUnsafe(m){let{endo:w}=e,_=this,E=m;if(!o.isValid(E))throw new RangeError("invalid scalar: out of range");if(E===st||_.is0())return T.ZERO;if(E===Mt)return _;if(W.hasCache(this))return this.multiply(E);if(w){let{k1neg:x,k1:I,k2neg:C,k2:P}=O(E),{p1:D,p2:B}=t3(T,_,I,P);return L(w.beta,D,B,x,C)}else return W.unsafe(_,E)}toAffine(m){let w=this,_=m,{X:E,Y:x,Z:I}=w;if(n.eql(I,n.ONE))return{x:E,y:x};let C=w.is0();_==null&&(_=C?n.ONE:n.inv(I));let P=n.mul(E,_),D=n.mul(x,_),B=n.mul(I,_);if(C)return{x:n.ZERO,y:n.ZERO};if(!n.eql(B,n.ONE))throw new Error("invZ was invalid");return{x:P,y:D}}isTorsionFree(){let{isTorsionFree:m}=e;return s===Mt?!0:m?m(T,this):W.unsafe(this,a).is0()}clearCofactor(){let{clearCofactor:m}=e;return s===Mt?this:m?m(T,this):this.multiplyUnsafe(s)}isSmallOrder(){return s===Mt?this.is0():this.clearCofactor().is0()}toBytes(m=!0){return He(m,"isCompressed"),this.assertValidity(),g(T,this,m)}toHex(m=!0){return Ar(this.toBytes(m))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let M=o.BITS,W=new kr(T,e.endo?Math.ceil(M/2):M);return M>=8&&T.BASE.precompute(8),Object.freeze(T.prototype),Object.freeze(T),T}function L3(r){return Uint8Array.of(r?2:3)}function k3(r,e){return{secretKey:e.BYTES,publicKey:1+r.BYTES,publicKeyUncompressed:1+2*r.BYTES,publicKeyHasPrefix:!0,signature:2*e.BYTES}}function Ka(r,e={}){let{Fn:t}=r,n=e.randomBytes===void 0?dn:e.randomBytes,o=Object.assign(k3(r.Fp,t),{seed:Math.max(Ni(t.ORDER),16)});function i(h){try{let g=t.fromBytes(h);return t.isValidNot0(g)}catch{return!1}}function s(h,g){let{publicKey:b,publicKeyUncompressed:p}=o;try{let y=h.length;return g===!0&&y!==b||g===!1&&y!==p?!1:!!r.fromBytes(h)}catch{return!1}}function a(h){return h=h===void 0?n(o.seed):h,Fi(H(h,o.seed,"seed"),t.ORDER)}function c(h,g=!0){return r.BASE.multiply(t.fromBytes(h)).toBytes(g)}function u(h){let{secretKey:g,publicKey:b,publicKeyUncompressed:p}=o,y=t._lengths;if(!er(h))return;let v=H(h,void 0,"key").length,S=v===b||v===p,R=v===g||!!y?.includes(v);if(!(S&&R))return S}function l(h,g,b=!0){if(u(h)===!0)throw new Error("first arg must be private key");if(u(g)===!1)throw new Error("second arg must be public key");let p=t.fromBytes(h);return r.fromBytes(g).multiply(p).toBytes(b)}let f={isValidSecretKey:i,isValidPublicKey:s,randomSecretKey:a},d=b1(a,c);return Object.freeze(f),Object.freeze(o),Object.freeze({getPublicKey:c,getSharedSecret:l,keygen:d,Point:r,utils:f,lengths:o})}function O3(r,e,t={}){let n=e;o1(n),je(t,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),t=Object.assign({},t);let o=t.randomBytes===void 0?dn:t.randomBytes,i=t.hmac===void 0?(E,x)=>P3(n,E,x):t.hmac,{Fp:s,Fn:a}=r,{ORDER:c,BITS:u}=a,{keygen:l,getPublicKey:f,getSharedSecret:d,utils:h,lengths:g}=Ka(r,t),b={prehash:!0,lowS:typeof t.lowS=="boolean"?t.lowS:!0,format:"compact",extraEntropy:!1},p=c*R3+Mt<s.ORDER;function y(E){let x=c>>Mt;return E>x}function v(E,x){if(!a.isValidNot0(x))throw new Error(`invalid signature ${E}: out of range 1..Point.Fn.ORDER`);return x}function S(){if(p)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function R(E,x){_s(x);let I=g.signature,C=x==="compact"?I:x==="recovered"?I+1:void 0;return H(E,C)}class A{r;s;recovery;constructor(x,I,C){if(this.r=v("r",x),this.s=v("s",I),C!=null){if(S(),![0,1,2,3].includes(C))throw new Error("invalid recovery id");this.recovery=C}Object.freeze(this)}static fromBytes(x,I=b.format){R(x,I);let C;if(I==="der"){let{r:V,s:G}=Ye.toSig(H(x));return new A(V,G)}I==="recovered"&&(C=x[0],I="compact",x=x.subarray(1));let P=g.signature/2,D=x.subarray(0,P),B=x.subarray(P,P*2);return new A(a.fromBytes(D),a.fromBytes(B),C)}static fromHex(x,I){return this.fromBytes(Pr(x),I)}assertRecovery(){let{recovery:x}=this;if(x==null)throw new Error("invalid recovery id: must be present");return x}addRecoveryBit(x){return new A(this.r,this.s,x)}recoverPublicKey(x){let{r:I,s:C}=this,P=this.assertRecovery(),D=P===2||P===3?I+c:I;if(!s.isValid(D))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let B=s.toBytes(D),V=r.fromBytes(le(L3((P&1)===0),B)),G=a.inv(D),q=L(H(x,void 0,"msgHash")),ue=a.create(-q*G),he=a.create(C*G),de=r.BASE.multiplyUnsafe(ue).add(V.multiplyUnsafe(he));if(de.is0())throw new Error("invalid recovery: point at infinify");return de.assertValidity(),de}hasHighS(){return y(this.s)}toBytes(x=b.format){if(_s(x),x==="der")return Pr(Ye.hexFromSig(this));let{r:I,s:C}=this,P=a.toBytes(I),D=a.toBytes(C);return x==="recovered"?(S(),le(Uint8Array.of(this.assertRecovery()),P,D)):le(P,D)}toHex(x){return Ar(this.toBytes(x))}}Object.freeze(A.prototype),Object.freeze(A);let O=t.bits2int===void 0?function(x){if(x.length>8192)throw new Error("input is too large");let I=tr(x),C=x.length*8-u;return C>0?I>>BigInt(C):I}:t.bits2int,L=t.bits2int_modN===void 0?function(x){return a.create(O(x))}:t.bits2int_modN,T=gn(u);function M(E){return Cr("num < 2^"+u,E,st,T),a.toBytes(E)}function W(E,x){return H(E,void 0,"message"),x?H(n(E),void 0,"prehashed message"):E}function U(E,x,I){let{lowS:C,prehash:P,extraEntropy:D}=Ss(I,b);E=W(E,P);let B=L(E),V=a.fromBytes(x);if(!a.isValidNot0(V))throw new Error("invalid private key");let G=[M(V),M(B)];if(D!=null&&D!==!1){let de=D===!0?o(g.secretKey):D;G.push(H(de,void 0,"extraEntropy"))}let q=le(...G),ue=B;function he(de){let se=O(de);if(!a.isValidNot0(se))return;let Te=a.inv(se),wr=r.BASE.multiply(se).toAffine(),Xr=a.create(wr.x);if(Xr===st)return;let Gn=a.create(Te*a.create(ue+Xr*V));if(Gn===st)return;let F2=(wr.x===Xr?0:2)|Number(wr.y&Mt),M2=Gn;return C&&y(Gn)&&(M2=a.neg(Gn),F2^=1),new A(Xr,M2,p?void 0:F2)}return{seed:q,k2sig:he}}function m(E,x,I={}){let{seed:C,k2sig:P}=U(E,x,I);return M0(n.outputLen,a.BYTES,i)(C,P).toBytes(I.format)}function w(E,x,I,C={}){let{lowS:P,prehash:D,format:B}=Ss(C,b);if(I=H(I,void 0,"publicKey"),x=W(x,D),!er(E)){let V=E instanceof A?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+V)}R(E,B);try{let V=A.fromBytes(E,B),G=r.fromBytes(I);if(P&&V.hasHighS())return!1;let{r:q,s:ue}=V,he=L(x),de=a.inv(ue),se=a.create(he*de),Te=a.create(q*de),wr=r.BASE.multiplyUnsafe(se).add(G.multiplyUnsafe(Te));return wr.is0()?!1:a.create(wr.x)===q}catch{return!1}}function _(E,x,I={}){let{prehash:C}=Ss(I,b);return x=W(x,C),A.fromBytes(E,"recovered").recoverPublicKey(x).toBytes()}return Object.freeze({keygen:l,getPublicKey:f,getSharedSecret:d,utils:h,lengths:g,Point:r,sign:m,verify:w,recoverPublicKey:_,Signature:A,hash:n})}var As={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},qa={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var B3=BigInt(2);function za(r){let e=As.p,t=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),a=BigInt(44),c=BigInt(88),u=r*r*r%e,l=u*u*r%e,f=re(l,t,e)*l%e,d=re(f,t,e)*l%e,h=re(d,B3,e)*u%e,g=re(h,o,e)*h%e,b=re(g,i,e)*g%e,p=re(b,a,e)*b%e,y=re(p,c,e)*p%e,v=re(y,a,e)*b%e,S=re(v,t,e)*l%e,R=re(S,s,e)*g%e,A=re(R,n,e)*u%e,O=re(A,B3,e);if(!Ts.eql(Ts.sqr(O),r))throw new Error("Cannot find square root");return O}var Ts=Dr(As.p,{sqrt:za}),Va=D3(As,{Fp:Ts,endo:qa}),Mr=O3(Va,Tr);function N3(r,e,t,n){let o=ft.digest(t instanceof Uint8Array?t:t.subarray());if(E1(o))return o.then(({digest:i})=>(n?.signal?.throwIfAborted(),Mr.verify(e,i,r,{prehash:!1,format:"der"}))).catch(i=>{throw i.name==="AbortError"?i:new en(String(i))});try{return n?.signal?.throwIfAborted(),Mr.verify(e,o.digest,r,{prehash:!1,format:"der"})}catch(i){throw new en(String(i))}}var L1=class{type="secp256k1";raw;_key;constructor(e){this._key=M3(e),this.raw=F3(this._key)}toMultihash(){return ze.digest(Pt(this))}toCID(){return X.createV1(114,this.toMultihash())}toString(){return te.encode(this.toMultihash().bytes).substring(1)}equals(e){return e==null||!(e.raw instanceof Uint8Array)?!1:Q(this.raw,e.raw)}verify(e,t,n){return N3(this._key,t,e,n)}};function Ps(r){return new L1(r)}function F3(r){return Mr.Point.fromBytes(r).toBytes()}function M3(r){try{return Mr.Point.fromBytes(r),r}catch(e){throw new ut(String(e))}}function k1(r,e){let{Type:t,Data:n}=it.decode(r),o=n??new Uint8Array;switch(t){case ne.RSA:return xs(o,e);case ne.Ed25519:return Qi(o);case ne.secp256k1:return Ps(o);case ne.ECDSA:return wi(o);default:throw new Wt}}function U3(r){let{Type:e,Data:t}=it.decode(r.digest),n=t??new Uint8Array;switch(e){case ne.Ed25519:return Qi(n);case ne.secp256k1:return Ps(n);case ne.ECDSA:return wi(n);default:throw new Wt}}function Pt(r){return it.encode({Type:ne[r.type],Data:r.raw})}var Cs={32:16777619n,64:1099511628211n,128:309485009821345068724781371n,256:374144419156711147060143317175368453031918731002211n,512:35835915874844867368919076489095108449946327955754392558399825615420669938882575126094039892345713852759n,1024:5016456510113118655434598811035278955030765345404790744303017523831112055108147451509157692220295382716162651878526895249385292291816524375083746691371804094271873160484737966720260389217684476157468082573n},K3={32:2166136261n,64:14695981039346656037n,128:144066263297769815596495629667062367629n,256:100029257958052580907070968620625704837092796014241193945225284501741471925557n,512:9659303129496669498009435400716310466090418745672637896108374329434462657994582932197716438449813051892206539805784495328239340083876191928701583869517785n,1024:14197795064947621068722070641403218320880622795441933960878474914617582723252296732303717722150864096521202355549365628174669108571814760471015076148029755969804077320157692458563003215304957150157403644460363550505412711285966361610267868082893823963790439336411086884584107735010676915n},q3=new globalThis.TextEncoder;function Ha(r,e){let t=Cs[e],n=K3[e];for(let o=0;o<r.length;o++)n^=BigInt(r[o]),n=BigInt.asUintN(e,n*t);return n}function $a(r,e,t){if(t.length===0)throw new Error("The `utf8Buffer` option must have a length greater than zero");let n=Cs[e],o=K3[e],i=r;for(;i.length>0;){let s=q3.encodeInto(i,t);i=i.slice(s.read);for(let a=0;a<s.written;a++)o^=BigInt(t[a]),o=BigInt.asUintN(e,o*n)}return o}function Rs(r,{size:e=32,utf8Buffer:t}={}){if(!Cs[e])throw new Error("The `size` option must be one of 32, 64, 128, 256, 512, or 1024");if(typeof r=="string"){if(t)return $a(r,e,t);r=q3.encode(r)}return Ha(r,e)}var In={hash:r=>Number(Rs(r,{size:32})),hashV:(r,e)=>ja(In.hash(r,e))};function ja(r){let e=r.toString(16);return e.length%2===1&&(e=`0${e}`),F(e,"base16")}var Ds=64,Ze=class{fp;h;seed;constructor(e,t,n,o=2){if(o>Ds)throw new TypeError("Invalid Fingerprint Size");let i=t.hashV(e,n),s=Ee(o);for(let a=0;a<s.length;a++)s[a]=i[a];s.length===0&&(s[0]=7),this.fp=s,this.h=t,this.seed=n}hash(){return this.h.hash(this.fp,this.seed)}equals(e){return e?.fp instanceof Uint8Array?Q(this.fp,e.fp):!1}};function cr(r,e){return Math.floor(Math.random()*(e-r))+r}var ur=class{contents;constructor(e){this.contents=new Array(e).fill(null)}has(e){if(!(e instanceof Ze))throw new TypeError("Invalid Fingerprint");return this.contents.some(t=>e.equals(t))}add(e){if(!(e instanceof Ze))throw new TypeError("Invalid Fingerprint");for(let t=0;t<this.contents.length;t++)if(this.contents[t]==null)return this.contents[t]=e,!0;return!0}swap(e){if(!(e instanceof Ze))throw new TypeError("Invalid Fingerprint");let t=cr(0,this.contents.length-1),n=this.contents[t];return this.contents[t]=e,n}remove(e){if(!(e instanceof Ze))throw new TypeError("Invalid Fingerprint");let t=this.contents.findIndex(n=>e.equals(n));return t>-1?(this.contents[t]=null,!0):!1}};var Ga=500,Tn=class{bucketSize;filterSize;fingerprintSize;buckets;count;hash;seed;constructor(e){this.filterSize=e.filterSize,this.bucketSize=e.bucketSize??4,this.fingerprintSize=e.fingerprintSize??2,this.count=0,this.buckets=[],this.hash=e.hash??In,this.seed=e.seed??cr(0,Math.pow(2,10))}add(e){typeof e=="string"&&(e=F(e));let t=new Ze(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=(n^t.hash())%this.filterSize;if(this.buckets[n]==null&&(this.buckets[n]=new ur(this.bucketSize)),this.buckets[o]==null&&(this.buckets[o]=new ur(this.bucketSize)),this.buckets[n].add(t)||this.buckets[o].add(t))return this.count++,!0;let i=[n,o],s=i[cr(0,i.length-1)];this.buckets[s]==null&&(this.buckets[s]=new ur(this.bucketSize));for(let a=0;a<Ga;a++){let c=this.buckets[s].swap(t);if(c!=null&&(s=(s^c.hash())%this.filterSize,this.buckets[s]==null&&(this.buckets[s]=new ur(this.bucketSize)),this.buckets[s].add(c)))return this.count++,!0}return!1}has(e){typeof e=="string"&&(e=F(e));let t=new Ze(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.has(t)??!1;if(o)return o;let i=(n^t.hash())%this.filterSize;return this.buckets[i]?.has(t)??!1}remove(e){typeof e=="string"&&(e=F(e));let t=new Ze(e,this.hash,this.seed,this.fingerprintSize),n=this.hash.hash(e,this.seed)%this.filterSize,o=this.buckets[n]?.remove(t)??!1;if(o)return this.count--,o;let i=(n^t.hash())%this.filterSize,s=this.buckets[i]?.remove(t)??!1;return s&&this.count--,s}get reliable(){return Math.floor(100*(this.count/this.filterSize))<=90}},Ya={1:.5,2:.84,4:.95,8:.98};function Za(r=.001){return r>.002?2:r>1e-5?4:8}function z3(r,e=.001){let t=Za(e),n=Ya[t],o=Math.round(r/n),i=Math.min(Math.ceil(Math.log2(1/e)+Math.log2(2*t)),Ds);return{filterSize:o,bucketSize:t,fingerprintSize:i}}var O1=class{filterSize;bucketSize;fingerprintSize;scale;filterSeries;hash;seed;constructor(e){this.bucketSize=e.bucketSize??4,this.filterSize=e.filterSize??(1<<18)/this.bucketSize,this.fingerprintSize=e.fingerprintSize??2,this.scale=e.scale??2,this.hash=e.hash??In,this.seed=e.seed??cr(0,Math.pow(2,10)),this.filterSeries=[new Tn({filterSize:this.filterSize,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed})]}add(e){if(typeof e=="string"&&(e=F(e)),this.has(e))return!0;let t=this.filterSeries.find(n=>n.reliable);if(t==null){let n=this.filterSize*Math.pow(this.scale,this.filterSeries.length);t=new Tn({filterSize:n,bucketSize:this.bucketSize,fingerprintSize:this.fingerprintSize,hash:this.hash,seed:this.seed}),this.filterSeries.push(t)}return t.add(e)}has(e){typeof e=="string"&&(e=F(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].has(e))return!0;return!1}remove(e){typeof e=="string"&&(e=F(e));for(let t=0;t<this.filterSeries.length;t++)if(this.filterSeries[t].remove(e))return!0;return!1}get count(){return this.filterSeries.reduce((e,t)=>e+t.count,0)}};function Ls(r,e=.001,t){return new O1({...z3(r,e),...t??{}})}function V3(r){let e=r.getComponents(),t={},n=0;if(e[n]?.name==="ip6zone"&&(t.zone=`${e[n].value}`,n++),e[n].name==="ip4"||e[n].name==="ip6"||e[n].name==="dns"||e[n].name==="dns4"||e[n].name==="dns6"?(t.type=e[n].name,t.host=e[n].value,n++):e[n].name==="dnsaddr"&&(t.type=e[n].name,t.host=`_dnsaddr.${e[n].value}`,n++),(e[n]?.name==="tcp"||e[n]?.name==="udp")&&(t.protocol=e[n].name==="tcp"?"tcp":"udp",t.port=parseInt(`${e[n].value}`),n++),e[n]?.name==="ipcidr"&&(t.type==="ip4"?t.cidr=parseInt(`${e[n].value}`):t.type==="ip6"&&(t.cidr=`${e[n].value}`),n++),t.type==null||t.host==null)throw new K(`Multiaddr ${r} was not an IPv4, IPv6, DNS, DNS4, DNS6 or DNSADDR address`);return e[n]?.name==="tls"&&e[n+1]?.name==="sni"&&(t.sni=e[n+1].value,n+=2),t}var B1=class{index=0;input="";new(e){return this.index=0,this.input=e,this}readAtomically(e){let t=this.index,n=e();return n===void 0&&(this.index=t),n}parseWith(e){let t=e();if(this.index===this.input.length)return t}peekChar(){if(!(this.index>=this.input.length))return this.input[this.index]}readChar(){if(!(this.index>=this.input.length))return this.input[this.index++]}readGivenChar(e){return this.readAtomically(()=>{let t=this.readChar();if(t===e)return t})}readSeparator(e,t,n){return this.readAtomically(()=>{if(!(t>0&&this.readGivenChar(e)===void 0))return n()})}readNumber(e,t,n,o){return this.readAtomically(()=>{let i=0,s=0,a=this.peekChar();if(a===void 0)return;let c=a==="0",u=2**(8*o)-1;for(;;){let l=this.readAtomically(()=>{let f=this.readChar();if(f===void 0)return;let d=Number.parseInt(f,e);if(!Number.isNaN(d))return d});if(l===void 0)break;if(i*=e,i+=l,i>u||(s+=1,t!==void 0&&s>t))return}if(s!==0)return!n&&c&&s>1?void 0:i})}readIPv4Addr(){return this.readAtomically(()=>{let e=new Uint8Array(4);for(let t=0;t<e.length;t++){let n=this.readSeparator(".",t,()=>this.readNumber(10,3,!1,1));if(n===void 0)return;e[t]=n}return e})}readIPv6Addr(){let e=t=>{for(let n=0;n<t.length/2;n++){let o=n*2;if(n<t.length-3){let s=this.readSeparator(":",n,()=>this.readIPv4Addr());if(s!==void 0)return t[o]=s[0],t[o+1]=s[1],t[o+2]=s[2],t[o+3]=s[3],[o+4,!0]}let i=this.readSeparator(":",n,()=>this.readNumber(16,4,!0,2));if(i===void 0)return[o,!1];t[o]=i>>8,t[o+1]=i&255}return[t.length,!1]};return this.readAtomically(()=>{let t=new Uint8Array(16),[n,o]=e(t);if(n===16)return t;if(o||this.readGivenChar(":")===void 0||this.readGivenChar(":")===void 0)return;let i=new Uint8Array(14),s=16-(n+2),[a]=e(i.subarray(0,s));return t.set(i.subarray(0,a),16-a),t})}readIPAddr(){return this.readIPv4Addr()??this.readIPv6Addr()}};var Qa=45,Wa=15,N1=new B1;function H3(r){if(!(r.length>Wa))return N1.new(r).parseWith(()=>N1.readIPv4Addr())}function $3(r){if(r.includes("%")&&(r=r.split("%")[0]),!(r.length>Qa))return N1.new(r).parseWith(()=>N1.readIPv6Addr())}function Ur(r){return!!H3(r)}function F1(r){return!!$3(r)}var Z3=d5(Y3(),1),o8=["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"],i8=o8.map(r=>new Z3.Netmask(r));function Us(r){for(let e of i8)if(e.contains(r))return!0;return!1}function s8(r){return/^::ffff:([0-9a-fA-F]{1,4}):([0-9a-fA-F]{1,4})$/.test(r)}function a8(r){let e=r.split(":");if(e.length<2)return!1;let t=e[e.length-1].padStart(4,"0"),n=e[e.length-2].padStart(4,"0"),o=`${parseInt(n.substring(0,2),16)}.${parseInt(n.substring(2),16)}.${parseInt(t.substring(0,2),16)}.${parseInt(t.substring(2),16)}`;return Us(o)}function c8(r){return/^::ffff:([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/.test(r)}function u8(r){let e=r.split(":"),t=e[e.length-1];return Us(t)}function l8(r){return/^::$/.test(r)||/^::1$/.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)}function Q3(r){if(Ur(r))return Us(r);if(s8(r))return a8(r);if(c8(r))return u8(r);if(F1(r))return l8(r)}function An(r){try{let e=V3(r);switch(e.type){case"ip4":case"ip6":return Q3(e.host)??!1;default:return e.host==="localhost"}}catch{return!1}}function ce(){let r={};return r.promise=new Promise((e,t)=>{r.resolve=e,r.reject=t}),r}var U1=class{buffer;mask;top;btm;next;constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=this.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}isEmpty(){return this.buffer[this.btm]===void 0}},Vr=class{size;hwm;head;tail;constructor(e={}){this.hwm=e.splitLimit??16,this.head=new U1(this.hwm),this.tail=this.head,this.size=0}calculateSize(e){return e?.byteLength!=null?e.byteLength:1}push(e){if(e?.value!=null&&(this.size+=this.calculateSize(e.value)),!this.head.push(e)){let t=this.head;this.head=t.next=new U1(2*this.head.buffer.length),this.head.push(e)}}shift(){let e=this.tail.shift();if(e===void 0&&this.tail.next!=null){let t=this.tail.next;this.tail.next=null,this.tail=t,e=this.tail.shift()}return e?.value!=null&&(this.size-=this.calculateSize(e.value)),e}isEmpty(){return this.head.isEmpty()}};var Ks=class extends Error{type;code;constructor(e,t){super(e??"The operation was aborted"),this.type="aborted",this.code=t??"ABORT_ERR"}};function wt(r={}){return f8(t=>{let n=t.shift();if(n==null)return{done:!0};if(n.error!=null)throw n.error;return{done:n.done===!0,value:n.value}},r)}function f8(r,e){e=e??{};let t=e.onEnd,n=new Vr,o,i,s,a=ce(),c=async()=>{try{return n.isEmpty()?s?{done:!0}:await new Promise((p,y)=>{i=v=>{i=null,n.push(v);try{p(r(n))}catch(S){y(S)}return o}}):r(n)}finally{n.isEmpty()&&queueMicrotask(()=>{a.resolve(),a=ce()})}},u=p=>i!=null?i(p):(n.push(p),o),l=p=>(n=new Vr,i!=null?i({error:p}):(n.push({error:p}),o)),f=p=>{if(s)return o;if(e?.objectMode!==!0&&p?.byteLength==null)throw new Error("objectMode was not true but tried to push non-Uint8Array value");return u({done:!1,value:p})},d=p=>s?o:(s=!0,p!=null?l(p):u({done:!0})),h=()=>(n=new Vr,d(),{done:!0}),g=p=>(d(p),{done:!0});if(o={[Symbol.asyncIterator](){return this},next:c,return:h,throw:g,push:f,end:d,get readableLength(){return n.size},onEmpty:async p=>{let y=p?.signal;if(y?.throwIfAborted(),n.isEmpty())return;let v,S;y!=null&&(v=new Promise((R,A)=>{S=()=>{A(new Ks)},y.addEventListener("abort",S)}));try{await Promise.race([a.promise,v])}finally{S!=null&&y!=null&&y?.removeEventListener("abort",S)}}},t==null)return o;let b=o;return o={[Symbol.asyncIterator](){return this},next(){return b.next()},throw(p){return b.throw(p),t!=null&&(t(p),t=void 0),{done:!0}},return(){return b.return(),t!=null&&(t(),t=void 0),{done:!0}},push:f,end(p){return b.end(p),t!=null&&(t(p),t=void 0),o},get readableLength(){return b.readableLength},onEmpty:p=>b.onEmpty(p)},o}var qs=class r extends Error{name="TimeoutError";constructor(e,t){super(e,t),Error.captureStackTrace?.(this,r)}},W3=r=>r.reason??new DOMException("This operation was aborted.","AbortError");function zs(r,e){let{milliseconds:t,fallback:n,message:o,customTimers:i={setTimeout,clearTimeout},signal:s}=e,a,c,l=new Promise((f,d)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(s?.aborted){d(W3(s));return}if(s&&(c=()=>{d(W3(s))},s.addEventListener("abort",c,{once:!0})),r.then(f,d),t===Number.POSITIVE_INFINITY)return;let h=new qs;a=i.setTimeout.call(void 0,()=>{if(n){try{f(n())}catch(g){d(g)}return}typeof r.cancel=="function"&&r.cancel(),o===!1?f():o instanceof Error?d(o):(h.message=o??`Promise timed out after ${t} milliseconds`,d(h))},t)}).finally(()=>{l.clear(),c&&s&&s.removeEventListener("abort",c)});return l.clear=()=>{i.clearTimeout.call(void 0,a),a=void 0},l}var h8=r=>{let e=r.addEventListener||r.on||r.addListener,t=r.removeEventListener||r.off||r.removeListener;if(!e||!t)throw new TypeError("Emitter is not compatible");return{addListener:e.bind(r),removeListener:t.bind(r)}};function d8(r,e,t){let n,o=new Promise((i,s)=>{if(t={rejectionEvents:["error"],multiArgs:!1,rejectionMultiArgs:!1,resolveImmediately:!1,...t},!(t.count>=0&&(t.count===Number.POSITIVE_INFINITY||Number.isInteger(t.count))))throw new TypeError("The `count` option should be at least 0 or more");t.signal?.throwIfAborted();let a=[e].flat(),c=[],{addListener:u,removeListener:l}=h8(r),f=async(...h)=>{let g=t.multiArgs?h:h[0];if(t.filter)try{if(!await t.filter(g))return}catch(b){n(),s(b);return}c.push(g),t.count===c.length&&(n(),i(c))},d=(...h)=>{n(),s(t.rejectionMultiArgs?h:h[0])};n=()=>{for(let h of a)l(h,f);for(let h of t.rejectionEvents)a.includes(h)||l(h,d)};for(let h of a)u(h,f);for(let h of t.rejectionEvents)a.includes(h)||u(h,d);t.signal&&t.signal.addEventListener("abort",()=>{d(t.signal.reason)},{once:!0}),t.resolveImmediately&&i(c)});if(o.cancel=n,typeof t.timeout=="number"){let i=zs(o,{milliseconds:t.timeout});return i.cancel=()=>{n(),i.clear()},i}return o}function Kt(r,e,t){typeof t=="function"&&(t={filter:t}),t={...t,count:1,resolveImmediately:!1};let n=d8(r,e,t),o=n.then(i=>i[0]);return o.cancel=n.cancel,o}function Vs(r,e){let t,n=function(){let o=function(){t=void 0,r()};clearTimeout(t),t=setTimeout(o,e)};return n.start=()=>{},n.stop=()=>{clearTimeout(t)},n}var K1=class extends Error{static name="QueueFullError";constructor(e="The queue was full"){super(e),this.name="QueueFullError"}},fr=class extends Error{static name="UnexpectedEOFError";name="UnexpectedEOFError"};function p8(r){return r.reason}async function qt(r,e,t){if(e==null)return r;let n=t?.translateError??p8;if(e.aborted)return r.catch(()=>{}),Promise.reject(n(e));let o;try{return await Promise.race([r,new Promise((i,s)=>{o=()=>{s(n(e))},e.addEventListener("abort",o)})])}finally{o!=null&&e.removeEventListener("abort",o)}}var q1=class{deferred;signal;onProgress;constructor(e){this.signal=e?.signal,this.onProgress=e?.onProgress,this.deferred=ce(),this.onAbort=this.onAbort.bind(this),this.signal?.addEventListener("abort",this.onAbort)}onAbort(){this.deferred.reject(this.signal?.reason??new Ke)}cleanup(){this.signal?.removeEventListener("abort",this.onAbort)}};function m8(){return`${parseInt(String(Math.random()*1e9),10).toString()}${Date.now()}`}var z1=class{id;fn;options;recipients;status;timeline;controller;constructor(e,t){this.id=m8(),this.status="queued",this.fn=e,this.options=t,this.recipients=[],this.timeline={created:Date.now()},this.controller=new AbortController,this.controller.signal,this.onAbort=this.onAbort.bind(this)}abort(e){this.controller.abort(e)}onAbort(){this.recipients.reduce((t,n)=>t&&n.signal?.aborted===!0,!0)&&(this.controller.abort(new Ke),this.cleanup())}async join(e){let t=new q1(e);return this.recipients.push(t),e?.signal?.addEventListener("abort",this.onAbort),t.deferred.promise}async run(){this.status="running",this.timeline.started=Date.now();try{this.controller.signal.throwIfAborted();let e=await qt(this.fn({...this.options??{},signal:this.controller.signal,onProgress:t=>{this.recipients.forEach(n=>{n.onProgress?.(t)})}}),this.controller.signal);this.recipients.forEach(t=>{t.deferred.resolve(e)}),this.status="complete"}catch(e){this.recipients.forEach(t=>{t.deferred.reject(e)}),this.status="errored"}finally{this.timeline.finished=Date.now(),this.cleanup()}}cleanup(){this.recipients.forEach(e=>{e.cleanup(),e.signal?.removeEventListener("abort",this.onAbort)})}};var ct=class extends Ce{concurrency;maxSize;queue;pending;sort;paused;constructor(e={}){super(),this.concurrency=e.concurrency??Number.POSITIVE_INFINITY,this.maxSize=e.maxSize??Number.POSITIVE_INFINITY,this.pending=0,this.paused=!1,e.metricName!=null&&e.metrics?.registerMetricGroup(e.metricName,{calculate:()=>({size:this.queue.length,running:this.pending,queued:this.queue.length-this.pending})}),this.sort=e.sort,this.queue=[],this.emitEmpty=Vs(this.emitEmpty.bind(this),1),this.emitIdle=Vs(this.emitIdle.bind(this),1)}emitEmpty(){this.size===0&&this.safeDispatchEvent("empty")}emitIdle(){this.running===0&&this.safeDispatchEvent("idle")}pause(){this.paused=!0}resume(){this.paused&&(this.paused=!1,this.tryToStartAnother())}tryToStartAnother(){if(this.paused)return!1;if(this.size===0)return this.emitEmpty(),this.running===0&&this.emitIdle(),!1;if(this.pending<this.concurrency){let e;for(let t of this.queue)if(t.status==="queued"){e=t;break}return e==null?!1:(this.safeDispatchEvent("active"),this.pending++,e.run().finally(()=>{for(let t=0;t<this.queue.length;t++)if(this.queue[t]===e){this.queue.splice(t,1);break}this.pending--,this.tryToStartAnother(),this.safeDispatchEvent("next")}),!0)}return!1}enqueue(e){this.queue.push(e),this.sort!=null&&this.queue.sort(this.sort)}async add(e,t){if(t?.signal?.throwIfAborted(),this.size===this.maxSize)throw new K1;let n=new z1(e,t);this.enqueue(n),this.safeDispatchEvent("add");let o=n.join(t).then(i=>(this.safeDispatchEvent("completed",{detail:i}),this.safeDispatchEvent("success",{detail:{job:n,result:i}}),i)).catch(i=>{if(n.status==="queued"){for(let s=0;s<this.queue.length;s++)if(this.queue[s]===n){this.queue.splice(s,1);break}}throw this.safeDispatchEvent("failure",{detail:{job:n,error:i}}),i});return this.tryToStartAnother(),o}clear(){this.queue.splice(0,this.queue.length)}abort(){this.queue.forEach(e=>{e.abort(new Ke)}),this.clear()}async onEmpty(e){this.size!==0&&await Kt(this,"empty",e)}async onSizeLessThan(e,t){this.size<e||await Kt(this,"next",{...t,filter:()=>this.size<e})}async onIdle(e){this.pending===0&&this.size===0||await Kt(this,"idle",e)}get size(){return this.queue.length}get queued(){return this.queue.length-this.pending}get running(){return this.pending}async*toGenerator(e){e?.signal?.throwIfAborted();let t=wt({objectMode:!0}),n=c=>{c!=null?this.abort():this.clear(),t.end(c)},o=c=>{c.detail!=null&&t.push(c.detail)},i=c=>{n(c.detail.error)},s=()=>{n()},a=()=>{n(new Ke("Queue aborted"))};this.addEventListener("completed",o),this.addEventListener("failure",i),this.addEventListener("idle",s),e?.signal?.addEventListener("abort",a);try{yield*t}finally{this.removeEventListener("completed",o),this.removeEventListener("failure",i),this.removeEventListener("idle",s),e?.signal?.removeEventListener("abort",a),n()}}};function Ue(r){let e=new globalThis.AbortController;function t(){let i=r.filter(s=>s?.aborted===!0).map(s=>s?.reason).pop();e.abort(i);for(let s of r)s?.removeEventListener!=null&&s.removeEventListener("abort",t)}for(let i of r){if(i?.aborted===!0){t();break}i?.addEventListener!=null&&i.addEventListener("abort",t)}function n(){for(let i of r)i?.removeEventListener!=null&&i.removeEventListener("abort",t)}let o=e.signal;return o.clear=n,o}var Hr=class{movingAverage;variance;deviation;forecast;timeSpan;previousTime;constructor(e){this.timeSpan=e,this.movingAverage=0,this.variance=0,this.deviation=0,this.forecast=0}alpha(e,t){return 1-Math.exp(-(e-t)/this.timeSpan)}push(e,t=Date.now()){if(this.previousTime!=null){let n=this.alpha(t,this.previousTime),o=e-this.movingAverage,i=n*o;this.movingAverage=n*e+(1-n)*this.movingAverage,this.variance=(1-n)*(this.variance+o*i),this.deviation=Math.sqrt(this.variance),this.forecast=this.movingAverage+n*o}else this.movingAverage=e;this.previousTime=t}};var g8=1.2,y8=2,b8=5e3,w8=6e4,x8=5e3,xt=class{success;failure;next;metric;timeoutMultiplier;failureMultiplier;minTimeout;maxTimeout;constructor(e={}){let t=e.interval??x8;this.success=new Hr(t),this.failure=new Hr(t),this.next=new Hr(t),this.failureMultiplier=e.failureMultiplier??y8,this.timeoutMultiplier=e.timeoutMultiplier??g8,this.minTimeout=e.minTimeout??b8,this.maxTimeout=e.maxTimeout??w8,e.metricName!=null&&(this.metric=e.metrics?.registerMetricGroup(e.metricName))}getTimeoutSignal(e={}){let t=Math.round(this.next.movingAverage*(e.timeoutFactor??this.timeoutMultiplier));t<this.minTimeout&&(t=this.minTimeout),t>this.maxTimeout&&(t=this.maxTimeout);let n=AbortSignal.timeout(t),o=Ue([e.signal,n]);return o.start=Date.now(),o.timeout=t,o}cleanUp(e){e.clear();let t=Date.now()-e.start;e.aborted?(this.failure.push(t),this.next.push(t*this.failureMultiplier),this.metric?.update({failureMovingAverage:this.failure.movingAverage,failureDeviation:this.failure.deviation,failureForecast:this.failure.forecast,failureVariance:this.failure.variance,failure:t})):(this.success.push(t),this.next.push(t),this.metric?.update({successMovingAverage:this.success.movingAverage,successDeviation:this.success.deviation,successForecast:this.success.forecast,successVariance:this.success.variance,success:t}))}};var xe=class extends Error{static name="InvalidMultiaddrError";name="InvalidMultiaddrError"},Et=class extends Error{static name="ValidationError";name="ValidationError"},V1=class extends Error{static name="InvalidParametersError";name="InvalidParametersError"},H1=class extends Error{static name="UnknownProtocolError";name="UnknownProtocolError"};function $s(r){return e=>N(e,r)}function js(r){return e=>F(e,r)}function $r(r){return new DataView(r.buffer).getUint16(r.byteOffset).toString()}function hr(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,typeof r=="string"?parseInt(r):r),new Uint8Array(e)}function X3(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==16)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion address.`);let t=F(e[0],"base32"),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=hr(n);return Me([t,o],t.length+o.length)}function J3(r){let e=r.split(":");if(e.length!==2)throw new Error(`failed to parse onion addr: ["'${e.join('", "')}'"]' does not contain a port number`);if(e[0].length!==56)throw new Error(`failed to parse onion addr: ${e[0]} not a Tor onion3 address.`);let t=Tt.decode(`b${e[0]}`),n=parseInt(e[1],10);if(n<1||n>65536)throw new Error("Port number is not in range(1, 65536)");let o=hr(n);return Me([t,o],t.length+o.length)}function Gs(r){let e=r.subarray(0,r.length-2),t=r.subarray(r.length-2),n=N(e,"base32"),o=$r(t);return`${n}:${o}`}var Ys=function(r){r=r.toString().trim();let e=new Uint8Array(4);return r.split(/\./g).forEach((t,n)=>{let o=parseInt(t,10);if(isNaN(o)||o<0||o>255)throw new xe("Invalid byte value in IP address");e[n]=o}),e},e4=function(r){let e=0;r=r.toString().trim();let t=r.split(":",8),n;for(n=0;n<t.length;n++){let i=Ur(t[n]),s;i&&(s=Ys(t[n]),t[n]=N(s.subarray(0,2),"base16")),s!=null&&++n<8&&t.splice(n,0,N(s.subarray(2,4),"base16"))}if(t[0]==="")for(;t.length<8;)t.unshift("0");else if(t[t.length-1]==="")for(;t.length<8;)t.push("0");else if(t.length<8){for(n=0;n<t.length&&t[n]!=="";n++);let i=[n,1];for(n=9-t.length;n>0;n--)i.push("0");t.splice.apply(t,i)}let o=new Uint8Array(e+16);for(n=0;n<t.length;n++){t[n]===""&&(t[n]="0");let i=parseInt(t[n],16);if(isNaN(i)||i<0||i>65535)throw new xe("Invalid byte value in IP address");o[e++]=i>>8&255,o[e++]=i&255}return o},t4=function(r){if(r.byteLength!==4)throw new xe("IPv4 address was incorrect length");let e=[];for(let t=0;t<r.byteLength;t++)e.push(r[t]);return e.join(".")},r4=function(r){if(r.byteLength!==16)throw new xe("IPv6 address was incorrect length");let e=[];for(let n=0;n<r.byteLength;n+=2){let o=r[n],i=r[n+1],s=`${o.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}`;e.push(s)}let t=e.join(":");try{let n=new URL(`http://[${t}]`);return n.hostname.substring(1,n.hostname.length-1)}catch{throw new xe(`Invalid IPv6 address "${t}"`)}};function n4(r){try{let e=new URL(`http://[${r}]`);return e.hostname.substring(1,e.hostname.length-1)}catch{throw new xe(`Invalid IPv6 address "${r}"`)}}var Hs=Object.values(sn).map(r=>r.decoder),E8=(function(){let r=Hs[0].or(Hs[1]);return Hs.slice(2).forEach(e=>r=r.or(e)),r})();function o4(r){return E8.decode(r)}function i4(r){return e=>r.encoder.encode(e)}function v8(r){if(parseInt(r).toString()!==r)throw new Et("Value must be an integer")}function S8(r){if(r<0)throw new Et("Value must be a positive integer, or zero")}function _8(r){return e=>{if(e>r)throw new Et(`Value must be smaller than or equal to ${r}`)}}function I8(...r){return e=>{for(let t of r)t(e)}}var Pn=I8(v8,S8,_8(65535));var ye=-1,Zs=class{protocolsByCode=new Map;protocolsByName=new Map;getProtocol(e){let t;if(typeof e=="string"?t=this.protocolsByName.get(e):t=this.protocolsByCode.get(e),t==null)throw new H1(`Protocol ${e} was unknown`);return t}addProtocol(e){this.protocolsByCode.set(e.code,e),this.protocolsByName.set(e.name,e),e.aliases?.forEach(t=>{this.protocolsByName.set(t,e)})}removeProtocol(e){let t=this.protocolsByCode.get(e);t!=null&&(this.protocolsByCode.delete(t.code),this.protocolsByName.delete(t.name),t.aliases?.forEach(n=>{this.protocolsByName.delete(n)}))}},St=new Zs,U8=[{code:4,name:"ip4",size:32,valueToBytes:Ys,bytesToValue:t4,validate:r=>{if(!Ur(r))throw new Et(`Invalid IPv4 address "${r}"`)}},{code:6,name:"tcp",size:16,valueToBytes:hr,bytesToValue:$r,validate:Pn},{code:273,name:"udp",size:16,valueToBytes:hr,bytesToValue:$r,validate:Pn},{code:33,name:"dccp",size:16,valueToBytes:hr,bytesToValue:$r,validate:Pn},{code:41,name:"ip6",size:128,valueToBytes:e4,bytesToValue:r4,stringToValue:n4,validate:r=>{if(!F1(r))throw new Et(`Invalid IPv6 address "${r}"`)}},{code:42,name:"ip6zone",size:ye},{code:43,name:"ipcidr",size:8,bytesToValue:$s("base10"),valueToBytes:js("base10")},{code:53,name:"dns",size:ye},{code:54,name:"dns4",size:ye},{code:55,name:"dns6",size:ye},{code:56,name:"dnsaddr",size:ye},{code:132,name:"sctp",size:16,valueToBytes:hr,bytesToValue:$r,validate:Pn},{code:301,name:"udt"},{code:302,name:"utp"},{code:400,name:"unix",size:ye,stringToValue:r=>decodeURIComponent(r),valueToString:r=>encodeURIComponent(r)},{code:421,name:"p2p",aliases:["ipfs"],size:ye,bytesToValue:$s("base58btc"),valueToBytes:r=>r.startsWith("Q")||r.startsWith("1")?js("base58btc")(r):X.parse(r).multihash.bytes},{code:444,name:"onion",size:96,bytesToValue:Gs,valueToBytes:X3},{code:445,name:"onion3",size:296,bytesToValue:Gs,valueToBytes:J3},{code:446,name:"garlic64",size:ye},{code:447,name:"garlic32",size:ye},{code:448,name:"tls"},{code:449,name:"sni",size:ye},{code:454,name:"noise"},{code:460,name:"quic"},{code:461,name:"quic-v1"},{code:465,name:"webtransport"},{code:466,name:"certhash",size:ye,bytesToValue:i4(si),valueToBytes:o4},{code:480,name:"http"},{code:481,name:"http-path",size:ye,stringToValue:r=>`/${decodeURIComponent(r)}`,valueToString:r=>encodeURIComponent(r.substring(1))},{code:443,name:"https"},{code:477,name:"ws"},{code:478,name:"wss"},{code:479,name:"p2p-websocket-star"},{code:277,name:"p2p-stardust"},{code:275,name:"p2p-webrtc-star"},{code:276,name:"p2p-webrtc-direct"},{code:280,name:"webrtc-direct"},{code:281,name:"webrtc"},{code:290,name:"p2p-circuit"},{code:777,name:"memory",size:ye}];U8.forEach(r=>{St.addProtocol(r)});function s4(r){let e=[],t=0;for(;t<r.length;){let n=ir(r,t),o=St.getProtocol(n),i=De(n),s=K8(o,r,t+i),a=0;s>0&&o.size===ye&&(a=De(s));let c=i+a+s,u={code:n,name:o.name,bytes:r.subarray(t,t+c)};if(s>0){let l=t+i+a,f=r.subarray(l,l+s);u.value=o.bytesToValue?.(f)??N(f)}e.push(u),t+=c}return e}function a4(r){let e=0,t=[];for(let n of r){if(n.bytes==null){let o=St.getProtocol(n.code),i=De(n.code),s,a=0,c=0;n.value!=null&&(s=o.valueToBytes?.(n.value)??F(n.value),a=s.byteLength,o.size===ye&&(c=De(a)));let u=new Uint8Array(i+c+a),l=0;Br(n.code,u,l),l+=i,s!=null&&(o.size===ye&&(Br(a,u,l),l+=c),u.set(s,l)),n.bytes=u}t.push(n.bytes),e+=n.bytes.byteLength}return Me(t,e)}function c4(r){if(r.charAt(0)!=="/")throw new xe('String multiaddr must start with "/"');let e=[],t="protocol",n="",o="";for(let i=1;i<r.length;i++){let s=r.charAt(i);s!=="/"&&(t==="protocol"?o+=r.charAt(i):n+=r.charAt(i));let a=i===r.length-1;if(s==="/"||a){let c=St.getProtocol(o);if(t==="protocol"){if(c.size==null||c.size===0){e.push({code:c.code,name:c.name}),n="",o="",t="protocol";continue}else if(a)throw new xe(`Component ${o} was missing value`);t="value"}else if(t==="value"){let u={code:c.code,name:c.name};if(c.size!=null&&c.size!==0){if(n==="")throw new xe(`Component ${o} was missing value`);u.value=c.stringToValue?.(n)??n}e.push(u),n="",o="",t="protocol"}}}if(o!==""&&n!=="")throw new xe("Incomplete multiaddr");return e}function u4(r){return`/${r.flatMap(e=>{if(e.value==null)return e.name;let t=St.getProtocol(e.code);if(t==null)throw new xe(`Unknown protocol code ${e.code}`);return[e.name,t.valueToString?.(e.value)??e.value]}).join("/")}`}function K8(r,e,t){return r.size==null||r.size===0?0:r.size>0?r.size/8:ir(e,t)}var q8=Symbol.for("nodejs.util.inspect.custom"),h2=Symbol.for("@multiformats/multiaddr");function z8(r){if(r==null&&(r="/"),l4(r))return r.getComponents();if(r instanceof Uint8Array)return s4(r);if(typeof r=="string")return r=r.replace(/\/(\/)+/,"/").replace(/(\/)+$/,""),r===""&&(r="/"),c4(r);if(Array.isArray(r))return r;throw new xe("Must be a string, Uint8Array, Component[], or another Multiaddr")}var Q1=class r{[h2]=!0;#e;#t;#r;constructor(e="/",t={}){this.#e=z8(e),t.validate!==!1&&V8(this)}get bytes(){return this.#r==null&&(this.#r=a4(this.#e)),this.#r}toString(){return this.#t==null&&(this.#t=u4(this.#e)),this.#t}toJSON(){return this.toString()}getComponents(){return[...this.#e.map(e=>({...e}))]}encapsulate(e){let t=new r(e);return new r([...this.#e,...t.getComponents()],{validate:!1})}decapsulate(e){let t=e.toString(),n=this.toString(),o=n.lastIndexOf(t);if(o<0)throw new V1(`Address ${this.toString()} does not contain subaddress: ${t}`);return new r(n.slice(0,o),{validate:!1})}decapsulateCode(e){let t;for(let n=this.#e.length-1;n>-1;n--)if(this.#e[n].code===e){t=n;break}return new r(this.#e.slice(0,t),{validate:!1})}equals(e){return Q(this.bytes,e.bytes)}[q8](){return`Multiaddr(${this.toString()})`}};function V8(r){r.getComponents().forEach(e=>{let t=St.getProtocol(e.code);e.value!=null&&t.validate?.(e.value)})}function l4(r){return!!r?.[h2]}function W1(r){return new Q1(r)}var d2=class{readNext;haveNext;ended;nextResult;error;constructor(){this.ended=!1,this.readNext=ce(),this.haveNext=ce()}[Symbol.asyncIterator](){return this}async next(){if(this.nextResult==null&&await this.haveNext.promise,this.nextResult==null)throw new Error("HaveNext promise resolved but nextResult was undefined");let e=this.nextResult;return this.nextResult=void 0,this.readNext.resolve(),this.readNext=ce(),e}async throw(e){return this.ended=!0,this.error=e,e!=null&&(this.haveNext.promise.catch(()=>{}),this.haveNext.reject(e)),{done:!0,value:void 0}}async return(){let e={done:!0,value:void 0};return this.ended=!0,this.nextResult=e,this.haveNext.resolve(),e}async push(e,t){await this._push(e,t)}async end(e,t){e!=null?await this.throw(e):await this._push(void 0,t)}async _push(e,t){if(e!=null&&this.ended)throw this.error??new Error("Cannot push value onto an ended pushable");for(;this.nextResult!=null;)await this.readNext.promise;e!=null?this.nextResult={done:!1,value:e}:(this.ended=!0,this.nextResult={done:!0,value:void 0}),this.haveNext.resolve(),this.haveNext=ce(),await qt(this.readNext.promise,t?.signal,t)}};function f4(){return new d2}function H8(r){return r[Symbol.asyncIterator]!=null}async function $8(r,e,t){try{await Promise.all(r.map(async n=>{for await(let o of n)await e.push(o,{signal:t}),t.throwIfAborted()})),await e.end(void 0,{signal:t})}catch(n){await e.end(n,{signal:t}).catch(()=>{})}}async function*j8(r){let e=new AbortController,t=f4();$8(r,t,e.signal).catch(()=>{});try{yield*t}finally{e.abort()}}function*G8(r){for(let e of r)yield*e}function Y8(...r){let e=[];for(let t of r)H8(t)||e.push(t);return e.length===r.length?G8(e):j8(r)}var X1=Y8;function Cn(r,...e){if(r==null)throw new Error("Empty pipeline");if(p2(r)){let n=r;r=()=>n.source}else if(d4(r)||h4(r)){let n=r;r=()=>n}let t=[r,...e];if(t.length>1&&p2(t[t.length-1])&&(t[t.length-1]=t[t.length-1].sink),t.length>2)for(let n=1;n<t.length-1;n++)p2(t[n])&&(t[n]=Q8(t[n]));return Z8(...t)}var Z8=(...r)=>{let e;for(;r.length>0;)e=r.shift()(e);return e},h4=r=>r?.[Symbol.asyncIterator]!=null,d4=r=>r?.[Symbol.iterator]!=null,p2=r=>r==null?!1:r.sink!=null&&r.source!=null,Q8=r=>e=>{let t=r.sink(e);if(t?.then!=null){let n=wt({objectMode:!0});t.then(()=>{n.end()},s=>{n.end(s)});let o,i=r.source;if(h4(i))o=async function*(){yield*i,n.end()};else if(d4(i))o=function*(){yield*i,n.end()};else throw new Error("Unknown duplex source type - must be Iterable or AsyncIterable");return X1(n,o())}return r.source};var W8=4194304,J1=class extends Error{static name="UnwrappedError";name="UnwrappedError"},g2=class extends Error{name="InvalidMessageLengthError";code="ERR_INVALID_MSG_LENGTH"},y2=class extends Error{name="InvalidDataLengthError";code="ERR_MSG_DATA_TOO_LONG"},b2=class extends Error{name="InvalidDataLengthLengthError";code="ERR_MSG_LENGTH_TOO_LONG"};function X8(r){return typeof r?.closeRead=="function"}function J8(r){return typeof r?.close=="function"}function m2(r){return X8(r)?r.remoteWriteStatus!=="writable"&&r.readBufferLength===0:J8(r)?r.status!=="open":!1}function e7(r){return r?.addEventListener!=null&&r?.removeEventListener!=null&&r?.send!=null&&r?.push!=null&&r?.log!=null}function t7(r,e){let t=e?.maxBufferSize??W8,n=new me,o,i=!1;if(!e7(r))throw new K("Argument should be a Stream or a Multiaddr");let s=l=>{if(n.append(l.data),n.byteLength>t){let f=n.byteLength;n.consume(n.byteLength),o?.reject(new Error(`Read buffer overflow - ${f} > ${t}`))}o?.resolve()};r.addEventListener("message",s);let a=l=>{l.error!=null?o?.reject(l.error):o?.resolve()};r.addEventListener("close",a);let c=()=>{o?.resolve()};r.addEventListener("remoteCloseWrite",c);let u={readBuffer:n,async read(l){if(i===!0)throw new J1("Stream was unwrapped");if(m2(r)){if(n.byteLength===0&&l?.bytes==null)return null;if(l?.bytes!=null&&n.byteLength<l.bytes)throw r.log.error("closed after reading %d/%d bytes",n.byteLength,l.bytes),new fr(`Unexpected EOF - stream closed after reading ${n.byteLength}/${l.bytes} bytes`)}let f=l?.bytes??1;for(o=Promise.withResolvers();;){if(n.byteLength>=f){o.resolve();break}if(await qt(o.promise,l?.signal),m2(r)){if(n.byteLength===0&&l?.bytes==null)return null;break}o=Promise.withResolvers()}let d=l?.bytes??n.byteLength;if(n.byteLength<d){if(m2(r))throw r.log.error("closed while reading %d/%d bytes",n.byteLength,d),new fr(`Unexpected EOF - stream closed while reading ${n.byteLength}/${d} bytes`);return u.read(l)}let h=n.sublist(0,d);return n.consume(d),h},async write(l,f){if(i===!0)throw new J1("Stream was unwrapped");r.send(l)||await Kt(r,"drain",{signal:f?.signal,rejectionEvents:["close"]})},unwrap(){return i||(i=!0,r.removeEventListener("message",s),r.removeEventListener("close",a),r.removeEventListener("remoteCloseWrite",c),n.byteLength>0&&(r.log("stream unwrapped with %d unread bytes",n.byteLength),r.push(n))),r}};return u}function r7(r,e={}){let t=t7(r,e);e.maxDataLength!=null&&e.maxLengthLength==null&&(e.maxLengthLength=De(e.maxDataLength));let n=e?.lengthDecoder??ir,o=e?.lengthEncoder??S1;return{async read(s){let a=-1,c=new me;for(;;){let l=await t.read({...s,bytes:1});if(l==null)break;c.append(l);try{a=n(c)}catch(f){if(f instanceof RangeError)continue;throw f}if(a<0)throw new g2("Invalid message length");if(e?.maxLengthLength!=null&&c.byteLength>e.maxLengthLength)throw new b2(`Message length length too long - ${c.byteLength} > ${e.maxLengthLength}`);if(a>-1)break}if(e?.maxDataLength!=null&&a>e.maxDataLength)throw new y2(`Message length too long - ${a} > ${e.maxDataLength}`);let u=await t.read({...s,bytes:a});if(u==null)throw r.log.error("tried to read %d bytes but the stream closed",a),new fr(`Unexpected EOF - tried to read ${a} bytes but the stream closed`);if(u.byteLength!==a)throw r.log.error("read %d/%d bytes before the stream closed",u.byteLength,a),new fr(`Unexpected EOF - read ${u.byteLength}/${a} bytes before the stream closed`);return u},async write(s,a){await t.write(new me(o(s.byteLength),s),a)},async writeV(s,a){let c=new me(...s.flatMap(u=>[o(u.byteLength),u]));await t.write(c,a)},unwrap(){return t.unwrap()}}}function Rn(r,e){let t=r7(r,e),n={read:async(o,i)=>{let s=await t.read(i);return o.decode(s)},write:async(o,i,s)=>{await t.write(i.encode(o),s)},writeV:async(o,i,s)=>{await t.writeV(o.map(a=>i.encode(a)),s)},pb:o=>({read:async i=>n.read(o,i),write:async(i,s)=>n.write(i,o,s),writeV:async(i,s)=>n.writeV(i,o,s),unwrap:()=>n}),unwrap:()=>t.unwrap()};return n}var Dn=class extends ct{has(e){return this.find(e)!=null}find(e){return this.queue.find(t=>e.equals(t.options.peerId))}};var J=r=>({match:e=>{let t=e[0];return t==null||t.code!==r||t.value!=null?!1:e.slice(1)}}),k=(r,e)=>({match:t=>{let n=t[0];return n?.code!==r||n.value==null||e!=null&&n.value!==e?!1:t.slice(1)}}),p4=r=>({match:e=>r.match(e)===!1?e:!1}),z=r=>({match:e=>{let t=r.match(e);return t===!1?e:t}}),Ie=(...r)=>({match:e=>{let t;for(let n of r){let o=n.match(e);o!==!1&&(t==null||o.length<t.length)&&(t=o)}return t??!1}}),j=(...r)=>({match:e=>{for(let t of r){let n=t.match(e);if(n===!1)return!1;e=n}return e}});function ee(...r){function e(o){if(o==null)return!1;let i=o.getComponents();for(let s of r){let a=s.match(i);if(a===!1)return!1;i=a}return i}function t(o){return e(o)!==!1}function n(o){let i=e(o);return i===!1?!1:i.length===0}return{matchers:r,matches:t,exactMatch:n}}var n7=k(421),Rp=ee(n7),to=k(54),ro=k(55),no=k(56),x2=k(53),Dp=ee(to,z(k(421))),Lp=ee(ro,z(k(421))),kp=ee(no,z(k(421))),Op=ee(Ie(x2,no,to,ro),z(k(421))),m4=j(k(4),z(k(43))),g4=j(z(k(42)),k(41),z(k(43))),E2=Ie(m4,g4),Zr=Ie(E2,x2,to,ro,no),Bp=ee(Ie(E2,j(Ie(x2,no,to,ro),z(k(421))))),Np=ee(m4),Fp=ee(g4),Mp=ee(E2),v2=j(Zr,k(6)),Ln=j(Zr,k(273)),Up=ee(j(v2,z(k(421)))),Kp=ee(Ln),S2=j(Ln,J(460),z(k(421))),oo=j(Ln,J(461),z(k(421))),o7=Ie(S2,oo),qp=ee(S2),zp=ee(oo),w2=Ie(Zr,v2,Ln,S2,oo),y4=Ie(j(w2,J(477),z(k(421)))),Vp=ee(y4),b4=Ie(j(w2,J(478),z(k(421))),j(w2,J(448),z(k(449)),J(477),z(k(421)))),Hp=ee(b4),w4=j(Ln,J(280),z(k(466)),z(k(466)),z(k(421))),$p=ee(w4),x4=j(oo,J(465),z(k(466)),z(k(466)),z(k(421))),jp=ee(x4),eo=Ie(y4,b4,j(v2,z(k(421))),j(o7,z(k(421))),j(Zr,z(k(421))),w4,x4,k(421)),Gp=ee(eo),i7=j(z(eo),J(290),p4(J(281)),z(k(421))),E4=ee(i7),s7=Ie(j(eo,J(290),J(281),z(k(421))),j(eo,J(281),z(k(421))),j(J(281),z(k(421)))),Yp=ee(s7),a7=j(Zr,Ie(j(k(6,"80")),j(k(6),J(480)),J(480)),z(k(481)),z(k(421))),Zp=ee(a7),c7=j(Zr,Ie(j(k(6,"443")),j(k(6,"443"),J(480)),j(k(6),J(443)),j(k(6),J(448),J(480)),j(J(448),J(480)),J(448),J(443)),z(k(481)),z(k(421))),Qp=ee(c7),u7=Ie(j(k(777),z(k(421)))),Wp=ee(u7),l7=Ie(j(k(400),z(k(421)))),Xp=ee(l7);function f7(r){return r[Symbol.asyncIterator]!=null}function h7(r){if(f7(r))return(async()=>{for await(let e of r);})();for(let e of r);}var kn=h7;var pr=1e3,_2=60*pr,io=60*_2,v4="/ipfs/kad/1.0.0",so=48*io;var S4=24*io,_4=10,I4=16384,T4=io,I2=io,rm=10*pr,A4=10*pr;var ao=20,zt=10,P4=5*_2,C4=pr,R4=5*pr,D4=5*_2,L4=30*pr,k4=180*pr,T2=`${V2}-kad-dht`;var On;(function(r){let e;r.codec=()=>(e==null&&(e=ot((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.key!=null&&i.key.byteLength>0&&(s.uint32(10),s.bytes(i.key)),i.value!=null&&i.value.byteLength>0&&(s.uint32(18),s.bytes(i.value)),i.timeReceived!=null&&i.timeReceived!==""&&(s.uint32(42),s.string(i.timeReceived)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={key:Ee(0),value:Ee(0),timeReceived:""},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{c.key=i.bytes();break}case 2:{c.value=i.bytes();break}case 5:{c.timeReceived=i.string();break}default:{i.skipType(l&7);break}}}return c},function*(i,s,a,c={}){let u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{yield{field:`${a}.key`,value:i.bytes()};break}case 2:{yield{field:`${a}.value`,value:i.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:i.string()};break}default:{i.skipType(l&7);break}}}})),e);function t(i){return rt(i,r.codec())}r.encode=t;function n(i,s){return tt(i,r.codec(),s)}r.decode=n;function o(i,s){return nt(i,r.codec(),s)}r.stream=o})(On||(On={}));function O4(r){let e=r.getUTCFullYear(),t=String(r.getUTCMonth()+1).padStart(2,"0"),n=String(r.getUTCDate()).padStart(2,"0"),o=String(r.getUTCHours()).padStart(2,"0"),i=String(r.getUTCMinutes()).padStart(2,"0"),s=String(r.getUTCSeconds()).padStart(2,"0"),a=r.getUTCMilliseconds(),c=String(a*1e3*1e3).padStart(9,"0");return`${e}-${t}-${n}T${o}:${i}:${s}.${c}Z`}function B4(r){let e=new RegExp("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)Z"),t=String(r).trim().match(e);if(t==null)throw new Error("Invalid format");let n=parseInt(t[1],10),o=parseInt(t[2],10)-1,i=parseInt(t[3],10),s=parseInt(t[4],10),a=parseInt(t[5],10),c=parseInt(t[6],10),u=parseInt(t[7].slice(0,-6),10);return new Date(Date.UTC(n,o,i,s,a,c,u))}var fe=class r{key;value;timeReceived;constructor(e,t,n){if(!(e instanceof Uint8Array))throw new Error("key must be a Uint8Array");if(!(t instanceof Uint8Array))throw new Error("value must be a Uint8Array");this.key=e,this.value=t,this.timeReceived=n}serialize(){return On.encode(this.prepareSerialize())}prepareSerialize(){return{key:this.key,value:this.value,timeReceived:O4(this.timeReceived)}}static deserialize(e){let t=On.decode(e);return new r(t.key,t.value,new Date(t.timeReceived))}static fromDeserialized(e){let t=B4(e.timeReceived);if(e.key==null)throw new Error("key missing from deserialized object");if(e.value==null)throw new Error("value missing from deserialized object");return new r(e.key,e.value,t)}};function p7(r){let[e,t]=r[Symbol.asyncIterator]!=null?[r[Symbol.asyncIterator](),Symbol.asyncIterator]:[r[Symbol.iterator](),Symbol.iterator],n=[];return{peek:()=>e.next(),push:o=>{n.push(o)},next:()=>n.length>0?{done:!1,value:n.shift()}:e.next(),[t](){return this}}}var N4=p7;function m7(r){return r[Symbol.asyncIterator]!=null}function g7(r,e){let t=0;if(m7(r))return(async function*(){for await(let c of r)yield e(c,t++)})();let n=N4(r),{value:o,done:i}=n.next();if(i===!0)return(function*(){})();let s=e(o,t++);if(typeof s.then=="function")return(async function*(){yield await s;for(let c of n)yield e(c,t++)})();let a=e;return(function*(){yield s;for(let c of n)yield a(c,t++)})()}var Qr=g7;var co=globalThis.CustomEvent??Event;async function*Bn(r,e={}){let t=e.concurrency??1/0;t<1&&(t=1/0);let n=e.ordered??!1,o=new EventTarget,i=[],s=ce(),a=ce(),c=!1,u,l=!1;o.addEventListener("task-complete",()=>{a.resolve()}),Promise.resolve().then(async()=>{try{for await(let g of r){if(i.length===t&&(s=ce(),await s.promise),l)break;let b={done:!1};i.push(b),g().then(p=>{b.done=!0,b.ok=!0,b.value=p,o.dispatchEvent(new co("task-complete"))},p=>{b.done=!0,b.err=p,o.dispatchEvent(new co("task-complete"))})}c=!0,o.dispatchEvent(new co("task-complete"))}catch(g){u=g,o.dispatchEvent(new co("task-complete"))}});function f(){return n?i[0]?.done:!!i.find(g=>g.done)}function*d(){for(;i.length>0&&i[0].done;){let g=i[0];if(i.shift(),g.ok)yield g.value;else throw l=!0,s.resolve(),g.err;s.resolve()}}function*h(){for(;f();)for(let g=0;g<i.length;g++)if(i[g].done){let b=i[g];if(i.splice(g,1),g--,b.ok)yield b.value;else throw l=!0,s.resolve(),b.err;s.resolve()}}for(;;){if(f()||(a=ce(),await a.promise),u!=null||(n?yield*d():yield*h(),u!=null))throw u;if(c&&i.length===0)break}}var Vt=class extends Error{constructor(e="Query error"){super(e),this.name="QueryError"}},uo=class extends Error{constructor(e="Invalid record"){super(e),this.name="InvalidRecordError"}},lo=class extends Error{constructor(e="No selector function configured for prefix"){super(e),this.name="MissingSelectorError"}};var F4;(function(r){let e;r.codec=()=>(e==null&&(e=ot((i,s,a={})=>{a.lengthDelimited!==!1&&s.fork(),i.key!=null&&(s.uint32(10),s.bytes(i.key)),i.value!=null&&(s.uint32(18),s.bytes(i.value)),i.author!=null&&(s.uint32(26),s.bytes(i.author)),i.signature!=null&&(s.uint32(34),s.bytes(i.signature)),i.timeReceived!=null&&(s.uint32(42),s.string(i.timeReceived)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{c.key=i.bytes();break}case 2:{c.value=i.bytes();break}case 3:{c.author=i.bytes();break}case 4:{c.signature=i.bytes();break}case 5:{c.timeReceived=i.string();break}default:{i.skipType(l&7);break}}}return c},function*(i,s,a,c={}){let u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{yield{field:`${a}.key`,value:i.bytes()};break}case 2:{yield{field:`${a}.value`,value:i.bytes()};break}case 3:{yield{field:`${a}.author`,value:i.bytes()};break}case 4:{yield{field:`${a}.signature`,value:i.bytes()};break}case 5:{yield{field:`${a}.timeReceived`,value:i.string()};break}default:{i.skipType(l&7);break}}}})),e);function t(i){return rt(i,r.codec())}r.encode=t;function n(i,s){return tt(i,r.codec(),s)}r.decode=n;function o(i,s){return nt(i,r.codec(),s)}r.stream=o})(F4||(F4={}));var $;(function(r){r.PUT_VALUE="PUT_VALUE",r.GET_VALUE="GET_VALUE",r.ADD_PROVIDER="ADD_PROVIDER",r.GET_PROVIDERS="GET_PROVIDERS",r.FIND_NODE="FIND_NODE",r.PING="PING"})($||($={}));var fo;(function(r){r[r.PUT_VALUE=0]="PUT_VALUE",r[r.GET_VALUE=1]="GET_VALUE",r[r.ADD_PROVIDER=2]="ADD_PROVIDER",r[r.GET_PROVIDERS=3]="GET_PROVIDERS",r[r.FIND_NODE=4]="FIND_NODE",r[r.PING=5]="PING"})(fo||(fo={}));(function(r){r.codec=()=>Nr(fo)})($||($={}));var mr;(function(r){r.NOT_CONNECTED="NOT_CONNECTED",r.CONNECTED="CONNECTED",r.CAN_CONNECT="CAN_CONNECT",r.CANNOT_CONNECT="CANNOT_CONNECT"})(mr||(mr={}));var A2;(function(r){r[r.NOT_CONNECTED=0]="NOT_CONNECTED",r[r.CONNECTED=1]="CONNECTED",r[r.CAN_CONNECT=2]="CAN_CONNECT",r[r.CANNOT_CONNECT=3]="CANNOT_CONNECT"})(A2||(A2={}));(function(r){r.codec=()=>Nr(A2)})(mr||(mr={}));var Ht;(function(r){let e;r.codec=()=>(e==null&&(e=ot((i,s,a={})=>{if(a.lengthDelimited!==!1&&s.fork(),i.id!=null&&i.id.byteLength>0&&(s.uint32(10),s.bytes(i.id)),i.multiaddrs!=null&&i.multiaddrs.length>0)for(let c of i.multiaddrs)s.uint32(18),s.bytes(c);i.connection!=null&&(s.uint32(24),mr.codec().encode(i.connection,s)),a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={id:Ee(0),multiaddrs:[]},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{c.id=i.bytes();break}case 2:{if(a.limits?.multiaddrs!=null&&c.multiaddrs.length===a.limits.multiaddrs)throw new bt('Decode error - repeated field "multiaddrs" had too many elements');c.multiaddrs.push(i.bytes());break}case 3:{c.connection=mr.codec().decode(i);break}default:{i.skipType(l&7);break}}}return c},function*(i,s,a,c={}){let u={multiaddrs:0},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:{yield{field:`${a}.id`,value:i.bytes()};break}case 2:{if(c.limits?.multiaddrs!=null&&u.multiaddrs===c.limits.multiaddrs)throw new bt('Streaming decode error - repeated field "multiaddrs" had too many elements');yield{field:`${a}.multiaddrs[]`,index:u.multiaddrs,value:i.bytes()},u.multiaddrs++;break}case 3:{yield{field:`${a}.connection`,value:mr.codec().decode(i)};break}default:{i.skipType(f&7);break}}}})),e);function t(i){return rt(i,r.codec())}r.encode=t;function n(i,s){return tt(i,r.codec(),s)}r.decode=n;function o(i,s){return nt(i,r.codec(),s)}r.stream=o})(Ht||(Ht={}));var $t;(function(r){let e;r.codec=()=>(e==null&&(e=ot((i,s,a={})=>{if(a.lengthDelimited!==!1&&s.fork(),i.type!=null&&fo[i.type]!==0&&(s.uint32(8),$.codec().encode(i.type,s)),i.clusterLevel!=null&&(s.uint32(80),s.int32(i.clusterLevel)),i.key!=null&&(s.uint32(18),s.bytes(i.key)),i.record!=null&&(s.uint32(26),s.bytes(i.record)),i.closer!=null&&i.closer.length>0)for(let c of i.closer)s.uint32(66),Ht.codec().encode(c,s);if(i.providers!=null&&i.providers.length>0)for(let c of i.providers)s.uint32(74),Ht.codec().encode(c,s);a.lengthDelimited!==!1&&s.ldelim()},(i,s,a={})=>{let c={type:$.PUT_VALUE,closer:[],providers:[]},u=s==null?i.len:i.pos+s;for(;i.pos<u;){let l=i.uint32();switch(l>>>3){case 1:{c.type=$.codec().decode(i);break}case 10:{c.clusterLevel=i.int32();break}case 2:{c.key=i.bytes();break}case 3:{c.record=i.bytes();break}case 8:{if(a.limits?.closer!=null&&c.closer.length===a.limits.closer)throw new bt('Decode error - repeated field "closer" had too many elements');c.closer.push(Ht.codec().decode(i,i.uint32(),{limits:a.limits?.closer$}));break}case 9:{if(a.limits?.providers!=null&&c.providers.length===a.limits.providers)throw new bt('Decode error - repeated field "providers" had too many elements');c.providers.push(Ht.codec().decode(i,i.uint32(),{limits:a.limits?.providers$}));break}default:{i.skipType(l&7);break}}}return c},function*(i,s,a,c={}){let u={closer:0,providers:0},l=s==null?i.len:i.pos+s;for(;i.pos<l;){let f=i.uint32();switch(f>>>3){case 1:{yield{field:`${a}.type`,value:$.codec().decode(i)};break}case 10:{yield{field:`${a}.clusterLevel`,value:i.int32()};break}case 2:{yield{field:`${a}.key`,value:i.bytes()};break}case 3:{yield{field:`${a}.record`,value:i.bytes()};break}case 8:{if(c.limits?.closer!=null&&u.closer===c.limits.closer)throw new bt('Streaming decode error - repeated field "closer" had too many elements');for(let d of Ht.codec().stream(i,i.uint32(),`${a}.closer[]`,{limits:c.limits?.closer$}))yield{...d,index:u.closer};u.closer++;break}case 9:{if(c.limits?.providers!=null&&u.providers===c.limits.providers)throw new bt('Streaming decode error - repeated field "providers" had too many elements');for(let d of Ht.codec().stream(i,i.uint32(),`${a}.providers[]`,{limits:c.limits?.providers$}))yield{...d,index:u.providers};u.providers++;break}default:{i.skipType(f&7);break}}}})),e);function t(i){return rt(i,r.codec())}r.encode=t;function n(i,s){return tt(i,r.codec(),s)}r.decode=n;function o(i,s){return nt(i,r.codec(),s)}r.stream=o})($t||($t={}));function P2(r,e={}){let t={...r,name:"SEND_QUERY",type:0,messageName:r.type,messageType:r.type};return e.onProgress?.(new CustomEvent("kad-dht:query:send-query",{detail:t})),t}function Nn(r,e={}){let t={...r,name:"PEER_RESPONSE",type:1,messageName:r.messageType,closer:r.closer??[],providers:r.providers??[]};return e.onProgress?.(new CustomEvent("kad-dht:query:peer-response",{detail:t})),t}function ho(r,e={}){let t={...r,name:"FINAL_PEER",type:2};return e.onProgress?.(new CustomEvent("kad-dht:query:final-peer",{detail:t})),t}function Qe(r,e={}){let t={...r,name:"QUERY_ERROR",type:3};return e.onProgress?.(new CustomEvent("kad-dht:query:query-error",{detail:t})),t}function C2(r,e={}){let t={...r,name:"PROVIDER",type:4};return e.onProgress?.(new CustomEvent("kad-dht:query:provider",{detail:t})),t}function Fn(r,e={}){let t={...r,name:"VALUE",type:5};return e.onProgress?.(new CustomEvent("kad-dht:query:value",{detail:t})),t}function R2(r,e={}){let t={...r,name:"DIAL_PEER",type:7};return e.onProgress?.(new CustomEvent("kad-dht:query:dial-peer",{detail:t})),t}function M4(r,e={}){let t={...r,name:"PATH_ENDED",type:8};return e.onProgress?.(new CustomEvent("kad-dht:query:path-ended",{detail:t})),t}function U4(r,e,t){if(t.length===0)throw new K("No records given");let o=N(e).split("/");if(o.length<3)throw new K("Record key does not have a selector function");let i=r[o[1].toString()];if(i==null)throw new lo(`No selector function configured for key type "${o[1]}"`);return t.length===1?0:i(e,t)}function y7(r,e){return 0}var K4={pk:y7};async function Wr(r,e,t){let n=e.key,i=N(n).split("/");if(i.length<3)return;let s=r[i[1].toString()];if(s==null)throw new K(`No validator available for key type "${i[1]}"`);await s(n,e.value,t)}var b7=async(r,e,t)=>{if(!(r instanceof Uint8Array))throw new K('"key" must be a Uint8Array');if(r.byteLength<5)throw new K("Invalid public key record");if(N(r.subarray(0,4))!=="/pk/")throw new K("key was not prefixed with /pk/");let o=k1(e),i=r.slice(4);if(!Q(i,o.toMultihash().bytes))throw new K("public key does not match passed in key")},q4={pk:b7};var z4=Symbol.for("nodejs.util.inspect.custom"),w7=114,Mn=class{type;multihash;publicKey;string;constructor(e){this.type=e.type,this.multihash=e.multihash,Object.defineProperty(this,"string",{enumerable:!1,writable:!0})}get[Symbol.toStringTag](){return`PeerId(${this.toString()})`}[$o]=!0;toString(){return this.string==null&&(this.string=te.encode(this.multihash.bytes).slice(1)),this.string}toMultihash(){return this.multihash}toCID(){return X.createV1(w7,this.multihash)}toJSON(){return this.toString()}equals(e){if(e==null)return!1;if(e instanceof Uint8Array)return Q(this.multihash.bytes,e);if(typeof e=="string")return this.toString()===e;if(e?.toMultihash()?.bytes!=null)return Q(this.multihash.bytes,e.toMultihash().bytes);throw new Error("not valid Id")}[z4](){return`PeerId(${this.toString()})`}},Un=class extends Mn{type="RSA";publicKey;constructor(e){super({...e,type:"RSA"}),this.publicKey=e.publicKey}},Kn=class extends Mn{type="Ed25519";publicKey;constructor(e){super({...e,type:"Ed25519"}),this.publicKey=e.publicKey}},qn=class extends Mn{type="secp256k1";publicKey;constructor(e){super({...e,type:"secp256k1"}),this.publicKey=e.publicKey}},x7=2336,zn=class{type="url";multihash;publicKey;url;constructor(e){this.url=e.toString(),this.multihash=ze.digest(F(this.url))}[z4](){return`PeerId(${this.url})`}[$o]=!0;toString(){return this.toCID().toString()}toMultihash(){return this.multihash}toCID(){return X.createV1(x7,this.toMultihash())}toJSON(){return this.toString()}equals(e){return e==null?!1:(e instanceof Uint8Array&&(e=N(e)),e.toString()===this.toString())}};var E7=114,V4=2336;function H4(r,e){let t;if(r.charAt(0)==="1"||r.charAt(0)==="Q")t=pe(te.decode(`z${r}`));else{if(r.startsWith("k51qzi5uqu5")||r.startsWith("kzwfwjn5ji4")||r.startsWith("k2k4r8")||r.startsWith("bafz"))return v7(X.parse(r));if(e==null)throw new K('Please pass a multibase decoder for strings that do not start with "1" or "Q"');t=pe(e.decode(r))}return Le(t)}function $4(r){if(r.type==="Ed25519")return new Kn({multihash:r.toCID().multihash,publicKey:r});if(r.type==="secp256k1")return new qn({multihash:r.toCID().multihash,publicKey:r});if(r.type==="RSA")return new Un({multihash:r.toCID().multihash,publicKey:r});throw new Wt}function Le(r){if(_7(r))return new Un({multihash:r});if(S7(r))try{let e=U3(r);if(e.type==="Ed25519")return new Kn({multihash:r,publicKey:e});if(e.type==="secp256k1")return new qn({multihash:r,publicKey:e})}catch{let t=N(r.digest);return new zn(new URL(t))}throw new Qn("Supplied PeerID Multihash is invalid")}function v7(r){if(r?.multihash==null||r.version==null||r.version===1&&r.code!==E7&&r.code!==V4)throw new Zn("Supplied PeerID CID is invalid");if(r.code===V4){let e=N(r.multihash.digest);return new zn(new URL(e))}return Le(r.multihash)}function S7(r){return r.code===ze.code}function _7(r){return r.code===ft.code}var _t="/",j4=new TextEncoder().encode(_t),po=j4[0],Vn=class r{_buf;constructor(e,t){if(typeof e=="string")this._buf=F(e);else if(e instanceof Uint8Array)this._buf=e;else throw new Error("Invalid key, should be String of Uint8Array");if(t==null&&(t=!0),t&&this.clean(),this._buf.byteLength===0||this._buf[0]!==po)throw new Error("Invalid key")}toString(e="utf8"){return N(this._buf,e)}uint8Array(){return this._buf}get[Symbol.toStringTag](){return`Key(${this.toString()})`}static withNamespaces(e){return new r(e.join(_t))}static random(){return new r(Math.random().toString().substring(2))}static asKey(e){return e instanceof Uint8Array||typeof e=="string"?new r(e):typeof e.uint8Array=="function"?new r(e.uint8Array()):null}clean(){if((this._buf==null||this._buf.byteLength===0)&&(this._buf=j4),this._buf[0]!==po){let e=new Uint8Array(this._buf.byteLength+1);e.fill(po,0,1),e.set(this._buf,1),this._buf=e}for(;this._buf.byteLength>1&&this._buf[this._buf.byteLength-1]===po;)this._buf=this._buf.subarray(0,-1)}less(e){let t=this.list(),n=e.list();for(let o=0;o<t.length;o++){if(n.length<o+1)return!1;let i=t[o],s=n[o];if(i<s)return!0;if(i>s)return!1}return t.length<n.length}reverse(){return r.withNamespaces(this.list().slice().reverse())}namespaces(){return this.list()}baseNamespace(){let e=this.namespaces();return e[e.length-1]}list(){return this.toString().split(_t).slice(1)}type(){return I7(this.baseNamespace())}name(){return T7(this.baseNamespace())}instance(e){return new r(this.toString()+":"+e)}path(){let e=this.parent().toString();return e.endsWith(_t)||(e+=_t),e+=this.type(),new r(e)}parent(){let e=this.list();return e.length===1?new r(_t):new r(e.slice(0,-1).join(_t))}child(e){return this.toString()===_t?e:e.toString()===_t?this:new r(this.toString()+e.toString(),!1)}isAncestorOf(e){return e.toString()===this.toString()?!1:e.toString().startsWith(this.toString())}isDecendantOf(e){return e.toString()===this.toString()?!1:this.toString().startsWith(e.toString())}isTopLevel(){return this.list().length===1}concat(...e){return r.withNamespaces([...this.namespaces(),...A7(e.map(t=>t.namespaces()))])}};function I7(r){let e=r.split(":");return e.length<2?"":e.slice(0,-1).join(":")}function T7(r){let e=r.split(":");return e[e.length-1]}function A7(r){return[].concat(...r)}var P7=F("/pk/");function mo(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>!An(e))}}function G4(r){return{...r,multiaddrs:r.multiaddrs.filter(e=>An(e))}}function Y4(r){return r}async function jt(r,e){let t=await ft.digest(r);return e?.signal?.throwIfAborted(),t.digest}async function ke(r,e){return jt(r.toMultihash().bytes,e)}function Gt(r,e){return new Vn(`${r}/${N(e,"base32")}`,!1)}function Z4(r){return Me([P7,r.toMultihash().bytes])}function Q4(r){return N(r.subarray(0,4))==="/pk/"}function W4(r){let e=pe(r.subarray(4));return Le(e)}function D2(r,e){let t=new Date;return new fe(r,e,t).serialize()}function go(r){let e=r.toString().split("/"),t=e.pop(),n=e.pop();if(t==null||n==null)throw new Error(`incorrectly formatted provider entry key in datastore: ${r.toString()}`);return{cid:X.createV1(h0,pe(F(n,"base32"))),peerId:H4(t)}}function yo(r,e,t){let n=typeof e=="string"?e:N(e.multihash.bytes,"base32"),o=[r,n];return t!=null&&o.push(t.toString()),new Vn(o.join("/"))}function bo(r){return new Date(ir(r))}function gr(r,e,t){return async function*(...n){let o=e.queryTime?.timer(t),i=e.errorTime?.timer(t),s=!1;try{e.queries?.increment({[t]:!0}),yield*r(...n)}catch(a){throw s=!0,i?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||o?.()}}}function wo(r,e,t){return async function(...n){let o=e?.queryTime?.timer(t),i=e?.errorTime?.timer(t),s=!1;try{return e.queries?.increment({[t]:!0}),await r(...n)}catch(a){throw s=!0,i?.(),e.errors?.increment({[t]:!0}),a}finally{e.queries?.decrement({[t]:!0}),s||o?.()}}}var xo=class{log;components;validators;selectors;peerRouting;queryManager;network;datastorePrefix;constructor(e,t){let{validators:n,selectors:o,peerRouting:i,queryManager:s,network:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-fetching`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n,this.selectors=o,this.peerRouting=i,this.queryManager=s,this.network=a,this.get=e.metrics?.traceFunction("libp2p.kadDHT.get",this.get.bind(this),{optionsIndex:1})??this.get,this.put=e.metrics?.traceFunction("libp2p.kadDHT.put",this.put.bind(this),{optionsIndex:2})??this.put}async getLocal(e,t){this.log("getLocal %b",e);let n=Gt(this.datastorePrefix,e);this.log("fetching record for key %k",n);let o=await this.components.datastore.get(n,t);this.log("found %k in local datastore",n);let i=fe.deserialize(o);return await Wr(this.validators,i,t),i}async*sendCorrectionRecord(e,t,n,o){this.log("sendCorrection for %b",e);let i=D2(e,n);for(let{value:s,from:a}of t){if(Q(s,n)){this.log("record was ok");continue}if(this.components.peerId.equals(a)){try{let l=Gt(this.datastorePrefix,e);this.log(`Storing corrected record for key ${l.toString()}`),await this.components.datastore.put(l,i.subarray(),o)}catch(l){this.log.error("failed error correcting self - %e",l)}continue}let c=!1,u={type:$.PUT_VALUE,key:e,record:i};for await(let l of this.network.sendRequest(a,u,o))l.name==="PEER_RESPONSE"&&l.record!=null&&Q(l.record.value,fe.deserialize(i).value)&&(c=!0),yield l;if(!c)throw new Vt("Could not send correction");this.log.error("failed error correcting entry")}}async*put(e,t,n){this.log("put key %b value %b",e,t);let o=D2(e,t),i=Gt(this.datastorePrefix,e);this.log(`storing record for key ${i.toString()}`),await this.components.datastore.put(i,o.subarray(),n),yield*Cn(this.peerRouting.getClosestPeers(e,{...n,signal:n.signal}),s=>Qr(s,a=>async()=>{if(a.name!=="FINAL_PEER")return[a];let c=[],u={type:$.PUT_VALUE,key:e,record:o};this.log("send put to %p",a.peer.id);for await(let l of this.network.sendRequest(a.peer.id,u,{...n,path:a.path}))c.push(l),l.name==="PEER_RESPONSE"&&(l.record!=null&&Q(l.record.value,fe.deserialize(o).value)||c.push(Qe({from:a.peer.id,error:new Vt("Value not put correctly"),path:l.path},n)));return c}),s=>Bn(s,{ordered:!1,concurrency:zt}),async function*(s){for await(let a of s)yield*a})}async*get(e,t){this.log("get %b",e);let n=[];for await(let a of this.getMany(e,t)){if(a.name==="VALUE"){n.push(a);continue}yield a}if(n.length===0)return;let o=n.map(a=>a.value),i=0;try{i=U4(this.selectors,e,o)}catch(a){if(a.name!=="InvalidParametersError")throw a}let s=o[i];if(this.log("GetValue %b %b",e,s),s==null)throw new qe("Best value was not found");yield*this.sendCorrectionRecord(e,n,s,{...t,path:{index:-1,queued:0,running:0,total:0}}),yield n[i]}async*getMany(e,t={}){this.log("getMany values for %b",e);try{let i=await this.getLocal(e,t);yield Fn({value:i.value,from:this.components.peerId,path:{index:-1,running:0,queued:0,total:0}},t)}catch(i){this.log("error getting local value for %b",e,i)}let n=this,o=async function*({peer:i,signal:s,path:a}){for await(let c of n.peerRouting.getValueOrPeers(i.id,e,{...t,signal:s,path:a}))yield c,c.name==="PEER_RESPONSE"&&c.record!=null&&(yield Fn({from:i.id,value:c.record.value,path:a},t))};yield*this.queryManager.run(e,o,t)}};function yr(r,e){let t={[Symbol.iterator]:()=>t,next:()=>{let n=r.next(),o=n.value;return n.done===!0||o==null?{done:!0,value:void 0}:{done:!1,value:e(o)}}};return t}function Eo(r){let e=pe(te.decode(`z${r}`));return Le(e)}var Yt=class{map;constructor(e){if(this.map=new Map,e!=null)for(let[t,n]of e.entries())this.map.set(t.toString(),{key:t,value:n})}[Symbol.iterator](){return this.entries()}clear(){this.map.clear()}delete(e){return this.map.delete(e.toString())}entries(){return yr(this.map.entries(),e=>[e[1].key,e[1].value])}forEach(e){this.map.forEach((t,n)=>{e(t.value,t.key,this)})}get(e){return this.map.get(e.toString())?.value}has(e){return this.map.has(e.toString())}set(e,t){this.map.set(e.toString(),{key:e,value:t})}keys(){return yr(this.map.values(),e=>e.key)}values(){return yr(this.map.values(),e=>e.value)}get size(){return this.map.size}};var Zt=class r{set;constructor(e){if(this.set=new Set,e!=null)for(let t of e)this.set.add(t.toString())}get size(){return this.set.size}[Symbol.iterator](){return this.values()}add(e){this.set.add(e.toString())}clear(){this.set.clear()}delete(e){this.set.delete(e.toString())}entries(){return yr(this.set.entries(),e=>{let t=Eo(e[0]);return[t,t]})}forEach(e){this.set.forEach(t=>{let n=Eo(t);e(n,n,this)})}has(e){return this.set.has(e.toString())}values(){return yr(this.set.values(),e=>Eo(e))}intersection(e){let t=new r;for(let n of e)this.has(n)&&t.add(n);return t}difference(e){let t=new r;for(let n of this)e.has(n)||t.add(n);return t}union(e){let t=new r;for(let n of e)t.add(n);for(let n of this)t.add(n);return t}};var L2=class extends Yt{metric;constructor(e){super();let{name:t,metrics:n}=e;this.metric=n.registerMetric(t),this.updateComponentMetric()}set(e,t){return super.set(e,t),this.updateComponentMetric(),this}delete(e){let t=super.delete(e);return this.updateComponentMetric(),t}clear(){super.clear(),this.updateComponentMetric()}updateComponentMetric(){this.metric.update(this.size)}};function k2(r){let{name:e,metrics:t}=r,n;return t!=null?n=new L2({name:e,metrics:t}):n=new Yt,n}function X4(r,e){return{id:r.id.toMultihash().bytes,multiaddrs:(r.multiaddrs??[]).map(n=>n.bytes),connection:e}}function Hn(r){if(r.id==null)throw new Error("Invalid peer in message");let e=pe(r.id);return{id:Le(e),multiaddrs:(r.multiaddrs??[]).map(t=>W1(t))}}var vo=class{log;components;network;peerRouting;queryManager;routingTable;providers;constructor(e,t){let{network:n,peerRouting:o,queryManager:i,routingTable:s,providers:a,logPrefix:c}=t;this.components=e,this.log=e.logger.forComponent(`${c}:content-routing`),this.network=n,this.peerRouting=o,this.queryManager=i,this.routingTable=s,this.providers=a,this.findProviders=e.metrics?.traceFunction("libp2p.kadDHT.findProviders",this.findProviders.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(u,l)=>(u.name==="PROVIDER"&&(l.providers??=[],l.providers.push(...u.providers.map(f=>f.id.toString()))),l)})??this.findProviders,this.provide=e.metrics?.traceFunction("libp2p.kadDHT.provide",this.provide.bind(this),{optionsIndex:1,getAttributesFromYieldedValue:(u,l)=>(u.name==="PEER_RESPONSE"&&u.messageName==="ADD_PROVIDER"&&(l.providers??=[],l.providers.push(u.from.toString())),l)})??this.provide}async*provide(e,t,n={}){this.log("provide %s",e);let o=e.multihash.bytes;await this.providers.addProvider(e,this.components.peerId,n);let i={type:$.ADD_PROVIDER,key:o,providers:[X4({id:this.components.peerId,multiaddrs:t})]},s=0,a=this;async function*c(f){try{a.log("sending provider record for %s to %p",e,f.peer.id);for await(let d of a.network.sendMessage(f.peer.id,i,{...n,path:f.path}))d.name==="PEER_RESPONSE"&&(a.log("sent provider record for %s to %p",e,f.peer.id),s++),yield d}catch(d){a.log.error("error sending provide record to peer %p - %e",f.peer.id,d),yield Qe({from:f.peer.id,error:d,path:f.path},n)}}let u=wt({objectMode:!0}),l=new ct({concurrency:zt});l.addEventListener("idle",()=>{u.end()}),l.addEventListener("failure",f=>{this.log.error("error publishing provider record to peer - %e",f.detail.error)}),l.add(async()=>{let f=[];for await(let d of this.peerRouting.getClosestPeers(o,n))u.push(d),d.name==="FINAL_PEER"&&f.push(d);f.forEach(d=>{l.add(async()=>{for await(let h of c(d))u.push(h)}).catch(h=>{this.log.error("error publishing provider record to peer - %e",h)})})}).catch(f=>{u.end(f)}),yield*u,this.log("sent provider records to %d peers",s)}async*findProviders(e,t){let n=this.routingTable.kBucketSize,o=0,i=e.multihash.bytes,s=this;this.log("findProviders %c",e);let a=await this.providers.getProviders(e,t);if(a.length>0){let l=[];for(let f of a.slice(0,n))try{let d=await this.components.peerStore.get(f,t);l.push({id:f,multiaddrs:d.addresses.map(({multiaddr:h})=>h)})}catch(d){if(d.name!=="NotFoundError")throw d;this.log("no peer store entry for %p",f)}if(yield Nn({from:this.components.peerId,messageType:$.GET_PROVIDERS,providers:l,path:{index:-1,queued:0,running:0,total:0}},t),yield C2({from:this.components.peerId,providers:l,path:{index:-1,queued:0,running:0,total:0}},t),o+=l.length,o>=n)return}let c=async function*({peer:l,signal:f,path:d}){let h={type:$.GET_PROVIDERS,key:i};yield*s.network.sendRequest(l.id,h,{...t,signal:f,path:d})},u=new Zt(a);for await(let l of this.queryManager.run(i,c,t))if(yield l,l.name==="PEER_RESPONSE"){this.log("Found %d provider entries for %c and %d closer peers",l.providers.length,e,l.closer.length);let f=[];for(let d of l.providers)u.has(d.id)||(u.add(d.id),f.push(d));if(f.length>0&&(yield C2({from:l.from,providers:f,path:l.path},t),o+=f.length,o>=n))return}}};var So=class extends Ce{log;protocol;running;components;timeout;metrics;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:network`),this.running=!1,this.protocol=t.protocol,this.timeout=new xt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_network_message_send_times_milliseconds`}),this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_outbound_rpc_errors_total`)},this.sendRequest=e.metrics?.traceFunction("libp2p.kadDHT.sendRequest",this.sendRequest.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],i){return{...i,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((i,s)=>{o[`providers-${s}`]=i.id.toString()}),n.closer.length>0&&n.closer.forEach((i,s)=>{o[`closer-${s}`]=i.id.toString()})),o)})??this.sendRequest,this.sendMessage=e.metrics?.traceFunction("libp2p.kadDHT.sendMessage",this.sendMessage.bind(this),{optionsIndex:2,getAttributesFromArgs([n,o],i){return{...i,to:n.toString(),"message type":`${o.type}`}},getAttributesFromYieldedValue:(n,o)=>(n.name==="PEER_RESPONSE"&&(n.providers.length>0&&n.providers.forEach((i,s)=>{o[`providers-${s}`]=i.id.toString()}),n.closer.length>0&&n.closer.forEach((i,s)=>{o[`closer-${s}`]=i.id.toString()})),o)})??this.sendMessage}async start(){this.running||(this.running=!0)}async stop(){this.running=!1}isStarted(){return this.running}async*sendRequest(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new K("Message type was missing");let i,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield R2({peer:e,path:n.path},n),i=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield P2({to:e,type:o,path:n.path},n);let a=await this._writeReadMessage(i,t,n);i.close(n).catch(c=>{this.log.error("error closing stream to %p - %e",e,c),i?.abort(c)}),yield Nn({from:e,messageType:a.type,closer:a.closer.map(Hn),providers:a.providers.map(Hn),record:a.record==null?void 0:fe.deserialize(a.record),path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),i?.abort(a),n.signal?.aborted!==!0&&this.log.error("could not send %s to %p - %e",t.type,e,a),yield Qe({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(s)}}async*sendMessage(e,t,n){if(!this.running)return;let o=t.type;if(o==null)throw new K("Message type was missing");let i,s=this.timeout.getTimeoutSignal(n);n={...n,signal:s};try{this.metrics.operations?.increment({[o]:!0}),this.log("dialling %p",e),yield R2({peer:e,path:n.path},n),i=await this.components.connectionManager.openStream(e,this.protocol,n),this.log("sending %s to %p",t.type,e),yield P2({to:e,type:o,path:n.path},n),await this._writeMessage(i,t,n),i.close(n).catch(a=>{this.log.error("error closing stream to %p - %e",e,a),i?.abort(a)}),yield Nn({from:e,messageType:o,path:n.path},n)}catch(a){this.metrics.errors?.increment({[o]:!0}),i?.abort(a),yield Qe({from:e,error:a,path:n.path},n)}finally{this.timeout.cleanUp(s)}}async _writeMessage(e,t,n){await Rn(e).write(t,$t,n)}async _writeReadMessage(e,t,n){let o=Rn(e);await o.write(t,$t,n);let i=await o.read($t,n);return i.closer.forEach(s=>{this.safeDispatchEvent("peer",{detail:Hn(s)})}),i.providers.forEach(s=>{this.safeDispatchEvent("peer",{detail:Hn(s)})}),i}};function We(r,e){if(r.length!==e.length)throw new Error("Inputs should have the same length");let t=ve(r.length);for(let n=0;n<r.length;n++)t[n]=r[n]^e[n];return t}function br(r,e){if(r.byteLength!==e.byteLength)throw new Error("Inputs should have the same length");for(let t=0;t<r.byteLength;t++)if(r[t]!==e[t])return r[t]<e[t]?-1:1;return 0}var Qt=class{originDhtKey;capacity;peerDistances;constructor(e,t){this.originDhtKey=e,this.capacity=t,this.peerDistances=[]}get length(){return this.peerDistances.length}get peers(){return[...this.peerDistances]}async add(e,t={index:-1,queued:0,running:0,total:0},n){let o=await ke(e.id,n);this.addWithKadId(e,o,t)}addWithKadId(e,t,n={index:-1,queued:0,running:0,total:0}){if(this.peerDistances.find(s=>s.peer.id.equals(e.id))!=null)return;let o={peer:e,distance:We(this.originDhtKey,t),path:n};if(this.peerDistances.length===this.capacity){let s=this.peerDistances[this.peerDistances.length-1];if(s!=null&&br(o.distance,s.distance)!==-1)return}let i=!1;for(let s=0;s<this.peerDistances.length;s++){let a=br(this.peerDistances[s].distance,o.distance);if(a===0||a===1){i=!0,this.peerDistances.splice(s,0,o);break}}i||this.peerDistances.push(o),this.peerDistances=this.peerDistances.slice(0,this.capacity)}async isCloser(e,t){if(this.length===0)return!0;let n=await ke(e,t),o=We(n,this.originDhtKey),i=this.peerDistances[this.peerDistances.length-1].distance;return br(o,i)===-1}async anyCloser(e,t){return e.length===0?!1:Promise.any(e.map(async n=>this.isCloser(n,t)))}};var _o=class{log;routingTable;network;validators;queryManager;components;constructor(e,t){this.routingTable=t.routingTable,this.network=t.network,this.validators=t.validators,this.queryManager=t.queryManager,this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:peer-routing`),this.findPeer=e.metrics?.traceFunction("libp2p.kadDHT.findPeer",this.findPeer.bind(this),{optionsIndex:1})??this.findPeer,this.getClosestPeers=e.metrics?.traceFunction("libp2p.kadDHT.getClosestPeers",this.getClosestPeers.bind(this),{optionsIndex:1})??this.getClosestPeers}async findPeerLocal(e,t){let n,o=await this.routingTable.find(e,t);if(o!=null){this.log("findPeerLocal found %p in routing table",e);try{n=await this.components.peerStore.get(o,t)}catch(i){if(i.name!=="NotFoundError")throw i}}if(n==null)try{n=await this.components.peerStore.get(e,t)}catch(i){if(i.name!=="NotFoundError")throw i}if(n!=null)return this.log("findPeerLocal found %p in peer store",e),{id:n.id,multiaddrs:n.addresses.map(i=>i.multiaddr)}}async*_getValueSingle(e,t,n){let o={type:$.GET_VALUE,key:t};yield*this.network.sendRequest(e,o,n)}async*getPublicKeyFromNode(e,t={}){let n=Z4(e),o={index:-1,queued:0,running:0,total:0};for await(let i of this._getValueSingle(e,n,{...t,path:o}))if(yield i,i.name==="PEER_RESPONSE"&&i.record!=null){let s=k1(i.record.value),a=$4(s);if(!a.equals(e))throw new ut("public key does not match id");if(a.publicKey==null)throw new ut("public key missing");yield Fn({from:e,value:i.record.value,path:o},t)}throw new Vt(`Node not responding with its public key: ${e.toString()}`)}async*findPeer(e,t={}){if(this.log("findPeer %p",e),t.useCache!==!1){let o=await this.findPeerLocal(e,t);if(o!=null){this.log("found local"),yield ho({from:this.components.peerId,peer:o,path:{index:-1,queued:0,running:0,total:0}},t);return}}let n=!1;if(t.useNetwork!==!1){let o=this,i=async function*({peer:s,signal:a,path:c}){let u={type:$.FIND_NODE,key:e.toMultihash().bytes};for await(let l of o.network.sendRequest(s.id,u,{...t,signal:a,path:c}))if(yield l,l.name==="PEER_RESPONSE"){let f=l.closer.find(d=>d.id.equals(e));f!=null&&(yield ho({from:l.from,peer:f,path:l.path},t))}};for await(let s of this.queryManager.run(e.toMultihash().bytes,i,t))s.name==="FINAL_PEER"&&(n=!0),yield s}if(!n)throw new qe("Not found")}async*getClosestPeers(e,t={}){this.log("getClosestPeers to %b",e);let n=await jt(e,t),o=new Qt(n,this.routingTable.kBucketSize),i=this,s=async function*({peer:a,path:c,peerKadId:u,signal:l}){i.log("getClosestPeers asking %p",a.id);let f={type:$.FIND_NODE,key:e};yield*i.network.sendRequest(a.id,f,{...t,signal:l,path:c}),o.addWithKadId(a,u,c)};yield*this.queryManager.run(e,s,t),this.log("found %d peers close to %b",o.length,e);for(let{peer:a,path:c}of o.peers)try{if(a.multiaddrs.length===0&&(a=await i.components.peerStore.getInfo(a.id,t)),a.multiaddrs.length===0)continue;yield ho({from:this.components.peerId,peer:await i.components.peerStore.getInfo(a.id,t),path:{index:c.index,queued:0,running:0,total:0}},t)}catch{continue}}async*getValueOrPeers(e,t,n){for await(let o of this._getValueSingle(e,t,n)){if(o.name==="PEER_RESPONSE"&&o.record!=null)try{await this._verifyRecordOnline(o.record,n)}catch{let s="invalid record received, discarded";this.log(s),yield Qe({from:o.from,error:new Vt(s),path:n.path},n);continue}yield o}}async _verifyRecordOnline(e,t){if(e.timeReceived==null)throw new uo("invalid record received");await Wr(this.validators,new fe(e.key,e.value,e.timeReceived),t)}async getClosestPeersOffline(e,t){let n=[];try{let s=pe(e),a=Le(s),c=await this.components.peerStore.get(a,t);n.push({id:c.id,multiaddrs:c.addresses.map(({multiaddr:u})=>u)})}catch{}let o=await jt(e,t),i=this.routingTable.closestPeers(o,t);for(let s of i)try{n.push(await this.components.peerStore.getInfo(s,t))}catch(a){if(a.name!=="NotFoundError")throw a}return n.length>0?this.log("getClosestPeersOffline returning the %d closest peer(s) we know to %b",n.length,e):this.log("getClosestPeersOffline could not any peers close to %b with %d peers in the routing table",e,this.routingTable.size),n}};var Io=class{log;datastore;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:providers`),this.datastorePrefix=`${t.datastorePrefix}/provider`,this.datastore=e.datastore}async addProvider(e,t,n){this.log.trace("%p provides %s",t,e),await this.writeProviderEntry(e,t,n)}async removeProvider(e,t,n){let o=yo(this.datastorePrefix,e,t);this.log.trace("%p no longer provides %s",t,e),await this.datastore.delete(o,n)}async getProviders(e,t){this.log.trace("get providers for %c",e);let n=await this.loadProviders(e,t);return this.log.trace("got %d providers for %c",n.size,e),[...n.keys()]}async writeProviderEntry(e,t,n){let o=yo(this.datastorePrefix,e,t),i=S1(n?.time?.getTime()??Date.now());await this.datastore.put(o,i,n)}async loadProviders(e,t){let n=new Yt,o=yo(this.datastorePrefix,e);for await(let i of this.datastore.query({prefix:o.toString()},t)){let{peerId:s}=go(i.key);n.set(s,bo(i.value))}return n}};async function*J4(r){let{key:e,startingPeers:t,ourPeerId:n,query:o,alpha:i,path:s,numPaths:a,log:c,peersSeen:u,connectionManager:l,signal:f}=r,d=wt({objectMode:!0}),h=new ct({concurrency:i,sort:(p,y)=>br(p.options.distance,y.options.distance)});h.addEventListener("idle",()=>{d.push(M4({path:{index:s,queued:h.queued,running:h.running,total:h.size}},r)),d.end()}),h.addEventListener("failure",p=>{c.error("error during query - %e",p.detail.error)});let g=()=>{h.abort(),d.end(new Ke)};f.addEventListener("abort",g);try{let y=function(v,S){if(v==null)return;u.add(v.id.toMultihash().bytes);let R=We(S,p);h.add(async()=>{try{for await(let A of o({...r,key:e,peer:v,path:{index:s,queued:h.queued,running:h.running,total:h.size},numPaths:a,peerKadId:S,signal:f})){if(A.name==="PEER_RESPONSE")for(let O of A.closer){if(u.has(O.id.toMultihash().bytes)){c("already seen %p in query",O.id);continue}if(n.equals(O.id)){c("not querying ourselves");continue}if(!await l.isDialable(O.multiaddrs)){c("not querying undialable peer");continue}let L=await ke(O.id,{signal:f}),T=We(L,p);if(br(T,R)!==-1){c("skipping %p as they are not closer to %b than %p",O.id,e,v.id);continue}c("querying closer peer %p",O.id),y(O,L)}d.push({...A,path:{index:s,queued:h.queued,running:h.running,total:h.size}})}}catch(A){d.push(Qe({from:v.id,error:A,path:{index:s,queued:h.queued,running:h.running-1,total:h.size-1}},r))}},{distance:R}).catch(A=>{c.error("error during query - %e",A)})};var b=y;let p=await jt(e,{signal:f});await Promise.all(t.map(async v=>{y({id:v,multiaddrs:[]},await ke(v,{signal:f}))})),yield*d}finally{f.removeEventListener("abort",g)}}var To=class{disjointPaths;alpha;shutDownController;running;logger;peerId;connectionManager;routingTable;initialQuerySelfHasRun;logPrefix;allowQueryWithZeroPeers;constructor(e,t){this.logPrefix=t.logPrefix,this.disjointPaths=t.disjointPaths??ao,this.alpha=t.alpha??zt,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.routingTable=t.routingTable,this.logger=e.logger,this.peerId=e.peerId,this.connectionManager=e.connectionManager,this.allowQueryWithZeroPeers=t.allowQueryWithZeroPeers??!1,this.shutDownController=new AbortController,this.shutDownController.signal,this.running=!1}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutDownController=new AbortController,this.shutDownController.signal,void 0)}async stop(){this.running=!1,this.shutDownController.abort()}async*run(e,t,n={}){if(!this.running)throw new Error("QueryManager not started");if(n.signal==null){let c=AbortSignal.timeout(k4);n={...n,signal:c}}let o=new AbortController,i=Ue([this.shutDownController.signal,o.signal,n.signal]);o.signal;let s=this.logger.forComponent(`${this.logPrefix}:query:`+N(e,"base58btc")),a=!1;try{this.routingTable.size===0&&!this.allowQueryWithZeroPeers&&(s("routing table was empty, waiting for some peers before running%s query",n.isSelfQuery===!0?" self":""),await Kt(this.routingTable,"peer:add",{signal:i,filter:h=>!this.peerId.equals(h.detail)}),s("routing table has peers, continuing with%s query",n.isSelfQuery===!0?" self":"")),n.isSelfQuery!==!0&&this.initialQuerySelfHasRun!=null&&(s("waiting for initial self query before continuing"),await qt(this.initialQuerySelfHasRun.promise,i),this.initialQuerySelfHasRun=void 0),s("query:start");let c=await jt(e,{signal:i}),u=this.routingTable.closestPeers(c,{count:this.routingTable.kBucketSize}),l=u.sort(()=>Math.random()>.5?1:-1).reduce((h,g,b)=>(h[b%this.disjointPaths].push(g),h),new Array(this.disjointPaths).fill(0).map(()=>[])).filter(h=>h.length>0);if(u.length===0){s.error("running query with no peers");return}let f=Ls(1024),d=l.map((h,g)=>J4({...n,key:e,startingPeers:h,ourPeerId:this.peerId,signal:i,query:t,path:g,numPaths:l.length,alpha:this.alpha,log:s,peersSeen:f,onProgress:n.onProgress,connectionManager:this.connectionManager}));for await(let h of X1(...d)){if(h.name==="QUERY_ERROR"&&s.error("query error - %e",h.error),h.name==="PEER_RESPONSE")for(let g of[...h.closer,...h.providers])await this.connectionManager.isDialable(g.multiaddrs,{signal:i})&&await this.routingTable.add(g.id,{signal:i});i.throwIfAborted(),yield h}a=!0}catch(c){if(this.running)throw c}finally{a||(s("query exited early"),o.abort()),i.clear(),s("query finished")}}};function R7(r){return r[Symbol.asyncIterator]!=null}function D7(r){if(R7(r))return(async()=>{let e=0;for await(let t of r)e++;return e})();{let e=0;for(let t of r)e++;return e}}var Ao=D7;function L7(r){return r[Symbol.asyncIterator]!=null}function k7(r,e){return L7(r)?(async function*(){let t=0;if(!(e<1)){for await(let n of r)if(yield n,t++,t===e)return}})():(function*(){let t=0;if(!(e<1)){for(let n of r)if(yield n,t++,t===e)return}})()}var e5=k7;var Po=class{log;peerId;peerRouting;events;count;interval;initialInterval;queryTimeout;running;timeoutId;controller;initialQuerySelfHasRun;querySelfPromise;constructor(e,t){this.peerId=e.peerId,this.log=e.logger.forComponent(`${t.logPrefix}:query-self`),this.events=e.events,this.running=!1,this.peerRouting=t.peerRouting,this.count=t.count??ao,this.interval=t.interval??P4,this.initialInterval=t.initialInterval??C4,this.queryTimeout=t.queryTimeout??R4,this.initialQuerySelfHasRun=t.initialQuerySelfHasRun,this.querySelf=wo(this.querySelf.bind(this),t.operationMetrics,"SELF_QUERY")}isStarted(){return this.running}start(){this.running||(this.running=!0,clearTimeout(this.timeoutId),this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.initialInterval))}stop(){this.running=!1,this.timeoutId!=null&&clearTimeout(this.timeoutId),this.controller!=null&&this.controller.abort()}async querySelf(){if(!this.running){this.log("skip self-query because we are not started");return}if(this.querySelfPromise!=null)return this.log("joining existing self query"),this.querySelfPromise.promise;if(this.querySelfPromise=ce(),this.running){this.controller=new AbortController;let e=[this.controller.signal];if(this.initialQuerySelfHasRun==null){let n=AbortSignal.timeout(this.queryTimeout);e.push(n)}let t=Ue(e);this.controller.signal;try{this.log("run self-query, look for %d peers timing out after %dms",this.count,this.queryTimeout);let n=Date.now(),o=await Cn(this.peerRouting.getClosestPeers(this.peerId.toMultihash().bytes,{signal:t,isSelfQuery:!0}),s=>e5(s,this.count),async s=>Ao(s));t?.throwIfAborted();let i=Date.now()-n;this.log("self-query found %d peers in %dms",o,i),this.events.dispatchEvent(new CustomEvent("kad-dht:query:self",{detail:{peers:o,duration:i}}))}catch(n){this.log.error("self-query error - %e",n)}finally{t.clear(),this.initialQuerySelfHasRun!=null&&(this.initialQuerySelfHasRun.resolve(),this.initialQuerySelfHasRun=void 0)}}this.querySelfPromise.resolve(),this.querySelfPromise=void 0,this.running&&(this.timeoutId=setTimeout(()=>{this.querySelf().catch(e=>{this.log.error("error running self-query - %e",e)})},this.interval))}};var Co=class extends Ce{log;reprovideQueue;maxQueueSize;datastore;timeout;reprovideTimeout;running;shutdownController;reprovideThreshold;contentRouting;datastorePrefix;addressManager;validity;interval;peerId;constructor(e,t){super(),this.log=e.logger.forComponent(`${t.logPrefix}:reprovider`),this.peerId=e.peerId,this.reprovideQueue=new ct({concurrency:t.concurrency??_4,metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_queue`}),this.reprovideTimeout=new xt({...t.timeout??{},metrics:e.metrics,metricName:`${t.metricsPrefix}_reprovide_timeout_milliseconds`}),this.datastore=e.datastore,this.addressManager=e.addressManager,this.datastorePrefix=`${t.datastorePrefix}/provider`,this.reprovideThreshold=t.threshold??S4,this.maxQueueSize=t.maxQueueSize??I4,this.validity=t.validity??so,this.interval=t.interval??T4,this.contentRouting=t.contentRouting,this.running=!1,this.reprovide=wo(this.reprovide.bind(this),t.operationMetrics,"PROVIDE")}start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(I2)}).catch(e=>{this.log.error("error running process to reprovide/cleanup - %e",e)})},this.interval))}stop(){this.running=!1,this.reprovideQueue.clear(),clearTimeout(this.timeout),this.shutdownController?.abort()}async processRecords(e){try{this.safeDispatchEvent("reprovide:start"),this.log("starting reprovide/cleanup");for await(let t of this.datastore.query({prefix:this.datastorePrefix},e))try{let{cid:n,peerId:o}=go(t.key),s=bo(t.value).getTime()+this.validity,a=Date.now(),c=a>s,u=this.peerId.equals(o);this.log.trace("comparing: %d (now) < %d (expires) = %s %s",a,s,c,c?"(expired)":"(valid)"),c&&!u&&await this.datastore.delete(t.key,e),this.shouldReprovide(u,s)&&(this.log("reproviding %c as it is within the reprovide threshold (%d)",n,this.reprovideThreshold),this.queueReprovide(n).catch(l=>{this.log.error("could not reprovide %c - %e",n,l)}))}catch(n){this.log.error("error processing datastore key %s - %s",t.key,n.message)}this.log("reprovide/cleanup successful")}finally{this.safeDispatchEvent("reprovide:end"),this.running&&(this.log("queuing next re-provide/cleanup run in %d ms",this.interval),this.timeout=setTimeout(()=>{this.processRecords({signal:AbortSignal.timeout(I2)}).catch(t=>{this.log.error("error running re-provide - %e",t)})},this.interval))}}shouldReprovide(e,t){if(!e)return!1;let n=Date.now();return t<n?!0:t-n<this.reprovideThreshold}async queueReprovide(e,t){if(!this.running)return;this.log.trace("waiting for queue capacity before adding %c to re-provide queue",e),await this.reprovideQueue.onSizeLessThan(this.maxQueueSize,t);let n=this.reprovideQueue.queue.find(o=>o.options.cid.equals(e));if(n!=null)return this.log.trace("not adding %c to re-provide queue - already in queue",e),n.join();this.log.trace("adding %c to re-provide queue",e),this.reprovideQueue.add(async o=>{if(o.signal?.throwIfAborted(),!this.running)return;this.log.trace("re-providing %c",e);let i=this.reprovideTimeout.getTimeoutSignal(o);try{await this.reprovide(o.cid,o)}finally{this.reprovideTimeout.cleanUp(i)}this.log.trace("re-provided %c",e)},{signal:this.shutdownController?.signal,cid:e}).catch(o=>{this.log.error("could not re-provide key %c - %e",e,o)})}async reprovide(e,t){await kn(this.contentRouting.provide(e,this.addressManager.getAddresses(),t))}};var O7=20,B7=5e3,N7="kad-close",F7=50,Ro=class{routingTable;components;closestPeers;newPeers;refreshInterval;peerSetSize;timeout;closeTagName;closeTagValue;log;running;constructor(e,t){this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.routingTable=t.routingTable,this.refreshInterval=t.refreshInterval??B7,this.peerSetSize=t.peerSetSize??O7,this.closeTagName=t.closeTagName??N7,this.closeTagValue=t.closeTagValue??F7,this.closestPeers=new Zt,this.onPeerPing=this.onPeerPing.bind(this),this.running=!1}async start(){if(this.running)return;this.running=!0;let e=await ke(this.components.peerId);this.newPeers=new Qt(e,this.peerSetSize),this.routingTable.addEventListener("peer:ping",this.onPeerPing),this.timeout=setInterval(()=>{this.updatePeerTags().catch(t=>{this.log.error("error updating peer tags - %e",t)})},this.refreshInterval)}stop(){this.running=!1,this.routingTable.removeEventListener("peer:ping",this.onPeerPing),clearTimeout(this.timeout)}onPeerPing(e){this.newPeers?.add({id:e.detail,multiaddrs:[]}).catch(t=>{this.log.error("error adding peer to distance list - %e",t)})}async updatePeerTags(){let e=new Zt(this.newPeers?.peers.map(({peer:o})=>o.id)),t=e.difference(this.closestPeers),n=this.closestPeers.difference(e);this.closestPeers=e,await Promise.all([...[...t].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:{value:this.closeTagValue},[T2]:{value:1}}})}),...[...n].map(async o=>{await this.components.peerStore.merge(o,{tags:{[this.closeTagName]:void 0,[T2]:void 0}})})])}};function $n(r){return Array.isArray(r?.peers)}var Do=class{peerId;root;localPeer;prefixLength;splitThreshold;kBucketSize;numberOfNodesToPing;lastPingThreshold;ping;verify;onAdd;onRemove;onMove;addingPeerMap;constructor(e,t){this.peerId=e.peerId,this.prefixLength=t.prefixLength??r5,this.kBucketSize=t.kBucketSize??jn,this.splitThreshold=t.splitThreshold??this.kBucketSize,this.numberOfNodesToPing=t.numberOfOldContactsToPing??n5,this.lastPingThreshold=t.lastPingThreshold??o5,this.ping=t.ping,this.verify=t.verify,this.onAdd=t.onAdd,this.onRemove=t.onRemove,this.addingPeerMap=k2({name:`${t.metricsPrefix}_adding_peer_map`,metrics:e.metrics}),this.root={prefix:"",depth:0,peers:[]}}async start(){await this.addSelfPeer(this.peerId)}stop(){this.addingPeerMap.clear(),this.root={prefix:"",depth:0,peers:[]}}async addSelfPeer(e,t){this.localPeer={peerId:e,kadId:await ke(e,t),lastPing:Date.now()}}async add(e,t){let n={peerId:e,kadId:await ke(e,t),lastPing:0},o=this.addingPeerMap.get(e);if(o!=null)return o;try{let i=this._add(n,t);this.addingPeerMap.set(e,i),await i}finally{this.addingPeerMap.delete(e)}}async _add(e,t){let n=this._determineBucket(e.kadId);if(this._indexOf(n,e.kadId)>-1)return;if(n.peers.length===this.splitThreshold&&n.depth<this.prefixLength){await this._split(n,t),await this._add(e,t);return}if(n.peers.length<this.kBucketSize){if(!U7(e,this.lastPingThreshold)){n.peers.push(e),await this.onAdd?.(e,n,t);return}await this.verify(e,t)&&(e.lastPing=Date.now(),await this._add(e,t));return}let o=n.peers.filter(s=>!(s.peerId.equals(this.localPeer?.peerId)||s.lastPing>Date.now()-this.lastPingThreshold)).sort((s,a)=>s.lastPing<a.lastPing?-1:s.lastPing>a.lastPing?1:0).slice(0,this.numberOfNodesToPing),i=!1;for await(let s of this.ping(o,t))i=!0,await this.remove(s.kadId,t);i&&await this._add(e,t)}*closest(e,t){let n=new Qt(e,t?.count??this.kBucketSize);for(let o of this.toIterable())t?.exclude?.some(i=>i.equals(o.peerId))!==!0&&n.addWithKadId({id:o.peerId,multiaddrs:[]},o.kadId);yield*Qr(n.peers,({peer:o})=>o.id)}count(){function e(t){if($n(t))return t.peers.length;let n=0;return t.left!=null&&(n+=e(t.left)),t.right!=null&&(n+=e(t.right)),n}return e(this.root)}get(e){let t=this._determineBucket(e),n=this._indexOf(t,e);return t.peers[n]}async remove(e,t){let n=this._determineBucket(e),o=this._indexOf(n,e);if(o>-1){let i=n.peers.splice(o,1)[0];await this.onRemove?.(i,n,t)}}*toIterable(){function*e(t){if($n(t)){yield*t.peers;return}yield*e(t.left),yield*e(t.right)}yield*e(this.root)}distance(e,t){return BigInt("0x"+N(We(e,t),"base16"))}_determineBucket(e){let t=N(e,"base2");function n(o,i=0){return $n(o)?o:t[i]==="0"?n(o.left,i+1):n(o.right,i+1)}return n(this.root)}_indexOf(e,t){return e.peers.findIndex(n=>Q(n.kadId,t))}async _split(e,t){let n={prefix:"0",depth:e.depth+1,peers:[]},o={prefix:"1",depth:e.depth+1,peers:[]};for(let i of e.peers)N(i.kadId,"base2")[e.depth]==="0"?(n.peers.push(i),await this.onMove?.(i,e,n,t)):(o.peers.push(i),await this.onMove?.(i,e,o,t));M7(e,n,o)}};function M7(r,e,t){return delete r.peers,r.left=e,r.right=t,r.prefix===""&&(delete r.depth,delete r.prefix),!0}function U7(r,e){return r.lastPing<Date.now()-e}var jn=20,r5=6;var K7=20,q7=100,n5=3;var z7=20,V7=100,i5="kad-peer",H7=1,o5=6e5,$7=!0,j7=1e3,Lo=class extends Ce{kBucketSize;kb;network;closestPeerTagger;log;components;running;pingNewContactTimeout;pingNewContactQueue;pingOldContactTimeout;pingOldContactQueue;populateFromDatastoreOnStart;populateFromDatastoreLimit;protocol;peerTagName;peerTagValue;metrics;shutdownController;constructor(e,t){super(),this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:routing-table`),this.kBucketSize=t.kBucketSize??jn,this.running=!1,this.protocol=t.protocol,this.network=t.network,this.peerTagName=t.peerTagName??i5,this.peerTagValue=t.peerTagValue??H7,this.pingOldContacts=this.pingOldContacts.bind(this),this.verifyNewContact=this.verifyNewContact.bind(this),this.peerAdded=this.peerAdded.bind(this),this.peerRemoved=this.peerRemoved.bind(this),this.populateFromDatastoreOnStart=t.populateFromDatastoreOnStart??$7,this.populateFromDatastoreLimit=t.populateFromDatastoreLimit??j7,this.shutdownController=new AbortController,this.shutdownController.signal,this.pingOldContactQueue=new Dn({concurrency:t.pingOldContactConcurrency??z7,metricName:`${t.metricsPrefix}_ping_old_contact_queue`,metrics:this.components.metrics,maxSize:t.pingOldContactMaxQueueSize??V7}),this.pingOldContactTimeout=new xt({...t.pingOldContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_old_contact_time_milliseconds`}),this.pingNewContactQueue=new Dn({concurrency:t.pingNewContactConcurrency??K7,metricName:`${t.metricsPrefix}_ping_new_contact_queue`,metrics:this.components.metrics,maxSize:t.pingNewContactMaxQueueSize??q7}),this.pingNewContactTimeout=new xt({...t.pingNewContactTimeout??{},metrics:this.components.metrics,metricName:`${t.metricsPrefix}_routing_table_ping_new_contact_time_milliseconds`}),this.kb=new Do(e,{kBucketSize:t.kBucketSize,prefixLength:t.prefixLength,splitThreshold:t.splitThreshold,numberOfOldContactsToPing:t.numberOfOldContactsToPing,lastPingThreshold:t.lastPingThreshold,ping:this.pingOldContacts,verify:this.verifyNewContact,onAdd:this.peerAdded,onRemove:this.peerRemoved,metricsPrefix:t.metricsPrefix}),this.closestPeerTagger=new Ro(this.components,{logPrefix:t.logPrefix,routingTable:this,peerSetSize:t.closestPeerSetSize,refreshInterval:t.closestPeerSetRefreshInterval,closeTagName:t.closeTagName,closeTagValue:t.closeTagValue}),this.components.metrics!=null&&(this.metrics={routingTableSize:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_size`),routingTableKadBucketTotal:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_total`),routingTableKadBucketAverageOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_average_occupancy`),routingTableKadBucketMinOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_min_occupancy`),routingTableKadBucketMaxOccupancy:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_occupancy`),routingTableKadBucketMaxDepth:this.components.metrics.registerMetric(`${t.metricsPrefix}_routing_table_kad_bucket_max_depth`),kadBucketEvents:this.components.metrics.registerCounterGroup(`${t.metricsPrefix}_kad_bucket_events_total`)})}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.shutdownController=new AbortController,this.shutdownController.signal,await Jr(this.closestPeerTagger,this.kb))}async afterStart(){let e=0;Promise.resolve().then(async()=>{if(!this.populateFromDatastoreOnStart)return;let t=Ue([this.shutdownController.signal,AbortSignal.timeout(2e4)]);try{for(let n of await this.components.peerStore.all({filters:[o=>o.protocols.includes(this.protocol)&&o.tags.has(i5)],limit:this.populateFromDatastoreLimit,signal:t})){if(!this.running)return;try{await this.add(n.id,{signal:t}),e++}catch{this.log("failed to add peer %p to routing table, removing kad-dht peer tags - %e"),await this.components.peerStore.merge(n.id,{tags:{[this.peerTagName]:void 0}})}}}finally{t.clear()}this.log("added %d peer store peers to the routing table",e)}).catch(t=>{this.log.error("error adding %d, peer store peers to the routing table - %e",e,t)})}async stop(){this.running=!1,await Xn(this.closestPeerTagger,this.kb),this.pingOldContactQueue.abort(),this.pingNewContactQueue.abort(),this.shutdownController.abort()}async peerAdded(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:{value:this.peerTagValue}}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_added:!0}),this.safeDispatchEvent("peer:add",{detail:e.peerId})}async peerRemoved(e,t,n){this.components.peerId.equals(e.peerId)||await this.components.peerStore.merge(e.peerId,{tags:{[this.peerTagName]:void 0}},n),this.updateMetrics(),this.metrics?.kadBucketEvents.increment({peer_removed:!0}),this.safeDispatchEvent("peer:remove",{detail:e.peerId})}async*pingOldContacts(e,t){if(!this.running)return;let n=[];for(let o of e){if(this.kb.get(o.kadId)==null){this.log("asked to ping contact %p that was not in routing table",o.peerId);continue}this.metrics?.kadBucketEvents.increment({ping_old_contact:!0}),n.push(async()=>{let i=this.pingOldContactQueue.find(o.peerId);if(i!=null)return this.log("asked to ping contact %p was already being pinged",o.peerId),await i.join(t)?void 0:o;if(!await this.pingOldContactQueue.add(async a=>{let c=this.pingOldContactTimeout.getTimeoutSignal(),u=Ue([c,this.shutdownController.signal,a?.signal]);try{return await this.pingContact(o,a)}catch{return this.metrics?.kadBucketEvents.increment({ping_old_contact_error:!0}),!0}finally{this.pingOldContactTimeout.cleanUp(c),u.clear()}},{peerId:o.peerId,signal:t?.signal}))return o})}for await(let o of Bn(n))o!=null&&(yield o)}async verifyNewContact(e,t){let n=this.pingNewContactTimeout.getTimeoutSignal(),o=Ue([n,this.shutdownController.signal,t?.signal]);try{let i=this.pingNewContactQueue.find(e.peerId);return i!=null?(this.log("joining existing ping to add new peer %p to routing table",e.peerId),await i.join({signal:o})):await this.pingNewContactQueue.add(async s=>(this.metrics?.kadBucketEvents.increment({ping_new_contact:!0}),this.log("pinging new peer %p before adding to routing table",e.peerId),this.pingContact(e,s)),{peerId:e.peerId,signal:o})}catch{return this.log.trace("tried to add peer %p but they were not online",e.peerId),this.metrics?.kadBucketEvents.increment({ping_new_contact_error:!0}),!1}finally{this.pingNewContactTimeout.cleanUp(n),o.clear()}}async pingContact(e,t){let n;try{return this.log("pinging contact %p",e.peerId),await this.components.ping.ping(e.peerId,t),this.log("contact %p ping ok",e.peerId),this.safeDispatchEvent("peer:ping",{detail:e.peerId}),!0}catch(o){return this.log("error pinging old contact %p - %e",e.peerId,o),n?.abort(o),!1}}get size(){return this.kb==null?0:this.kb.count()}async find(e,t){let n=await ke(e,t);return this.kb.get(n)?.peerId}closestPeer(e){let t=this.closestPeers(e,{count:1});if(t.length>0)return t[0]}closestPeers(e,t){return this.kb==null?[]:[...this.kb.closest(e,t)]}async add(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");await this.kb.add(e,t)}async remove(e,t){if(this.kb==null)throw new Error("RoutingTable is not started");let n=await ke(e,t);await this.kb.remove(n,t)}updateMetrics(){if(this.metrics==null||this.kb==null)return;let e=0,t=0,n=0,o=20,i=0;function s(a){if($n(a)){a.depth>n&&(n=a.depth),t++,e+=a.peers.length,a.peers.length<o&&(o=a.peers.length),a.peers.length>i&&(i=a.peers.length);return}s(a.left),s(a.right)}s(this.kb.root),this.metrics.routingTableSize.update(e),this.metrics.routingTableKadBucketTotal.update(t),this.metrics.routingTableKadBucketAverageOccupancy.update(Math.round(e/t)),this.metrics.routingTableKadBucketMinOccupancy.update(o),this.metrics.routingTableKadBucketMaxOccupancy.update(i),this.metrics.routingTableKadBucketMaxDepth.update(n)}};var s5=[77591,22417,43971,28421,740,29829,71467,228973,196661,78537,27689,36431,44415,14362,19456,106025,96308,2882,49509,21149,87173,131409,75844,23676,121838,30291,17492,2953,7564,110620,129477,127283,53113,72417,165166,109690,21200,102125,24049,71504,90342,25307,72039,26812,26715,32264,133800,71161,88956,171987,51779,24425,16671,30251,186294,247761,14202,2121,8465,35024,4876,85917,169730,3638,256836,96184,943,18678,6583,52907,35807,112254,214097,18796,11595,9243,23554,887,268203,382004,24590,111335,11625,16619,29039,102425,69006,97976,92362,32552,63717,41433,128974,137630,59943,10019,13986,35430,33665,108037,43799,43280,38195,29078,58629,18265,14425,46832,235538,40830,77881,110717,58937,3463,325358,51300,47623,117252,19007,10170,20540,91237,294813,4951,79841,56232,36270,128547,69209,66275,100156,32063,73531,34439,80937,28892,44466,88595,216307,32583,49620,16605,82127,45807,21630,78726,20235,40163,111007,96926,5567,72083,21665,58844,39419,179767,48328,42662,51550,5251,37811,49608,81056,50854,55513,20922,18891,197409,164656,32593,71449,220474,58919,85682,67854,13758,35066,3565,61905,214793,119572,141419,21504,10302,27354,67003,46131,32668,15165,64871,34450,17821,2757,11452,34189,5160,12257,85523,560,53385,65887,119549,135620,312353,115979,122356,10867,193231,124537,54783,90675,120791,4715,142253,50943,17271,43358,25331,4917,120566,34580,12878,33786,160528,32523,4869,301307,104817,81491,23276,8832,97911,31265,52065,7998,49622,9715,43998,34091,84587,20664,69041,29419,53205,10838,58288,116145,6185,5154,141795,35924,21307,144738,43730,12085,8279,10002,119,133779,199668,72938,31768,39176,67875,38453,9700,44144,4121,116048,41733,12868,82669,92308,128,34262,11332,7712,90764,36141,13553,71312,77470,117314,96549,49135,23602,54468,28605,6327,62308,17171,67531,21319,14105,894,107722,46157,8503,51069,100472,45138,15246,14577,35609,191464,1757,13364,161349,32067,91705,81144,52339,5408,91066,21983,14157,100545,4372,26630,129112,1423,29676,213626,4397,88436,99190,6877,49958,26122,114348,60661,29818,293118,50042,179738,16400,163423,89627,31040,43973,36638,45952,5153,1894,109322,1898,134021,12402,112077,68309,190269,69866,31938,107383,11522,105232,11248,14868,39852,71707,186525,16530,38162,106212,11700,5130,16608,26998,59586,108399,230033,43683,48135,82179,2073,5015,196684,189293,16378,23452,8301,35640,11632,214551,29240,57644,33137,91949,55157,52384,117313,5090,17717,89668,49363,82238,241035,66216,29066,184088,97206,62820,26595,4241,135635,173672,8202,459,71355,146294,29587,3008,135385,141203,14803,6634,45094,69362,50925,546,51884,62011,83296,234584,44515,56050,89476,87751,19373,12691,149923,19794,13833,35846,87557,58339,2884,19145,25647,12224,11024,77338,64608,122297,53025,7205,36189,36294,170779,21750,7739,173883,75192,35664,224240,113121,30181,26267,27036,117827,92015,106516,55628,203549,67949,60462,60844,35911,20457,1820,920,19773,8738,73173,181993,38521,98254,76257,46008,92796,5384,26868,151566,22124,2411,15919,186872,180021,28099,152961,78811,80237,62352,102653,74259,184890,16792,123702,224945,29940,19512,75283,14059,112691,92811,233329,20411,138569,53341,109802,50600,134528,66747,5529,166531,31578,64732,67189,1596,126357,967,167999,206598,109752,119431,207825,78791,91938,10301,27311,24233,252343,28831,32812,66002,112267,90895,8786,8095,16824,22866,21813,60507,174833,19549,130985,117051,52110,6938,81923,123864,38061,919,18680,53534,46739,112893,161529,85429,26761,11900,81121,91968,15390,217947,56524,1713,6654,37089,85630,138866,61850,16491,75577,16884,98296,73523,6140,44645,6062,36366,29844,57946,37932,42472,5266,20834,19309,33753,127182,134259,35810,41805,45878,312001,14881,47757,49251,120050,44252,3708,25856,107864,120347,1228,36550,41682,34496,47025,8393,173365,246526,12894,161607,35670,90785,126572,2095,124731,157033,58694,554,12786,9642,4817,16136,47864,174698,66992,4639,69284,10625,40710,27763,51738,30404,264105,137904,109882,52487,42824,57514,2740,10479,146799,107390,16586,88038,174951,9410,16185,44158,5568,40658,46108,12763,97385,26175,108859,664,230732,67470,46663,14395,50750,141320,93140,15361,47997,55784,6791,307840,118569,107326,18056,58281,260415,54691,8790,73332,45633,7511,45674,143373,14031,11799,94491,35646,96544,14560,26049,32983,25791,83814,42094,231370,63955,139212,2359,169908,3108,183486,105867,28197,32941,124968,26402,88267,149768,23053,3078,19091,52924,25383,19209,111548,97361,3959,24880,235061,9099,24921,161254,151405,20508,7159,34381,20133,11434,74036,19974,34769,36585,1076,22454,17354,38727,235160,111547,96454,117448,156940,91330,37299,7310,26915,117060,51369,22620,61861,322264,106850,111694,15091,2624,40345,300446,177064,1707,27389,54792,327783,132669,183543,59003,17744,20603,151134,106923,53084,71803,279424,319816,11579,21946,16728,38274,72711,5085,83391,88646,40159,25027,34680,10752,12988,54126,30365,18338,100445,230674,44874,84974,143877,123253,139372,28082,91477,144002,13096,219729,46016,50029,42377,14601,6660,58244,58978,23918,88206,113611,64452,17541,41032,10942,12021,49189,10978,40175,37156,10947,71709,106894,112538,57007,137486,150608,152719,40615,7746,279716,13101,19524,28708,40578,72320,1096,182051,94527,51275,22833,45164,81917,77519,48508,5421,140302,37845,149830,5587,27579,5357,428725,248187,6326,206760,39814,32585,89923,44341,288753,284443,96368,31201,94189,119504,20359,52073,103216,179,27934,32801,96035,34111,34309,101326,18198,20704,210266,37643,27880,141873,106e3,19414,56614,167714,66483,107885,86602,4379,20796,75467,4987,5017,118857,26003,34308,114428,29198,6686,29697,73632,3739,69795,16798,41504,7207,30722,21436,36735,28067,28545,3239,11221,36031,41889,100010,19247,317673,29495,174554,6424,129725,53845,94986,7955,59676,2604,191497,19735,102214,62954,23844,11872,179525,261436,34492,428,78404,142035,16747,17246,27578,37021,33672,57944,26056,135760,2369,61674,122066,31327,19374,157065,40553,130982,69619,71290,38855,72100,92903,95940,51422,165999,65713,57873,50726,7288,20272,2081,42326,22624,81120,57914,79352,19447,1684,72302,11774,302559,161481,96396,13692,414988,3721,79066,56627,46883,21150,11747,12184,5856,113458,176117,84416,52079,27933,3354,59765,141359,2212,216309,2555,23458,196722,142463,45701,44548,28798,19418,215,29916,9396,10574,114226,84475,13520,18694,34056,4524,90302,62930,13539,19407,77209,7728,38088,9535,2263,23875,183945,17750,26274,67172,10585,28042,22199,7478,51331,66030,26774,192929,31434,25850,50197,52926,178158,4679,181256,70184,229600,9959,105594,72158,73974,2726,35085,78087,23284,35568,51713,155676,5401,27254,11966,17569,223253,71993,103357,111477,55722,30504,26034,46774,35392,36285,214814,41143,163465,1051,16094,81044,6636,76489,179102,20712,39178,35683,125177,54219,30617,52994,25324,50123,2543,87529,58995,10688,125199,12388,60158,125481,131646,7642,133350,65874,3438,97277,101450,10075,56344,116821,50778,60547,98016,106135,13859,14255,16300,77373,173521,8285,45932,37426,4054,114295,55947,7703,39114,52,51119,128135,19714,60715,9554,50492,88180,2823,118271,52993,122625,97919,23859,37895,25040,33614,32102,20431,3577,9275,15686,43031,157741,110358,1884,40291,125391,13736,5008,64881,87336,77381,70711,43032,49155,118587,70494,4318,10168,30126,12580,10524,280104,104001,145413,2862,84140,6603,106005,13566,12780,11251,42830,571,179910,82443,13146,469,42714,32591,265217,424024,92553,54721,134100,6007,15242,114681,59030,16718,85465,200214,85982,55174,165013,23493,56964,82529,109150,32706,27568,82442,5350,14976,13165,44890,60021,21343,33978,17264,4655,22328,27819,75730,16567,55483,14510,17926,45827,150609,3704,7385,272531,161543,76904,122163,52405,2039,19165,41623,14423,228354,3369,176360,85491,7122,35789,303724,4465,13628,2233,55311,118771,20713,10006,221519,45115,71021,35650,29775,7337,10864,20665,21142,1746,15080,1624,32449,10905,105743,229797,7701,3940,22997,178467,57208,389057,39683,59403,63344,63125,54847,69691,18336,56448,3362,37202,18282,29648,138224,35867,10495,5911,28814,26653,31514,176702,26550,45621,11734,4525,40543,73944,121080,27858,155561,14887,44670,30742,8796,107455,113472,56369,75581,183777,240095,133699,153299,8768,160464,26058,49078,103971,21875,71486,44888,17156,9678,89541,123019,102337,3972,83930,21245,87852,109660,287918,183019,686,10100,39177,283941,11274,24736,26793,26214,25995,77011,141580,4070,23742,46285,46632,30700,26669,19056,35951,115575,174034,56097,35463,87425,24575,44245,38701,82317,85922,281616,100333,147697,61503,7730,84330,8530,59917,61597,17173,9092,32658,90288,193136,39023,20381,56654,31132,7779,1919,1375,117128,30819,11169,40938,23935,115201,101155,151034,4835,11231,74550,89388,59951,91704,107312,167882,115062,12732,72738,88703,464019,158267,57995,60496,737,14371,123867,4174,243339,159946,7568,16025,134556,110916,38103,191,80226,88794,29688,27230,10454,76308,57647,77409,113483,66864,14745,19808,12023,46583,84805,16015,17102,2231,20611,3547,95740,250131,34559,108894,8498,15853,159169,148920,20942,2813,93160,45188,210613,45531,52587,149062,39782,28194,57849,60965,84954,89766,84453,100927,16501,27658,165311,103841,54192,207341,19558,20084,319622,5672,205467,98462,61849,36279,13609,147177,24726,165015,209489,59591,31157,6551,117580,75060,141146,277310,21072,22023,106474,63041,137443,122965,68371,5383,42146,98961,113467,30863,23794,4843,99630,30392,82679,13699,241612,33601,93146,24319,18643,32155,95669,40440,15333,34089,67799,142144,58245,38633,114531,117400,77861,188726,5507,2568,8853,10987,107222,2663,2421,11530,13345,30075,41785,118661,104786,17459,12490,16281,71936,193555,17431,5944,71758,26485,77317,20803,367167,158,7362,93430,11735,172445,46002,11532,54482,930,62911,2235,23004,179236,4764,101859,208113,22477,55163,95579,14098,67320,162556,90709,156949,3826,57492,4025,34092,87442,104565,6718,186015,28214,14209,10039,107186,233912,58877,81637,55265,39828,6194,145813,50831,105849,4974,88319,122296,10272,197216,95714,51540,72418,23324,91555,8743,140452,250249,51666,34124,7229,38592,129641,78169,174242,22464,149964,51450,14034,10026,95376,26190,120062,14401,8700,265,31386,143573,7203,229889,61567,4227,140981,2466,72052,10787,10062,30958,6099,38471,30103,23202,208101,70847,467,58934,32271,32984,36637,24107,30771,17109,73353,13650,2098,157040,67366,66904,106018,265380,107238,18535,44025,32681,144983,62505,91295,56120,3082,77508,10322,63023,36700,81885,224127,16721,45023,239261,111272,13852,7866,149243,204199,32309,22084,42029,38316,126644,104973,14406,43454,67322,61310,15789,40285,24026,181047,6301,70927,23319,115823,27248,66693,115875,278566,63007,146844,56841,59007,87368,180001,22370,42114,80605,12022,10374,308,25079,14689,12618,63368,7936,264973,212291,136713,95999,105801,18965,32075,48700,52230,35119,96912,32992,8586,16606,101333,101812,14969,39930,759,193090,27387,42914,12937,5058,62646,64528,38624,25743,37502,3716,4435,30352,178687,26461,132611,42002,138442,35833,59582,16345,8048,60319,49349,309,47800,49739,90482,26405,34470,63786,32479,85028,39866,47846,11649,23934,29466,2816,42864,31828,7410,74885,49632,47629,111801,90749,19536,18767,105764,59606,21223,10746,76298,22220,39408,7190,79654,64856,11602,82156,272765,17079,70089,245473,51813,184407,384678,1576,122249,5064,27481,6188,25790,74361,27541,318284,45430,31488,620,93579,45723,192118,22670,51913,4162,70244,35966,26397,16199,50899,209613,121702,287507,2993,36101,132229,67345,33062,76295,118628,78705,52316,34375,107083,107454,44863,127561,33964,3073,154010,190914,55967,39074,6272,31047,5550,41123,26154,98638,47110,19998,148091,50229,31329,59900,195442,19106,61347,73497,70015,682,45850,25776,38022,148951,6288,37411,232526,109277,27286,32342,9262,5220,16651,23175,46740,129438,78614,121925,66914,88710,127952,5563,21500,34521,10739,14863,191006,62956,17359,16749,67027,56284,69134,43301,35039,58883,54466,60823,404451,75743,59856,86979,7923,34273,83785,32142,7693,268986,197428,282681,17049,22346,22990,92245,107180,3357,37104,96724,49153,7683,31197,43267,82231,164276,23696,20848,188364,22309,24821,158707,1018,22514,70922,27792,45589,59709,10765,736,35218,63479,51987,24275,63588,55361,92929,81964,4658,20122,12330,44058,13065,311456,72224,8337,211229,38979,22590,138478,52757,32595,133600,8838,31549,94412,43391,90056,1585,94802,127271,6223,31889,137038,132910,2165,57616,230152,6080,10748,36737,74579,134062,50525,180532,119270,34556,76155,82394,52595,29258,31435,87820,67996,26943,183878,38007,2410,13526,180297,69856,3503,187396,167700,7838,16701,9199,56267,3661,37407,65994,23767,5708,62508,221700,67088,86978,46776,84434,32088,5612,9149,88244,21685,95151,46750,189612,2979,506311,2594,3628,40074,105039,78243,28523,6651,38058,71999,30992,12764,68261,108991,6165,26450,61961,13400,22426,7490,60890,109623,2070,12958,50355,67979,257096,7213,42578,52121,35716,65461,7516,124758,39268,302,64712,14977,1467,219452,2840,34229,11121,21602,19270,63574,8024,1532,17331,79839,78885,52029,180767,57957,6069,91265,61380,55767,8927,32881,287603,22149,35029,68876,6428,199567,46926,13412,104132,21434,366616,45060,110046,81924,128910,45886,52821,130416,29416,77342,21762,67329,121432,79924,11724,38625,81006,102033,28338,13326,3250,82056,82526,38212,21112,12382,111495,3263,7414,86274,93490,40844,30224,45212,24019,48411,71367,24941,76729,57776,3769,38114,202019,197745,31953,237533,33270,201580,255648,100798,44741,32241,98468,106931,10085,15090,170358,33154,66787,18819,69760,25061,234005,82660,6295,131975,16874,9076,4094,25005,17740,40908,19533,220019,44330,99792,50040,19619,13950,55228,24423,31253,95308,103177,184795,28590,82285,5059,3210,75525,49894,70007,56178,10580,36051,139681,21617,98736,3555,106306,164189,37352,63915,47824,24883,145530,61904,28444,11483,19837,145446,30420,112972,85939,11835,191233,2262,20705,58630,1753,148334,1197,144714,6887,11223,107667,60879,77914,4151,57417,81594,96681,169430,1784,20444,95138,254041,27038,596,7117,72808,13759,3353,126776,21074,55322,27081,36942,39547,139830,179275,4453,713,8722,71399,19204,25785,22794,23923,104114,11291,25458,102309,88396,75288,230440,206396,104551,58447,130857,37247,94734,31548,176529,226077,65159,20104,10096,66881,94191,237909,27109,37404,1520,27421,25220,113003,23423,24884,50585,6286,231877,150800,11789,3226,90004,60642,5053,202400,61442,132531,175329,57138,30116,103847,9973,75367,16452,32360,59119,21246,10191,164804,23305,61051,37348,154530,13214,5468,50403,66754,130976,50559,80515,14436,155492,84017,5472,43107,41240,2890,90431,70188,382,76234,48040,50211,281038,237007,32115,142178,1536,22761,96429,1811,31243,1679,49143,55209,17402,235054,61494,7462,77030,34925,87609,78002,9499,9027,73289,201078,101379,63544,27666,5469,10642,30029,49816,132979,95620,58086,351930,116300,2110,2043,30845,6154,11279,16727,4122,2277,27281,4971,3650,39060,61970,65951,39674,75686,38151,11370,130809,177895,32665,63725,122267,7857,39618,118483,44792,157755,178624,136994,24260,41308,22471,12404,21707,12486,30473,52781,50246,20247,39065,909,56825,103158,128603,31542,1089,41935,32744,12428,37963,84420,33134,72921,208449,42622,168151,127335,147107,46699,38216,12591,94342,85814,31423,24944,2605,87542,67473,192551,4496,56321,91819,17630,6300,256183,114569,202090,33209,35289,34897,24967,40520,43470,5344,10199,34810,14283,10381,10017,62923,49924,23233,64539,13051,35686,19698,11570,135555,120868,44924,87065,52318,52335,47586,140906,245885,109834,78668,9065,46990,25258,72022,61243,40838,4545,146387,10537,11557,17470,36930,68104,46711,24264,79401,81043,18225,120488,24746,84338,81652,28266,13776,21878,46973,1047,230465,73357,95777,24973,210160,62210,58404,110633,169651,6937,41870,9909,26822,191062,76553,27519,96256,239070,2478,205678,67955,58532,20601,50120,19148,78501,195724,110740,8249,109665,27446,30568,57631,31425,49752,32820,65504,50079,3663,102256,219898,23849,211315,14645,4359,91767,9528,12449,49366,7941,49763,107848,8930,27086,50686,9744,10447,81935,39513,46514,1670,29229,6172,22312,137280,97759,9806,14445,22976,56458,73391,34983,93760,174219,52573,33149,59747,2429,136277,75123,165263,91040,7446,57632,48633,97140,246081,84766,151684,79918,93268,120346,54059,54875,77858,32996,103590,45276,11968,19600,25849,17159,132907,42828,16817,4913,99462,103303,27395,5737,74184,20749,21160,14377,77062,131403,158735,10999,27799,77785,9320,34366,51593,61070,33746,47048,29268,36675,30262,53297,9832,82e3,20188,122292,39917,7331,18160,68301,185935,134830,15031,4935,10004,165845,185534,46923,30109,44134,122631,18874,22903,112790,26561,18549,348902,82871,140345,255565,135390,63556,103747,145055,179600,145662,296111,61661,211987,23952,52342,126343,48450,32919,44277,82185,9591,62139,205363,376969,394874,108461,18040,120885,14798,39863,16571,16794,58271,81025,55206,14640,118656,6361,44092,85970,6262,153863,108244,180200,72264,79947,38044,10050,5735,61221,80712,5471,115689,11391,11661,184257,20010,60116,30320,19327,134598,45455,27542,18004,125092,452272,1549,91523,46567,180063,156026,2608,11174,58848,37788,65907,80194,30490,5786,40775,119519,106241,11323,156297,8425,61495,2617,29675,2425,59886,112582,49142,59618,4863,50597,86710,50650,168632,27693,85641,83643,18993,25768,84284,28090,93592,36627,312804,43381,9887,9402,100931,97165,3311,173330,66805,28935,4963,184460,3201,78102,19126,21607,37496,24938,22615,16153,32862,134792,153318,61120,6067,2812,12826,12792,23825,37559,64662,202250,102694,155488,85881,149193,46233,65383,15521,106982,11358,176786,25752,39717,34208,24510,32464,77742,39371,72028,138229,60688,71386,102834,132477,2208,11548,63670,271279,28351,30338,38620,32491,99845,143885,152266,13252,2825,178663,108097,1775,78201,14897,113573,163346,62292,171129,22183,96598,38733,64971,166776,117445,9968,146393,44677,74867,20908,97328,12761,25656,26785,9148,112344,26115,99176,110121,22437,49547,6180,79320,5835,31392,43328,33377,75870,119860,69497,80273,7325,155219,43167,111173,28347,20222,3763,71752,55041,47252,14618,28088,15012,97805,194698,54636,2036,41349,6173,96604,61530,51859,43782,13361,24334,22668,24792,7070,23441,16789,3209,36211,208475,26242,32880,122181,182407,21444,31060,88459,29929,77907,12716,10934,97005,20599,31690,8403,58445,30303,22700,10336,86731,103115,337709,72556,46788,112566,47684,67089,53548,36874,56487,41387,125985,26893,40071,106683,73712,18787,40105,72992,67246,137276,50802,36790,70328,138827,22466,39263,183295,29858,50975,9322,57397,10654,24364,30383,55799,41600,23584,127295,296610,129078,143558,244131,86397,36049,1085,80677,3820,108139,5476,34767,24683,7758,13060,7239,131671,250593,59556,103392,29810,4188,252323,39404,116877,7651,43600,40338,13554,157253,39196,25978,144387,61211,234,50104,6129,10449,93777,9240,356378,274148,4439,72970,3724,147770,78680,62570,115877,40027,40547,36817,224392,64609,34795,165027,67440,2477,37206,23431,50754,164797,46018,94995,170982,27051,7957,22767,3674,27900,56419,18930,60701,41302,2692,84749,339721,61996,111094,80221,50129,1045,8153,62945,19202,8250,37208,37418,32560,79477,41106,88569,33963,36693,5892,30570,1581,66471,49647,11922,160717,29442,5643,114865,82962,95982,132098,22633,22838,94726,54556,28566,205039,162340,33216,16849,35847,221339,94851,26533,71469,1805,3804,12935,45483,71020,36310,65381,192960,34240,35165,59773,1248,46954,155332,96864,4246,388800,16129,57133,74592,44807,442014,38203,42574,80818,91592,26377,36424,65760,977,77387,22628,147610,28018,30561,98454,6969,119628,63648,18170,36854,26601,64018,22027,37279,51395,152934,21153,9430,58760,194742,5330,55115,34158,28917,174111,13171,122326,1526,43896,66094,25325,4234,148354,11450,275,18999,112191,44365,22723,68409,8733,57746,96565,75007,14196,108844,29475,88599,177563,100792,106156,86323,93726,14248,135341,194131,40126,47099,14779,8272,39597,95983,171398,65882,28052,10393,47213,40689,22120,72212,106829,34964,109146,753,648,21660,30047,17527,181025,5619,145357,4085,216883,9359,186951,24779,53931,24545,36197,223296,62628,168101,4243,107313,30321,26642,13049,51059,31027,107912,807,73550,26551,84369,122422,165872,49754,74213,234264,33151,52014,33100,87183,22365,52500,40013,23302,5652,72723,21404,26107,48434,587,94049,168493,96418,32871,70860,31709,25128,443,71597,166253,15670,70994,26341,133675,28280,75491,54756,47955,56028,26182,11952,113272,472197,64640,110753,17919,337,50642,22576,142,87371,53391,93210,126694,15285,19642,85667,14148,1506,42092,52962,33243,11970,20734,135843,57044,58880,13002,219134,22876,64754,232519,4257,43120,321573,24799,64526,124728,52579,81472,70831,276848,17403,74359,23021,182101,74597,23744,148267,12055,7976,5349,11772,67540,167347,65318,18720,127832,108238,22828,90233,9987,259080,118185,73209,79270,13775,90100,137742,90799,70569,15699,19961,9087,67475,57872,39731,8810,134897,131868,146849,19898,3334,2281,167061,91073,60356,467742,74712,188,53179,137679,92769,29241,9537,132595,80119,1041,88962,5976,40171,44911,102859,139059,104558,98987,47761,19272,71472,113864,175377,73338,10857,23402,23758,1591,139864,5644,4076,118760,16427,134198,18853,20291,100849,37423,22038,36677,19071,195521,57445,11069,31869,55718,66882,148490,44,41296,75242,49704,166810,9906,20943,122258,49112,105667,15969,10344,6408,187694,21399,72742,58970,14867,14376,81889,41856,23225,15042,56993,16074,131389,74276,72407,53875,383108,53597,37363,68993,44854,122548,430927,198279,38430,80409,12245,2981,628,2818,17760,37437,238229,7968,46892,2200,3730,34190,65983,37959,112291,87850,70827,6522,20750,73913,111621,41652,19587,2780,58668,25916,85259,18200,168962,95781,42445,102050,7776,57662,103313,47742,96358,41964,66174,100396,29069,204735,19679,27978,7479,40264,22534,61183,36081,107436,58223,14680,23002,101311,24716,124108,12908,5646,31750,40380,14215,232799,102772,14122,96775,61398,50917,12096,149880,67833,598749,124194,155871,49216,790,14677,65319,56917,7440,145744,95701,12206,49405,129269,76199,45732,9767,11058,9047,210885,11051,7392,26307,2130,8132,147526,20802,232698,115660,50060,59789,57344,107623,80343,112676,23291,9866,160971,34032,118291,15719,59730,164911,28975,2659,58046,78480,21854,66209,53863,109085,116045,29021,46481,107552,22130,18764,70254,31272,11300,52460,43933,84738,20721,53869,190840,79673,105300,7561,321817,66924,13940,33281,101046,183181,32176,71878,5678,62924,79535,56646,40303,19559,27703,93042,73368,42187,3670,37376,46440,7023,36816,109628,20680,5940,276440,275233,170848,112093,136996,14984,20226,111441,77693,112960,48577,39370,55707,50314,123404,26570,54281,61372,123391,4857,35928,246740,132507,106646,44241,7196,92258,9825,37688,51197,303141,5590,15476,132986,10955,85782,34486,26696,7991,28813,18858,39546,11703,11365,38185,5716,93555,11925,40121,60002,6985,10976,171384,3887,43394,13337,56346,6381,252336,39573,75042,53711,1028,31781,44295,95925,131713,7214,68125,43571,70954,213234,1628,8760,13391,65485,17320,56038,1710,25248,60803,57399,19839,3870,326,281556,50945,72400,21460,316244,75619,56246,98775,481,13513,55765,50427,7388,123519,32929,57908,27124,61316,101097,57467,30228,48792,10788,20402,37318,50526,155730,34456,158065,145305,17832,43733,64052,4506,35072,205355,177028,184004,187081,68616,35938,83703,10367,36892,93186,260137,51934,89970,4985,23445,26755,21558,7948,78741,23376,124405,85594,68596,57536,49351,12619,56593,132668,99924,109728,71844,71935,196018,65464,17617,14987,89701,143773,33997,8687,22701,33258,2914,4436,72108,85610,9671,49067,2327,82988,1361,1672,44033,35777,30269,24057,10605,82236,616,15793,13919,47249,112086,116698,9484,80207,90574,33304,68624,93127,56101,42210,160929,4827,38995,38095,4701,125119,5027,33680,9236,231236,14135,87837,23318,70261,78893,30151,81482,14332,1084,74256,27532,46644,79185,3148,62615,6981,55672,31668,36825,1849,14536,37446,14738,23779,43058,162749,72199,1168,21346,5592,85932,85302,9668,18351,57135,150360,2080,228015,77953,34670,119302,151751,31009,106725,84265,45214,59289,74178,113071,263206,111009,4021,44449,188119,192629,123592,392506,292847,114487,12831,205858,9852,20780,79648,75767,357014,97721,18166,21005,67950,33226,204009,16536,2987,11335,66717,144910,47950,17262,55060,15063,2934,51038,26775,178497,66008,3427,49433,128592,20036,157553,63861,3089,23015,51210,28696,35933,49942,71135,231518,99620,17248,21835,176536,20676,16944,38700,165831,233253,295625,36723,13023,52745,10907,19423,67972,125868,95473,82875,1183,108455,52685,33417,64095,21433,52438,33191,127809,44505,211823,7810,2752,95548,162031,7185,91196,47563,61721,33359,17897,23682,42806,178101,22874,49707,199897,75419,82456,8618,11171,79712,116847,18783,44190,46564,5346,59046,95032,7893,14916,3214,26800,24172,121453,34362,10250,17408,18888,4840,68696,22831,13162,36005,32512,14800,62357,41723,45046,27247,37486,5372,2564,34261,298500,66509,133920,89138,31305,117697,19097,108304,81386,84106,23802,46411,63304,946,51417,41777,41041,19501,115864,60743,294354,37955,94165,18116,1156,17937,20645,57114,90804,58042,48643,92288,9861,2557,88546,61333,101008,12853,5148,87856,4152,144503,73841,18718,9789,147565,10846,42085,12789,30223,8993,56352,67203,2448,28215,6052,23540,126319,75933,36689,80235,23231,23561,21383,38800,77548,102798,21234,31468,158608,46188,63960,191679,8051,67014,11185,170078,42186,28827,34777,41930,212079,12421,34750,24111,110344,73918,45171,70826,141949,40063,23979,24254,37309,26724,27179,24718,83648,54938,14591,17425,29525,102675,48975,48654,12316,8929,60640,41709,50168,63264,89812,50716,48632,38755,138583,160123,55579,71829,24230,233277,46322,39650,166388,34718,24108,98252,7031,106695,62498,18258,35062,217827,78731,34824,33354,19520,60852,2432,60224,8587,2836,62955,702,20227,42285,40560,95592,62486,11094,53035,143291,18842,46177,77994,1770,9657,107422,172915,32655,128716,25886,25164,156740,119928,165875,85817,11007,89110,33956,12652,65156,180266,8494,36889,19958,20955,96,1264,118288,135769,44754,86671,5632,19026,168220,289120,33569,93821,66144,70635,7687,5642,2714,55445,56636,71545,184182,93133,7332,37389,12643,52315,22729,11014,158742,17050,152889,50178,34601,41945,52136,9948,26914,63548,95721,115951,40759,8960,158258,38938,49232,48325,42234,81523,253019,66128,40978,20048,238048,38760,62928,122560,118532,43687,137472,163689,26680,9878,17448,51035,16211,60834,36749,29178,14241,59868,150086,2305,26477,42422,34342,165341,83279,33894,14257,29928,12743,13957,125571,89134,66712,10952,16507,147839,30146,7249,16565,45399,39874,114565,215780,31990,230881,171477,102,196546,44538,10880,84948,281705,86651,10617,31395,2342,453658,43569,60561,132901,21845,17727,58556,258242,22262,58728,4008,77997,11806,37431,30599,81375,109137,185787,114085,217292,97453,169085,30593,60212,11544,102056,65580,2384,91655,4855,95725,7295,157994,16228,20669,53276,141590,105246,17334,25440,76067,17967,39321,38911,11362,28559,63807,21627,26468,85816,40120,1025,15234,58319,69516,66512,124548,75845,78873,22137,46681,51242,85683,32909,76747,35555,43396,101465,1765,73094,1077,2962,39028,66777,57831,42048,15828,13962,36041,63657,52412,5242,58846,2141,5506,219012,134451,3936,182230,17558,17153,152237,22621,49377,170216,35257,68233,65374,6510,11126,212151,7184,2480,22517,3437,33073,30156,16557,3768,55067,86829,91e3,12350,148650,66017,79424,70885,49066,28250,21369,51213,34533,11510,3258,18176,18465,84413,6315,36411,163765,4346,356,107618,598,13727,285026,162695,8749,14583,7132,63521,184253,32378,25991,5604,30961,53675,4874,84693,5086,34811,26978,56564,7904,33519,51221,113942,69253,6664,125563,22055,220680,102008,742,51930,19494,176108,44424,35123,13025,75685,11759,74335,22250,181453,131147,16984,132115,154311,11991,76452,52609,85351,196,30969,9198,74919,2529,56838,71779,29187,116304,3504,62330,41190,86153,28393,254926,104228,105189,13264,84359,3574,12415,8534,57147,10175,188174,59504,60932,66318,16407,107921,17638,99103,49278,28403,39786,145865,8462,3558,43406,142271,29139,21989,36552,93955,72365,7176,13556,106185,37957,321774,17782,129017,51154,27938,24952,1935,39366,2791,33489,41582,56078,24558,9311,5449,218786,27808,190429,68013,36020,86003,29735,3404,87348,119357,115714,2324,86796,81973,40992,43376,93621,28784,16808,36367,2517,2909,191926,24978,55303,53308,205724,60068,3098,21375,64784,23949,26579,63121,12319,80145,39967,97861,6757,70143,67642,37082,34698,69140,122883,46151,62187,80934,429,19437,135071,137885,222647,13331,154065,327,61778,74257,40116,37493,14855,85079,237641,42342,102164,199965,71204,4662,29368,5042,113914,122214,8955,13149,102503,43173,5659,163787,69003,307084,63392,171080,21390,81918,86666,36622,24126,28887,5736,28054,207170,163428,79891,346467,95363,38980,111806,80828,9200,19288,294896,114468,87405,111715,141705,7015,72754,68463,48738,243147,33397,101210,37051,98801,82847,20397,4940,185559,18716,54718,83491,11725,40803,1128,12128,23060,5174,7745,67007,46701,1571,27807,180186,256996,18975,16837,7877,212758,250379,15440,87954,57755,24719,124057,83461,258,50864,8874,29038,71289,31627,15429,9005,4061,113851,107716,82819,13651,79656,117851,17539,111446,12938,39724,190787,4352,15402,21070,62708,8539,23777,73853,13552,38810,86117,16285,56400,1718,75342,142863,29033,378,110113,180321,32586,23606,26393,160984,207987,23783,8406,16904,24596,47274,11693,46539,60524,78595,48423,31718,20170,9009,146268,15183,191060,172765,1349,138436,37365,10970,40509,225817,20021,70394,152138,21541,66559,66544,89352,2725,17258,91345,7313,3815,115868,8660,40362,4071,103524,39388,118275,21950,6549,38226,32754,209574,29201,43495,18028,20296,40597,18370,47520,202450,24134,2219,8195,69545,38041,136934,46374,19041,159811,84865,58620,846,98749,13569,30714,97246,32186,4479,27355,92973,35214,151491,75963,37631,1561,27200,238083,23182,60756,12291,25766,39355,102333,87362,65741,59906,19538,201575,48772,102938,24438,292580,39964,66366,9004,61379,50548,37622,38732,28379,68180,76622,17488,69849,5963,7219,48143,43413,55358,540,58691,29506,19245,52193,48621,5518,13048,118625,44755,191081,42061,89197,2259,60665,66994,71210,51232,3585,142096,55024,7892,8345,58653,463307,65658,64319,137941,136323,53499,12746,43492,6978,95163,29925,60175,5128,7352,41463,184756,121146,20473,18426,4598,5309,54580,14277,121151,10691,56711,43880,63409,76682,11830,172218,264898,32632,66536,81062,31649,25788,92774,60222,11100,63159,9432,224657,25240,53613,152,138620,163829,2397,85345,12501,37507,64932,38575,43522,65789,80198,78796,35226,3851,108891,73311,3060,28391,93671,39663,46142,30982,66041,37281,68157,26553,71872,81142,211527,39747,118119,22695,2859,11066,20232,168911,7933,197005,17066,111071,44434,133994,120798,12766,227798,45756,132852,29917,36076,55352,65281,129800,41958,18944,84678,18580,168093,132621,39997,54092,27740,32354,3770,114118,103242,43918,15899,18574,145944,3190,123469,219903,24169,100571,62403,16776,92779,14535,17168,16475,14304,37231,1712,28218,242754,61688,28980,1318,51359,222657,99200,67989,31772,23932,35351,201251,49041,27306,19128,40135,3986,77333,19649,120683,151927,21081,7076,78375,77501,101599,8011,89585,96715,58179,5378,102138,106793,26051,217276,4197,16297,27014,46721,13322,22806,5278,29629,70632,9647,71519,58818,40603,128530,8903,36770,56900,31483,26935,43845,34265,34920,87658,6114,84767,64250,47318,50720,19264,162514,33357,13117,6705,46696,75032,71054,87004,42035,69138,11903,99854,102328,19611,34525,69312,6431,49842,101600,133178,108751,41829,89939,225664,48916,99556,9195,130387,5960,36857,116724,53518,94002,39077,53996,6945,22261,64291,8314,152785,57588,16522,9091,5048,87671,35441,39509,1945,12423,158923,178413,37549,14095,1475,73188,62878,4819,24012,68534,42606,4010,120809,57497,59564,101758,103718,32701,80116,12345,95834,46918,21468,53213,15665,31200,3867,5140,96013,250744,21016,10069,13968,35449,180829,27683,39704,59956,22893,3115,26293,32785,75934,62445,141162,62720,2018,83638,19949,114012,95006,3330,99829,130935,309272,9565,55874,121727,37017,23586,319858,40970,27602,8625,112329,61060,100088,118525,25922,16232,1907,60671,51583,44553,80993,5262,94679,8676,940,20736,11823,3020,16476,12340,152600,97416,3703,25744,66826,16245,16876,46446,84798,74227,176020,45192,61955,75496,23946,23626,40372,26036,6149,11822,30582,16541,41914,82385,232823,40921,80773,14930,3631,7517,39619,4348,36180,126106,138939,62611,1477,113512,47321,25052,14546,118881,29060,23589,128322,36795,18401,137921,104699,267929,36194,172791,18113,4766,188215,30083,332586,94089,5805,77909,22194,68234,154976,43220,40660,70001,184893,138095,11128,103010,22663,5108,212615,8485,5565,49222,54614,26530,42639,16319,55062,152662,105595,21114,22216,10294,68158,10436,86950,7206,62115,3977,3657,59874,456,118617,18156,106663,112229,80992,17442,8217,55551,5133,34344,251927,51153,39364,201321,7816,66803,23057,156724,145664,14276,95705,979,2796,6875,13429,212525,50602,26276,28284,3424,19465,52397,46963,31420,51399,206476,92317,48851,637,100820,83349,10317,60227,21972,6908,282439,32857,224767,95629,83882,42106,87338,69757,29840,68709,37665,45244,114577,49188,175943,54009,186746,106158,70168,3358,234002,50555,9221,129338,9562,20118,32923,78479,118280,65752,4977,10474,102174,60947,129006,10570,83451,8598,8078,159367,123785,80438,16742,5905,5281,181513,42402,6977,163136,93179,42191,14968,50421,112401,105440,33456,57347,121611,4221,94954,36517,24046,27796,6255,33394,72990,135408,116627,1233,57874,25654,95419,68156,401399,313338,55208,45573,93124,119251,47200,38196,11909,130667,45391,73904,64964,167846,4137,115606,52036,62214,7969,160925,7187,1132,134835,40309,73195,64494,80472,444841,61111,26500,45323,40743,53625,52797,22659,15631,29739,36706,28841,39147,102836,26794,10536,14845,87305,45874,12241,127587,83833,57183,79722,30844,41304,84655,20825,92500,3722,25655,27811,10157,81634,31362,34088,92487,70123,22190,185100,72658,139035,192523,88241,2078,230490,44528,85638,100198,22088,29982,291233,241062,13865,4445,137791,37835,107218,31726,19718,38234,72528,23046,19177,66695,5109,17251,28077,5617,21554,47839,72425,133825,1486,73065,181275,141508,21768,62971,63082,2512,34200,9904,120309,6392,91243,68416,268253,41199,116757,138551,185526,41246,28986,4093,19057,17295,4148,245766,122360,35356,112075,20301,75441,10998,7977,19769,62922,937,63547,100196,26427,157820,20983,236696,22935,8140,90315,156004,47204,140973,7726,45097,52725,22636,23436,257282,105247,522,88389,216031,202204,46812,211666,19693,68828,81691,45925,11256,30292,372,5236,167826,88328,232776,151611,5360,82104,18841,80393,25465,18285,20320,72377,31730,33160,45803,38715,27705,37379,24163,18360,103586,4015,32305,269494,91252,20080,36567,54650,7797,57073,12650,31164,42209,6375,261663,105528,81661,106002,2800,5375,17247,43151,4442,15727,194619,100855,144898,62320,78465,39929,16454,1967,28311,61363,17219,9395,8745,121445,76939,80385,162380,22009,54191,44248,16299,122830,48151,74429,78291,64755,14238,44966,2511,17712,67954,93583,829,105899,49935,84750,11591,33185,85447,42717,27409,208542,28965,62052,52525,5597,25694,65594,16343,63224,276188,12475,9331,127507,38522,57287,24128,133161,79723,105548,133695,48917,27558,43278,46520,13778,141954,110785,83366,17715,46317,105763,66298,147013,41086,94180,16478,220447,44611,730,19722,78975,117889,125643,26254,16574,18480,65006,15806,38549,246418,46052,36056,8440,34984,30170,3163,59800,4458,115442,4283,41970,33507,104078,1653,22,121158,276486,3655,6338,24048,133421,23641,2161,24422,36006,8086,10675,181474,12307,29514,59143,14729,52509,87128,122470,19446,80852,33314,24573,119864,14237,9652,57779,6612,51851,15284,98871,90581,124466,156831,21190,22015,71380,161906,87247,69201,18392,17908,108470,72962,40719,14338,17911,95260,43339,20610,78916,20710,72451,11315,31448,17263,58853,178878,48111,116002,45497,80506,82605,85880,36300,121755,25215,36118,301929,88728,405223,276136,553,34704,212438,49970,78329,922,20711,25036,257130,38295,145369,18128,15385,30829,55656,48345,8012,3561,28004,122041,192900,58338,112508,41085,29976,87040,47117,23905,4336,92061,138880,97407,42083,172121,6256,25192,172671,5,93568,1420,12677,31605,56743,40620,6015,78415,231077,31298,80026,13902,19048,24924,170586,32955,176119,87859,36731,6773,27711,24658,26475,115216,133207,93250,95820,88522,8317,5714,124047,55219,86860,19677,23961,22928,162209,8904,225992,359835,56084,96201,29392,96558,86071,93643,55114,13347,8183,95129,82012,2017,123336,34219,115554,157159,47747,101684,41008,18735,193781,104151,226906,7552,179874,124113,31159,21162,44010,14771,51268,166128,31382,73124,77438,92830,205709,12113,1292,38937,13114,1334,2118,15597,69581,14449,21934,76618,48728,67038,14967,51495,24243,87736,147249,26720,11119,46063,43749,5843,44147,152629,133428,65703,14269,45604,57982,28672,55616,45957,8438,95433,37698,220862,132034,39456,61870,4161,26501,73560,56418,9845,4654,20916,10456,88920,119358,9015,65931,96507,48029,38534,21676,109081,43078,34943,25089,6131,28766,23665,5477,10255,16695,67,45778,42443,42770,29534,23733,100513,62617,42630,48746,14191,43753,50295,26007,8792,57243,43119,54725,164253,58250,112304,131796,25165,4651,3188,24831,47748,3705,19540,13211,102095,5593,18699,23666,32005,117571,33541,60584,74573,86311,99443,25172,27222,168938,7143,11853,53560,18834,19960,86522,28217,53266,117700,72989,34323,18721,66450,34346,74056,47217,202002,46269,9429,68582,75458,37823,82843,96652,32549,145144,27958,19820,158086,31955,201406,135379,31207,192545,12950,51704,9094,248263,76147,64028,110009,79407,89345,99284,223492,47966,26848,15359,201137,2861,110507,71231,72297,31851,118777,71039,151051,240855,16333,50766,14727,7939,4149,80908,418780,88378,59276,1327,7284,38576,79814,65820,42199,84860,49574,62596,12396,70598,40117,8648,7994,16836,7630,14047,359699,106878,525,29037,28064,13380,11675,50669,74216,103539,180314,27449,56299,172344,19274,7301,246099,32043,19422,36506,129317,6806,30140,4614,46639,66926,932,86600,6322,27847,233103,10541,39025,34887,3517,12972,26220,2031,66561,115015,48658,47596,12714,33845,3893,16165,35237,89983,14769,11962,147224,47018,29977,27979,5552,82338,86023,131368,1218,24853,237840,132193,15455,40873,3668,65351,53388,15229,59889,272245,47934,11858,34347,18038,90853,86981,300602,19343,114181,29362,84921,6095,106059,79472,38015,1206,48741,6208,8e4,21916,17423,6002,108083,24479,34931,56661,9511,26995,100694,163853,35997,81254,58321,18919,171890,86877,91341,74503,70477,53412,7027,59281,39892,131302,5864,15947,61301,67466,162369,47956,27874,35624,282324,21270,111847,102548,41482,30955,116737,28264,8592,55458,22301,75090,29821,30697,51709,3041,19208,8038,24634,30467,87509,126428,19389,18814,152686,20701,83474,45832,80891,105808,11378,153223,120770,98186,150633,49838,9141,12755,30962,5260,74490,21256,31678,65062,33326,289838,187831,20595,89768,2805,58535,10844,70085,12090,2451,138068,98544,24461,4511,6754,41684,28203,3383,65355,82833,30161,83924,234361,128424,28921,222594,33975,125491,34069,11508,67464,144226,41850,98703,34371,7901,21254,38398,65651,23549,53883,213340,123269,12028,71764,177701,28758,2623,68395,11549,15232,68603,9660,63116,36079,57093,31198,20475,48467,89984,35619,186847,107469,31389,43631,73867,41949,68841,114250,1605,30564,63403,17588,27680,99533,12641,70325,50428,73426,78379,11855,91651,72081,91720,60198,15743,12065,83398,140046,6761,46598,45900,5068,886,62448,148968,37347,19405,9680,15819,43496,63370,75667,163700,37639,3633,22774,34341,183131,134335,37200,23915,7054,14194,12970,26438,13350,285521,25594,8219,104410,91039,168804,138480,149734,15907,33818,61132,60082,4622,110187,56736,13551,73571,3945,73463,65498,17758,263266,17593,2710,27585,54469,38200,45367,63754,28881,3473,12791,98287,31895,65787,4463,94536,24951,36332,59901,28803,52130,86403,7668,181822,74831,18977,9850,177206,145485,109798,7292,31421,26280,77211,58511,12507,127004,11113,147,8729,56208,43066,79926,129937,31345,83947,39915,46146,98763,42566,1337,13192,18323,105163,80570,117753,16555,72883,11077,159438,40764,70933,83329,26066,12276,72059,21655,173836,126713,69454,153482,91585,70644,102558,110483,6764,127864,190133,3961,101798,20945,71138,82402,90884,69669,44753,923,16939,59700,164258,25969,27082,31399,43846,6306,246093,51342,6153,151581,202801,182731,56475,162188,89426,141356,14355,121815,27536,28023,65257,77523,106668,127314,24947,12790,38796,169698,23555,10725,44573,183083,42088,62716,43265,105958,32050,44067,50118,1668,3874,6243,318411,16599,1691,94999,52378,28671,216728,123258,2059,34969,69225,5913,136280,171443,141515,91662,22175,135282,80020,92270,1663,4808,4482,3495,34691,5226,109830,108512,17342,107488,11606,123190,100247,29666,146527,113014,15794,30894,13224,39585,243192,22351,9903,7836,47699,11078,25468,122291,48821,26780,122679,75521,81450,630,4895,92900,55074,74293,17441,3563,111657,103102,51613,12318,52370,36191,68245,34269,40445,41354,122901,168604,182500,62012,42557,11259,24428,115113,86345,12362,3909,78430,86852,134602,20459,47853,93879,22577,7659,3688,38555,13349,17381,56715,91639,12493,10895,92438,3142,37057,28928,2004,36427,32268,34222,209974,10432,67436,41989,173518,107930,27079,62729,30908,55558,5828,45031,14902,53546,8204,144263,60255,14520,88212,86582,109589,69356,8064,47449,8505,66558,16886,4844,52817,111260,215129,12941,91118,650,20770,6273,73089,40618,62790,2873,35002,14023,97208,19386,102646,36993,143736,135457,35385,113601,17893,32627,84439,100619,56016,6581,57264,172160,45452,111710,203627,70131,24100,322787,1996,35665,70078,22358,90922,83658,4097,63200,58499,14542,99153,52159,6615,12414,63415,31986,16823,1579,65405,137809,8841,16898,48082,259,33014,42375,12260,179850,73667,91389,98882,29532,17311,326251,41092,5928,20742,44964,48019,43505,9317,49265,6643,192712,48424,163487,19861,20113,70848,31928,105333,23685,78563,14638,54755,7158,24142,44018,20774,125255,20331,24280,10163,1285,2336,39851,4299,117269,46714,63816,87779,159624,11731,9971,990,137317,108831,50994,74554,162680,23640,131597,146962,170620,34829,91205,21184,1913,63616,18427,93136,156592,17519,67565,115882,138220,78622,88535,18115,2711,33554,109492,54298,971,24914,25863,36363,45715,27099,194995,14299,178181,111488,72395,322385,157719,130787,11897,81843,83999,11369,49280,118604,40922,61332,110343,53407,75639,40582,300440,54722,25637,13694,48248,48278,194521,56203,52779,48783,72627,10953,376,16733,280238,26351,230789,15132,25168,137270,3588,63704,73376,94031,74284,19443,159557,9697,39901,13351,119050,15406,146455,3460,29556,75195,37673,102524,92329,47289,98413,15311,100684,56345,7116,95480,11590,7200,167,23610,58426,17730,136656,27944,53151,2701,8824,103124,3017,90744,113588,53216,79736,65940,26931,498,29568,80540,143543,21292,1740,59268,16561,180816,42323,50174,40890,52866,10703,57169,4700,17191,4424,93511,49698,166650,26972,48631,165169,82879,69326,202970,4007,2376,231325,139592,22119,62851,37504,68816,58345,67398,186643,43331,277416,53749,15746,23102,17432,4793,151138,48822,54265,48203,198688,14305,54287,2291,18018,113378,123260,7180,97549,87027,120085,2920,76080,8190,102005,5641,64580,14955,59802,54028,58884,19367,81779,412567,85957,97053,103637,78871,29364,27637,141728,4767,30686,112738,130146,42745,12730,105040,14844,232,210944,36581,152317,135543,29744,3129,55647,58149,46319,27265,17499,28005,59948,7170,34138,5702,293047,110892,408,91760,218674,18469,46095,81403,14389,4610,35672,73060,11006,74848,104820,118143,190357,20043,105358,141735,5115,27093,45924,123073,52599,29433,9616,238350,78610,24851,58858,26769,31969,24613,18294,4982,32735,39639,143563,112073,202205,12567,4873,88601,44897,81503,101648,81362,34662,85277,17574,48173,21435,221188,40215,39576,80786,26544,64668,81841,10731,37733,247986,149188,127703,495,18382,54388,72446,43071,30974,198723,89608,41360,190,33045,8386,31658,19992,237838,119015,137622,50890,100913,6460,116233,267230,26621,104129,65114,14190,41542,14888,85962,23342,23041,26453,43725,71809,45186,4770,46452,53894,56616,221286,18973,9038,109299,55365,19366,26863,18808,60909,69353,41738,83463,12100,68561,72860,3980,13796,49340,12332,31311,27418,4255,53430,18976,45523,510,14224,30477,26581,4530,3651,101663,139840,22709,150861,31996,63923,120623,262522,3076,10528,2929,14672,130238,18087,9816,121894,100308,25085,55111,14565,18952,53293,2042,369988,23674,61789,133529,28783,108293,35477,47119,36448,71049,40015,33055,78598,198442,1833,159937,40654,77444,189245,113153,8621,18599,38553,35223,166072,2375,11659,21786,89523,6032,12116,63046,159398,18454,3678,32521,47626,11411,103527,38896,42946,15696,26370,10185,8413,37080,165583,4331,63555,14907,72220,50056,6623,62236,36565,49783,10049,17503,100581,55951,146244,24724,9626,17969,25524,109300,173965,99994,101056,46459,43647,53737,277968,8347,123521,74858,33829,44762,77574,877,81377,222525,123532,30602,43881,53145,2973,16284,81940,61281,127044,63620,9875,14756,114829,19032,9202,52759,119141,23928,120551,19607,3599,33401,76821,73233,117430,39968,36539,7071,5446,121735,194059,15206,45283,6706,15603,65615,1207,165723,92275,34773,104447,8396,32353,205240,164323,13600,60555,79205,25532,22907,33410,57480,107111,69630,32137,47832,70913,33161,20321,2371,117348,10714,86246,1625,11763,17900,268,78457,99175,97940,101092,86660,32221,14041,128504,125080,53744,124263,31017,13897,403,31859,21964,5633,111630,5547,77329,17961,18241,84995,25984,12983,67491,62168,47262,5241,297,51191,7351,8967,147212,82060,16821,782,11033,82431,62957,5026,43459,77963,203477,53528,6247,191852,87774,74164,215654,13467,1522,219964,28589,244104,16242,117821,67725,72570,156792,17186,15979,26990,44128,193014,35276,57125,16212,166451,68017,6905,77608,16364,53777,75921,76426,37975,26203,269296,64099,84122,12077,38533,830,4407,20139,963,43028,38902,42911,37503,83343,85045,16979,1165,60835,137387,58380,86990,110066,134540,56331,193845,81238,17922,163093,38744,110641,12502,56404,34862,26865,125964,12965,111648,25547,7771,27196,136980,9555,29551,107158,57885,18831,37705,35505,101742,13970,102109,62548,124657,23328,11124,89592,146376,248050,6241,22033,18337,80685,29898,11908,216623,67721,106162,146610,21377,15085,91552,42041,62560,122532,125336,102365,121537,142559,29693,223919,11515,110495,18776,22494,5895,185059,103592,229351,51220,100102,37027,257855,29359,54123,36066,106493,12244,79258,32002,432,56205,94836,90182,6726,14762,29391,48938,26864,38083,60364,3310,60192,14766,205567,57504,110760,22649,24666,46333,21517,3430,13135,28873,27052,158809,11597,20529,6695,23138,22960,37137,45574,6545,305877,43423,26153,24769,59844,14501,10430,134352,56169,13213,103432,49523,35181,13435,12408,129475,64620,230854,77390,51990,15653,83248,33466,44571,117828,51481,2187,10559,68019,18021,54895,48247,18354,33737,4554,108595,37288,39767,116707,9175,3726,108877,21616,83684,49862,1938,8543,276466,20134,108498,48770,102254,31914,131520,185291,100559,51890,209,19526,76471,50544,71814,99351,8172,198526,28816,20419,9109,98389,136777,76479,75596,30635,165417,48216,120220,25955,211071,39314,24308,32164,2559,146280,43403,9233,17947,90585,1786,86920,125662,2457,64741,32152,32918,122882,78538,44001,31723,56426,23375,103172,88177,145697,52506,49319,68016,31664,41488,18486,110400,7030,28241,986,109199,19900,42147,56864,65287,49183,7858,24e3,30453,840,16673,25907,68916,89927,6309,158335,36407,199737,130464,13137,59603,201778,195292,21015,42466,179062,172561,89492,11075,180407,31868,72493,20998,60217,9865,19530,39274,130266,54539,21623,12535,13505,40641,73375,4087,85633,2153,3117,70680,55788,92096,47509,98493,37490,271936,151475,3032,16171,96642,34106,78425,125761,19591,3366,19316,54508,24183,50786,194248,91528,33253,34622,108355,41741,705,3814,3883,108929,13203,67831,10142,59754,68208,29128,84820,56880,38794,24972,48571,40821,40476,18137,164254,24064,236309,79181,11282,395,39169,2013,51587,28551,9645,701,109513,115899,113566,12762,62045,58322,103726,41343,40866,244102,143816,2490,70346,40973,52618,15412,30720,104315,38917,42027,93676,17513,107418,20706,123890,13399,97727,24044,87962,65606,44250,98044,65276,74790,101473,19350,91570,1326,87790,172042,7577,100813,86896,85891,41512,108130,27794,14875,71431,12835,156250,58135,3759,22476,42176,115873,34686,56523,73643,108505,51491,20838,12721,32863,45700,29496,13700,34294,55360,29206,155942,123812,7706,163234,203,132720,49358,144431,8130,175788,35818,3270,76832,25710,54095,97274,28779,94621,74396,19092,128242,58067,20885,14670,93255,15107,63291,23654,126900,129421,59294,262659,9798,3251,67344,28600,44629,50672,29072,26999,31526,23183,49175,165843,175455,17282,175411,32022,45989,30298,90690,78118,83156,23749,35636,31317,7069,80381,94561,133756,14960,97404,6138,41065,78041,32843,16601,34123,9559,146529,123377,96395,54441,42012,84257,123541,10745,22139,106459,11720,150883,172651,154996,110538,4728,53447,25704,2009,71152,119354,21166,66604,1429,216162,8637,122250,63520,27180,29172,36124,276428,107787,77184,4680,14952,104903,24418,14793,51561,52931,8371,26342,48526,7118,92066,67280,40653,8847,34597,105438,14198,50163,61188,146286,50315,41205,170829,161496,585,197359,95056,1687,365794,91349,48507,5804,49263,5146,104902,96365,117343,132222,46084,96919,16875,8073,262381,79982,52663,13928,16056,153908,15145,109256,132308,18763,24904,167644,13618,40750,18686,147124,114709,150038,52849,2938,12568,48617,8778,5459,44202,44591,74914,17183,248689,13878,7822,80060,23116,194037,18487,2067,7798,43077,33678,244028,31320,74273,2794,19466,8218,36280,183997,48124,19416,29656,19280,98734,7715,18311,30701,133602,150307,126956,7378,2933,79903,13178,12593,86571,26604,92446,13574,44205,65699,427599,21118,8245,14407,27877,47936,33542,7916,26460,117762,21596,37818,2249,127359,209394,60044,47677,308089,36791,154971,31417,6998,150042,174360,12255,43009,29335,48739,3912,101398,53340,2580,146939,151295,45360,125275,15273,45383,27456,48761,23314,8750,60801,85823,104759,27894,123685,66968,39480,26917,55290,83305,2696,98390,57569,145853,340733,4919,20024,52268,30884,7413,203685,70989,112855,4129,50536,349518,68205,332641,159581,135361,236026,37563,176404,64899,6578,122033,63871,1850,85234,82089,66124,74145,121098,107351,12687,36881,117334,13136,14698,85933,93866,18047,32620,310,15094,46e3,88451,23632,36645,27940,87618,80520,58892,20976,27702,140090,96075,67841,103292,238964,87778,107338,17019,83427,67522,7302,8261,47570,116787,8730,80484,61772,174422,56005,131193,52875,14588,28471,59817,9586,15720,158155,51307,109734,15196,11025,59331,3884,52626,102602,84797,25158,27314,4437,20488,76214,189248,35023,114952,157376,2827,62439,102878,129749,36405,10329,109339,108633,36662,1254,13267,5470,87105,58004,15397,10434,159667,21864,52022,179464,3013,32147,31496,116832,18494,105502,129227,107267,50033,13481,9954,24267,22141,16257,116154,36185,950,115685,11305,176708,2048,178671,112573,287867,162328,497663,95170,50979,193861,50987,30368,136257,31830,46549,15119,169876,23788,17462,249887,57377,1949,35448,14791,43769,210091,3783,34612,282103,88380,245190,5457,20491,98908,11402,86899,117916,16028,162584,60644,320177,156096,31065,55876,22e3,77655,9992,23397,13757,317623,63978,215255,2443,17648,93231,27388,104529,93807,55505,140477,12046,112040,70887,40152,94365,112353,25063,114679,266061,71248,119555,15589,2244,617,14129,211431,70110,100652,7777,4383,85911,89221,21010,120615,58357,86405,37554,41647,18,15143,69662,60491,14714,186134,148344,42347,5410,168175,44535,42449,343894,129417,99682,20659,27272,140483,63455,222159,17536,13722,42637,62324,11976,114691,148109,2283,32057,182393,4295,147364,33705,2075,44303,30274,28331,63740,69740,29148,10346,44862,33716,73937,153333,12930,38784,247159,2515,41053,20256,83368,256189,54639,115240,5096,24661,175419,153552,26516,141,138176,63885,34115,47222,55709,2765,28479,38875,236608,12229,22921,77291,54426,45388,2860,57787,114579,295139,105782,17826,71066,19119,54364,69385,16568,12323,28057,33346,34919,124763,155533,101386,31644,8627,49001,303600,29868,63213,9103,77280,71333,9696,138789,37059,24823,5057,21352,32368,114208,56803,19424,10445,58514,8661,209508,26187,171838,10460,63454,14016,122504,41328,21329,46618,32493,38225,7855,31763,7945,29876,8734,6438,24205,97490,139977,130740,47323,33195,85390,57194,13813,60600,21313,96251,7699,27584,170521,139271,1363,4402,336738,129223,84983,69150,13147,3590,163929,207225,155260,55916,20288,4503,8398,98490,11773,27512,37113,84976,86558,28365,11756,116005,182148,13733,115313,47644,67208,85069,9347,14995,226141,14704,101835,41159,35314,13113,63526,214039,29978,50446,83339,17440,129441,72522,118641,97816,24907,73844,15717,118884,167255,96509,162793,30847,36849,51297,78974,77793,10427,1873,2972,9999,35074,28190,64297,146836,46298,60038,163007,108919,61219,2403,75022,127339,4233,110389,69022,9833,128097,88016,79390,222936,22570,94657,28462,56956,38803,81536,30474,152794,19566,16481,147408,74574,81895,20731,1918,1366,76367,187321,54494,24366,21690,61696,33283,107477,77499,31112,414383,74362,18463,218441,120929,59848,258629,201924,69269,454,19989,13054,59894,3623,58908,20681,35723,78523,102680,38988,184112,108087,50944,132704,52966,21699,18860,96349,201411,82697,85395,95658,5093,6427,177894,44191,32755,26961,155739,6249,31310,81030,26574,84311,120155,86730,113535,7424,48888,13516,45747,98098,20077,183995,81945,43210,26704,40420,75831,45648,11180,6855,57927,65528,124096,34851,2598,156633,107572,127352,38169,123845,60142,62722,105584,232364,23211,68120,1601,22169,89299,747,258039,80572,7258,152249,11862,101204,8834,121434,33761,19175,133142,46343,40178,48723,3589,41977,30210,38868,62257,10087,82658,87827,90646,16415,47552,351723,28298,72225,91146,272760,1701,11295,1652,109651,300747,51863,198800,29446,11794,32345,37538,22356,33102,37590,113544,37970,11478,179743,25454,103417,59905,221970,105196,145604,7817,164809,102360,16974,75840,255333,56902,6659,1954,645,59400,67769,7689,18675,5215,13793,20536,27852,3387,29523,259718,16860,94625,43143,29245,15848,233581,22685,63631,78557,22836,133302,84513,1348,51826,47129,98836,58284,1830,1749,94642,10933,6145,12506,10975,13879,103781,144434,10268,28409,32346,52968,121567,107374,77268,23686,35097,10501,155275,15303,47136,21102,168741,55332,90385,15996,84817,681,137803,25054,142275,6163,38175,8056,124296,240642,65621,4934,178205,16101,62803,60964,18230,100622,76465,44689,14545,9543,47514,16852,93380,28048,12047,107106,37575,101485,77047,57326,34819,96137,76916,6469,46264,115983,75768,87668,69942,13027,165,8373,114231,26434,52844,42799,182044,23580,146254,38081,43236,33883,146220,382894,14606,46035,36481,166621,35417,95382,2957,59384,60428,36358,66343,75378,22267,22950,83528,17577,56474,25285,4619,179691,75355,95836,53295,34588,171410,4487,14679,84208,44015,18562,109133,54101,11531,86052,174479,303157,28095,9953,35642,14564,39802,16145,77606,117406,53038,121117,53624,22062,1212,7632,127157,237292,189087,10478,127345,102515,181997,86752,87623,10966,121602,68783,68681,83042,114380,138349,191305,67176,50085,39016,1427,42384,1412,67118,122616,72389,25260,2237,13576,137346,19938,20304,2191,68759,5373,61364,238507,75814,23931,69565,38993,131741,38364,12528,87762,5679,129853,5310,186831,32653,90338,260176,389531,108118,26843,43985,50175,30563,25106,56965,18130,140428,4542,165503,117991,24219,229605,1819,129663,1240,3797,76093,18398,71339,51919,93043,27175,47060,216257,6483,35051,1217,16512,80798,129064,13225,69339,8548,237079,72298,2575,34280,51379,117910,55671,53345,247552,29486,39328,140821,34681,57045,60177,5004,90269,78522,2479,322607,48474,61296,13057,31558,4678,59271,6699,27044,31988,35944,12503,83480,4389,136508,3781,114121,70279,4488,155829,42214,2898,68191,75695,305850,45041,74344,106509,30087,17429,93292,12477,290,23080,114802,35714,18751,26554,105424,17775,2144,2412,100610,65192,113975,52975,180272,135050,129815,76238,106483,21440,63186,4260,46189,9711,28249,4169,23429,23390,8324,141585,63809,67668,38457,38063,39226,59972,1189,203916,62368,14403,16949,61767,85801,1739,40147,35049,76757,33124,62102,15780,103593,103009,53484,22952,67973,114645,6566,5245,50462,7601,8288,3513,194571,80276,1908,54592,5124,58571,2513,6800,273997,193904,1119,17991,117245,2508,129156,82366,26278,71465,63341,56943,39662,106116,94966,156875,9736,2204,122308,94418,27134,1280,24539,49022,45314,3764,50904,46424,30699,28087,293839,9400,33646,40165,822,147499,50263,116179,29085,11863,31314,5578,17797,5104,12454,1604,15342,219206,10232,67800,94261,25872,13565,90339,78971,75377,26649,41184,47695,11514,35369,20767,14227,41953,309396,148270,147938,33074,14453,27499,109019,39018,25738,240196,158931,52820,8612,95853,21524,137010,84901,70869,70021,116794,48404,38771,6732,1070,70990,187297,49140,5238,576,3564,253975,16027,16483,2811,37775,19034,25259,4053,2e3,70083,95774,19713,33431,92703,91314,42381,288770,48194,95985,3991,77418,13406,241328,245086,56533,35275,62725,9246,51924,70181,95331,16163,31410,79016,39312,120878,119371,275987,80124,27712,9186,220,23598,146167,85209,68238,282190,57048,31273,30555,80913,17594,75779,59160,135002,101219,189377,29225,96735,60126,62522,104e3,27620,86814,17240,147533,11001,5425,43682,410,49460,87270,69480,46315,59448,1816,76201,9431,11788,87960,29063,65539,47347,11678,33846,7008,196704,9895,6753,8633,120892,59970,572824,115934,6646,202559,892,48351,37611,251282,57823,67263,57750,26527,34485,90747,7685,88370,6144,64182,1709,41969,21458,62327,181657,49247,225330,122600,114574,107124,85361,111833,63243,71420,15655,191178,72430,18063,51425,54002,12364,53225,86557,18193,97580,41232,138398,67821,128724,8944,233212,101353,52099,42127,14006,120107,32789,32132,3498,18123,33758,56058,5779,128760,59888,98869,18445,84702,51911,13234,218379,20093,39031,8074,70195,20708,23462,24355,131384,60189,26390,10403,41060,7140,10781,49410,42261,87202,82566,41663,43105,60276,2768,5733,74176,28329,2297,145430,131632,83615,122915,105441,655,224102,5284,136426,67763,16294,188511,32538,61049,27893,3394,13951,159099,28542,17930,145360,9492,190122,32285,78855,26440,13570,58648,73908,4239,124561,2444,74172,53131,11468,10794,73566,11623,35343,64710,30481,4163,10328,38309,29901,10538,154377,76132,92405,24839,11679,3465,13449,11637,7824,2337,57754,1260,14458,41118,19878,38661,13416,159180,37074,163164,54137,28627,52134,184900,8520,40385,29546,30502,22386,66527,107458,6850,24022,47983,30603,35083,8934,304066,39500,9,28261,33026,77251,9374,44833,116312,34990,29236,63563,125639,135405,165398,159055,55690,88141,69643,236964,31983,25572,20436,36746,60896,31850,16179,11828,5888,3043,66368,9750,31167,7915,53111,36430,1333,64344,93659,20061,60596,180191,51630,6792,30244,43509,101058,22409,420,44210,109783,43223,27030,72477,72831,32679,29235,7675,47556,12258,39907,149412,84926,118247,24692,71717,105038,86009,45941,41189,89453,29856,52543,30627,226798,67303,59230,67415,34408,1367,99685,16867,128419,52147,4111,125381,117881,16173,44093,102224,31575,23234,24870,83790,127407,239098,3200,994,1255,100903,242275,117266,55116,38205,16140,29662,11307,40414,208793,123355,56470,4862,75600,30119,58218,70828,24075,26974,7802,192353,4851,5475,78720,66596,3409,28573,64396,30381,30690,59859,88256,5406,99945,103064,34463,37727,24238,86643,60088,4057,23741,5967,162904,38240,28356,93858,25510,122879,6897,3278,7057,11971,4400,35461,211413,21395,59615,39471,87233,55795,128426,3051,22470,41950,14705,3974,180108,80476,78442,204996,91987,15634,67610,139015,142373,35611,51134,10387,4353,153456,57749,181039,14183,68447,151532,21107,36452,20551,3186,46247,46383,129666,88736,140662,146243,2066,8360,7978,64818,106963,17896,47801,10723,114821,223295,74192,3293,3393,16987,74064,11277,91622,4270,29828,27951,387869,103235,1374,61988,120083,477,145892,128378,11779,211263,61354,18221,17869,46530,83061,108538,157981,90608,67199,95080,49064,195814,12302,66307,10348,231346,160732,112859,63633,146558,21271,31037,198802,47622,12862,95710,3910,77850,73961,85585,34752,61e3,4082,24595,103679,71107,8208,79568,150019,16615,24961,139857,32664,197366,4559,54735,32696,4126,162019,75698,13916,70108,159638,19834,9349,24675,175560,49643,18206,52459,27992,10809,88865,401975,133172,29e3,34558,30915,3658,25834,42430,36562,125265,18182,10155,40149,97082,208980,19575,60853,90529,66545,9600,789,46420,2317,88593,55595,98980,115302,5742,169155,1073,177901,3472,11189,63711,78643,65472,50459,127979,93,42202,67053,21720,157650,11145,141378,42033,22824,85705,79114,35584,15974,1510,54172,28562,12451,104226,19190,97151,73024,20948,5151,81741,21499,29006,84183,198074,54003,45120,170125,26240,35177,28389,64863,79974,60778,176915,232183,45342,2038,80253,41564,40703,32689,5430,100689,5366,23007,134279,14266,26712,73993,24934,64242,52113,102887,61801,46415,201049,54251,62133,122757,164883,30815,139966,2319,30842,766,13362,10287,134518,86111,81665,82440,28333,43019,18963,8804,161944,23439,102144,101145,80029,39052,248708,30350,117340,11878,128467,974,138625,63961,5237,74778,61834,67040,43814,13690,65947,33809,232476,115258,181745,28824,94013,9510,10246,93722,81976,7217,114383,3493,16014,69045,72692,12145,80981,9507,6692,1620,60820,330444,35474,33962,4797,7053,295463,46445,27026,12491,77988,49524,35675,90947,29114,166705,101385,133782,32704,6186,84595,176031,185623,45966,151302,63069,1699,107491,947,15458,74452,196212,6046,10498,12163,10239,35191,243951,9277,9090,29539,54460,22820,26514,112549,60372,51753,48756,21812,70861,260326,41,44222,10441,16961,48148,138771,216194,5914,52153,53400,212036,56519,26245,10117,45888,15294,138019,90913,26368,43842,42111,23348,6082,194845,161089,156206,51546,11647,30759,302912,262094,8635,78876,26535,35283,54183,31183,85484,147873,12989,5197,6356,72894,65347,20150,27370,73787,1493,45918,12366,190217,20724,13858,10981,67449,81213,7553,14115,72242,271517,11842,48310,88743,143726,22177,3290,243231,58452,62937,12592,1654,40066,33477,13751,9921,128442,15868,7106,75236,83773,10775,36938,10482,170465,17368,17469,161508,32752,98340,800,19824,264456,3901,87319,2867,26782,9630,113102,185815,24197,44584,86366,40224,3636,140916,31731,267731,9567,53678,72984,29389,27963,17106,50282,284911,60170,8322,12608,23374,89652,5268,39044,229766,8869,151350,31436,177342,12269,183212,120418,116270,2843,78888,69192,7865,184099,1086,129897,18383,70508,20242,18508,229924,124569,35749,50589,55626,9884,83115,40971,30671,18135,14452,38861,17844,201826,5549,26413,17189,13561,38539,10679,143331,3314,36785,171194,49685,187713,67506,4618,104039,17060,195080,50648,33159,19238,67559,134840,28599,157523,17130,38064,117398,94355,31918,13575,34538,40326,13997,3494,348283,62481,26862,3603,104426,244363,153709,112487,304612,199674,41239,35545,54869,293005,28223,26277,26899,4533,18518,15492,38587,80488,70485,160395,263,60162,11382,222152,4696,250751,51921,182609,10707,48463,46243,1227,49111,111564,46502,33342,56846,68541,63559,858,139927,16654,229375,76759,26478,33205,95828,23399,92945,2637,35630,28470,143992,50214,14174,21456,166191,65665,1711,21594,78019,97599,111701,36,147151,110246,189022,43021,30397,40757,131935,42065,73335,48039,26596,28984,15102,2361,7421,202167,69744,43766,52826,3642,83304,33873,75140,63169,192389,36551,92748,13039,123959,233220,21738,84447,77230,20228,187852,19095,25799,92136,108774,29237,53947,2299,118106,2687,8830,42331,202924,33667,2023,73763,30704,19363,19779,16737,35629,48081,24068,101013,162338,291912,13749,24745,328289,167679,70086,48299,23306,16732,17801,43322,54589,3586,63653,43624,53474,925,109177,251316,43805,13082,19511,86565,142182,92461,17117,101033,103319,64589,4022,4351,235897,5352,82705,107142,46391,156084,5860,61365,10558,13045,7717,18357,33922,12590,33065,6928,46993,783,46937,67846,8952,26295,6107,119656,18799,17458,50747,4229,179559,112727,118080,20683,41464,125468,51560,49749,44231,7359,35339,62988,136487,67015,5208,29150,24956,105186,48858,6143,18097,6972,16404,73489,58742,97196,36357,164616,5834,32267,13746,147733,15113,132091,34127,106298,39729,106426,22294,9780,15602,36213,71502,42808,66802,599,60755,5851,39120,67363,108623,126368,72770,91263,32486,30596,151717,7951,52002,43103,11768,68942,40901,39344,24037,127500,116890,48403,16926,86750,17745,48648,159545,34460,58419,5634,114317,67865,31462,23352,24010,98185,125708,69686,68337,13610,26271,70691,2980,4768,27225,102402,75453,28106,8104,6931,1176,6274,6475,112635,22498,6176,238686,26832,28893,90319,14441,15682,15087,39517,45270,109134,104440,45965,47645,81772,7876,52683,87720,12898,4505,185665,2769,113401,15664,57592,105229,137381,97059,119268,6876,43309,33886,128363,35476,144249,67013,143587,83367,25703,91436,59347,53236,2289,16519,19844,46309,58558,99834,23313,218816,231303,36388,51333,183535,109792,139277,54306,90139,18235,8275,32710,37677,82464,86025,92204,88842,117723,37570,128723,234242,76350,73795,34896,148247,58424,11105,11744,45746,63372,17118,49772,199520,81902,38004,22911,33752,3125,1995,53792,4689,26909,108150,146062,69674,41811,161444,84855,8999,28561,16731,93937,3189,21967,24890,22943,1356,145300,51569,28802,517,118679,31703,40607,48098,108854,25003,10233,73969,177495,5248,24516,215347,146192,48712,60626,69188,40735,5866,586,101541,6509,47590,52129,5969,222045,110933,25733,24223,65339,62812,2414,155418,35819,16022,78423,43138,20995,128255,240673,46745,236093,72176,57085,97841,61248,107,36068,193177,105427,55726,215229,20446,47228,100420,87091,14429,121708,23605,21157,187721,21880,2997,203976,99166,95068,25877,7724,98925,83401,4829,13182,18229,13718,239662,38653,116505,153497,30589,89029,38962,181302,43853,78872,180301,4786,248240,7401,106136,112590,77745,19731,60880,77789,125748,135487,5975,48627,34084,12419,215770,47557,254582,10364,106495,21856,67539,88981,38805,21428,48732,42316,12149,16078,52808,25327,51322,33850,51147,12253,122354,46077,56483,254553,115417,81834,150991,94662,86668,7381,12841,100650,18218,15741,22372,68294,50705,15535,84660,61887,22553,72299,31361,24824,17743,46820,64288,31582,77006,111674,116384,30760,80920,86149,77192,51979,79691,60342,122805,103800,240873,160744,233114,78962,54920,8608,3484,316104,72548,24337,5088,230040,21926,10172,36838,26,86221,83458,102176,12062,17571,41929,41170,28428,68239,41750,103930,2634,18313,53019,34825,97837,63115,24606,73157,152474,14715,91439,37033,109806,140259,30668,174760,380,135597,95673,136073,65073,134249,13829,17279,122305,4420,46444,10237,64848,203623,70728,10349,182885,65075,24519,25783,40318,34139,22222,63394,55266,102764,41422,20126,65100,90408,53640,35128,48932,11192,38935,96839,34782,39492,19396,41332,6250,5511,19492,51304,25936,104466,54099,73771,86115,5080,7669,30891,111700,13931,25276,72289,135447,14820,258641,25265,31005,281179,75286,393,95359,14623,13584,6680,101227,80173,44933,76666,54542,13244,39348,458,25379,109451,134348,81143,6959,65554,12027,51311,8716,57589,140731,28467,23316,17272,30458,25980,55229,77197,83798,28302,114784,7428,34548,26241,14712,39336,103304,18928,54080,12870,334,87722,15208,16895,142098,114262,39820,83913,57817,28682,7721,14900,108672,11250,62246,42849,415188,1724,26555,24549,25505,26443,107450,145899,61035,43528,6901,60726,65906,267741,21338,147590,42079,18924,73017,135236,15393,5206,4026,84185,1531,5988,113890,82647,303391,7386,69844,71611,189865,76523,31877,13315,19314,198575,32821,1928,67641,25913,104475,103489,3297,70391,18406,15446,113347,19295,93790,27856,1792,167471,116449,8541,4408,41757,63233,25765,86680,64501,27034,24816,34975,6079,4486,49693,36229,16917,21581,62426,27862,11612,54284,35702,194034,355,24277,48262,87411,70504,310164,118018,12516,47559,43502,57433,107139,9290,66533,80863,14634,34312,91725,28606,21342,67241,72355,43244,375789,37402,174015,105070,8342,44167,67494,1890,16365,11723,271002,1865,47918,8350,45564,27742,25110,125803,8553,49504,81925,62211,4534,15491,19011,80373,206920,667,102405,128623,245524,5553,113309,192739,65766,19567,22832,261958,29679,21293,71134,20962,105123,24721,860,21752,33448,18372,157167,94822,35770,173224,232737,75729,28937,46828,28062,25453,5207,140366,36665,30652,6169,67920,150458,92040,23186,184604,92330,20891,176492,49427,27828,38305,42495,143982,49560,25503,90043,29747,65328,47830,12932,11068,77721,9003,25213,94205,140426,46090,89945,138173,192691,33329,112232,129905,35709,27514,1841,19957,31411,127476,53572,17497,173549,55063,175135,19841,69314,5192,237921,117660,150697,4060,273045,50414,98940,65348,153665,164423,58804,156695,48994,213928,86036,28608,8355,39574,34540,16927,135680,18374,151587,10830,53805,16878,16623,4282,48030,8537,14986,46102,13062,72897,72,33050,108227,39451,45935,651,113320,40535,95176,57450,48843,5003,19019,10407,211163,3848,1068,4988,32091,30095,41692,15099,43602,107434,50744,7627,171349,16313,150832,352665,207750,33937,38256,51091,156e3,87889,90663,84175,24908,114900,50365,31494,83829,5398,169342,47521,54818,18935,8356,43094,41212,174536,10082,92550,6678,60614,23355,69721,14796,34149,128830,58187,3179,208,40325,28399,225029,401412,51150,31580,207268,6657,10993,69818,64282,289845,23308,12961,38447,6681,52944,31855,2572,47646,120728,179148,37240,45196,218274,4816,3695,21961,50084,35209,18073,51452,27004,6100,33941,1377,84831,171214,85,141510,9078,99227,32610,6417,11718,49868,65579,87902,73018,49062,46280,61742,21512,40862,107733,15941,29168,157765,144919,14487,5767,158014,140070,7241,573,71584,16921,223566,40331,179473,35081,47926,140885,41508,52104,59180,42310,32811,29048,123517,102413,80208,10104,14746,12649,153641,126022,37965,113017,4171,83,142592,2809,6362,50416,71323,116894,260776,16204,1524,5760,30351,12658,20703,54403,36083,45408,74772,4946,14485,50759,111222,10890,2195,167147,92962,130534,16283,177256,35016,15472,210156,151187,73922,117691,43250,52051,37392,24811,24358,30830,5775,818,21969,1476,127322,151783,58392,31021,106913,65215,89407,90802,28531,11690,20234,95249,44602,37256,18707,11928,5161,4410,26571,51903,49768,22008,25252,65780,209499,68769,203726,13249,137363,48845,86823,6658,5674,31881,1083,1823,108676,34518,166752,13791,14287,91576,91429,8665,11529,26401,16191,91972,30964,5254,28486,54697,79613,66520,18447,22870,45203,194466,22822,51703,12278,76716,44595,73455,33546,12235,144843,36154,51247,11116,33040,3180,225753,60864,1972,28469,12891,28879,10338,144157,56294,353058,38302,41447,87532,110616,27065,168438,6557,1213,50804,144643,24817,2390,136531,38174,247513,16190,4059,122791,131994,137430,39506,57650,16305,5188,54309,106128,20628,88071,67394,395446,250285,66176,91254,1399,114196,43915,60230,44853,27206,106353,43013,18733,345105,226453,51202,16607,57106,117175,35492,10476,89598,127439,15187,39624,13688,61570,10615,31111,59370,6238,175252,32143,224492,41388,95408,34384,148238,78307,38959,9340,160091,61443,15737,11216,41244,170,38299,102443,113097,26382,14027,33707,3957,76300,66160,19431,18900,6952,1717,108656,82206,188021,257335,27295,43999,41210,31777,46956,57457,12657,11489,15697,48060,204748,53583,82422,284790,30503,137341,8120,19615,220311,15991,10217,63424,9808,67431,70976,98221,4491,15177,28535,144789,751,13230,2394,1504,33977,132104,30316,22230,931,97193,185240,24826,22687,174322,15307,22988,1390,188745,180325,29580,59068,74903,18994,29195,79,15436,7622,38462,11566,138710,44828,45774,37768,99236,68137,84083,19282,22698,17134,74807,126662,173497,46248,16938,119735,3212,28292,213652,49013,9975,32180,45660,86250,4801,68788,95490,77482,113751,11994,44624,94452,46839,128497,100316,5798,58588,73184,202987,65417,37790,88524,1606,43156,97964,105717,34947,11203,100060,37742,130074,93653,107799,94311,196106,41347,8035,10780,16390,27883,118236,167395,1979,25006,19375,31628,18916,144723,78502,114047,103107,86492,107686,5844,20934,206963,23556,22591,16562,146333,20167,10471,117434,33085,2863,9740,36669,41849,37271,22790,18209,28979,8231,12952,54408,21731,25130,45208,55748,138120,75826,414,29593,9925,292865,25999,683,123149,7036,92159,86055,61827,103680,23176,54918,58466,57578,13305,5709,86479,16697,31064,17660,200919,10770,49793,33423,32370,52047,16488,62555,6459,8426,83493,7763,59725,82812,18628,67760,79405,68557,9612,7673,28102,56517,69620,171797,32458,29541,15870,81109,32080,207644,71495,21202,11039,91036,61230,2810,130800,32260,4613,60590,37112,75214,33979,126402,155062,30642,63875,12810,194463,82799,47664,16725,36685,43367,61099,449,172150,102867,21691,301838,36745,7130,18671,57316,34852,38034,54182,35578,65900,99486,19771,3456,2658,16914,99866,28390,28109,8262,21147,34353,20006,4228,137085,1675,203023,283196,198286,214375,163329,290603,152574,40471,83506,30068,14730,23177,131539,34759,27668,32178,71896,104799,116305,85430,119262,42860,25160,8911,23428,49437,105322,6519,16203,6349,74711,1230,38045,8540,75165,44736,25909,51026,317034,4984,32281,91312,27060,44431,17817,45363,155937,239085,35697,59784,91993,29531,126740,213757,76560,167776,285273,24262,8237,65030,41160,74437,48804,118916,13159,37842,1031,75349,1478,11655,108777,23435,277425,101734,67469,70231,124711,43532,28514,65526,54956,1e3,21882,17728,25302,40952,52214,149632,1999,2111,3259,63362,89961,220561,39777,26335,9063,10572,12416,34551,34623,38604,24723,5947,15588,69927,66252,119177,69173,46629,28714,70715,212408,20521,406913,74380,11716,50659,50862,37009,88460,130101,7210,53853,538,65120,151950,55806,163748,52837,13153,21100,16674,64536,6091,138201,44837,58547,3723,163,2177,32288,85454,34033,8497,14282,25742,10535,10741,79559,117493,243787,49337,100718,79495,40139,42956,7551,55433,15421,31509,23034,45081,547,61176,53434,328001,8470,36263,30145,4519,74173,53935,11845,73774,60211,78025,3,4102,73782,109293,315332,48412,26683,13714,6865,20128,18490,104141,325,39470,171970,115860,15707,7268,73301,74336,31370,2368,111827,107757,136231,142844,97138,96638,84053,38691,23801,1588,10573,122098,77039,240,186135,146101,11996,18143,112963,46171,155836,348769,47795,121213,116266,132515,3344,144804,31286,99187,255838,129694,35894,48779,55235,148582,71967,65282,15174,13920,47080,6147,108242,157593,125025,7136,1286,28957,127956,28402,98813,20805,7532,109417,40610,5041,32958,15142,18408,108596,33543,50517,27748,80114,233434,91447,487,37094,100048,30541,43477,10639,89862,155868,37667,8726,60684,237903,73408,99589,12190,38739,97348,3914,13594,2680,149016,13907,30171,28343,23530,115225,61104,35821,147679,14337,4297,244282,24085,326976,56428,7851,21303,131620,71446,83253,68692,111870,5224,15813,38197,49026,45057,13660,3306,76345,40671,27905,91072,996,68527,62085,91351,122634,55109,168209,2024,27560,112707,17352,8306,167115,169921,166958,5031,46020,11844,67284,19130,76185,6920,32849,5450,14610,22451,21002,17392,31872,66682,84796,13709,40210,59898,12029,8719,53564,21462,91884,21647,88379,194428,12754,37797,132826,160016,22567,54383,53186,77611,31107,8339,4694,19185,90355,23597,17222,140675,28442,23668,55977,9128,61555,28774,155229,17658,9390,24379,69357,15752,127381,239631,62460,93181,55913,45133,140155,18676,25249,33164,29581,82837,67223,22362,29975,7317,52813,1943,29613,20012,207130,49617,49651,5636,15334,36313,29226,28084,95247,72072,19e3,224932,15811,114,32127,38097,37508,88507,37225,27359,91626,12193,69279,20608,11055,88156,92808,2152,57259,55275,72789,24475,104414,1708,9882,3818,48661,66897,1631,34806,227930,85815,87753,18321,250664,72733,25107,206797,50891,8082,196411,92596,96764,152823,65514,22819,387277,62176,51225,40329,15563,189,3659,73670,64357,51793,275136,33482,86653,74615,67058,11318,125720,15388,22388,8267,1730,102663,170910,40784,7144,85373,13040,7088,94309,583,44224,140424,77439,18496,164026,36578,4722,9151,5824,63365,26510,35199,40500,79277,32495,44614,35233,9566,203293,152144,7097,2330,183480,98629,13423,330887,44130,68600,30939,97829,31012,345465,56747,94879,4939,160027,149761,99423,46099,32251,15332,8761,96094,128555,5763,235318,222223,55729,30241,55420,201746,3987,81382,8259,49325,23287,7719,24633,251100,92311,18591,110533,64759,170260,393860,7175,21144,132887,3593,75346,101277,91109,16387,259187,11627,57459,173829,44694,55780,49797,89192,120443,62622,3904,14814,23887,1027,112258,64955,99800,11132,66353,36202,48624,18158,88481,96882,43059,11040,2455,7077,21651,181159,99126,100434,61388,68186,19161,110468,120052,8819,55324,41494,7014,37689,3618,87729,92615,207943,9823,128657,12587,15857,6379,67628,51216,71775,157617,63244,1503,3864,218754,110864,5769,21492,7243,1192,87921,85529,31512,18537,42698,35350,73510,84474,34301,8991,21013,35034,566,38832,19838,35586,37216,39413,55006,12178,59742,856,84563,6900,25632,17437,49786,30723,13847,70845,4044,7843,23944,235976,55530,48942,6518,20939,73769,192653,52936,95207,23895,132542,142982,22632,87452,48042,54018,178468,10728,26230,23559,363,81269,142012,5718,346258,31456,84333,246476,51018,66692,101804,120570,39962,30373,70593,2864,60541,19425,54209,104092,7201,31545,48018,25865,15442,46257,40443,8328,6451,111782,47527,97754,33046,470,245116,31095,39,91934,87208,73470,36708,36521,12801,70624,36272,8892,79768,12427,55454,103756,5908,52390,62962,22720,141138,94634,41689,128402,126390,6628,106394,35527,134394,82727,254651,194502,148064,89549,3202,28359,957,21954,27906,49840,142747,8307,24206,48978,1186,71728,133038,71474,91306,6333,110959,74600,70387,18983,62609,56057,22970,1147,135850,1321,28834,3578,59715,102227,32827,81415,99952,55636,257598,390,22702,35701,85872,402916,39216,189795,14929,19467,10112,144422,61514,5279,63421,134686,41436,8424,51925,10598,132295,124416,4604,194739,210929,57866,31829,51626,50007,9976,91878,61906,56168,81906,60918,61859,40017,23059,16887,40927,62064,12785,32893,32913,21782,93965,20169,44387,79084,38463,11457,93950,27127,157050,2697,337088,5116,54128,48255,33279,8821,27352,25515,124022,65710,28906,38557,33390,1722,104435,72215,38551,12094,30978,25113,6671,37355,175109,42862,98024,65406,221276,59624,118012,64637,78760,86697,21426,1639,40350,12584,67193,84144,31396,7863,143011,69629,63112,9454,28666,65798,46372,134721,6314,51402,30837,151922,2847,38676,38008,92823,136245,17540,5504,109295,205242,37606,5211,214892,1586,20670,208711,137743,19328,40652,16995,20023,14657,154919,34422,12996,13918,38221,47690,16398,2959,37680,89122,6721,198469,91876,172043,83898,101992,26084,94570,3635,76958,22853,76497,38266,176590,168403,44464,142840,79180,184594,1984,41806,83147,11985,6546,366068,59732,24533,271505,8736,39084,222992,93429,28962,58985,86665,8432,30028,14548,32439,54424,165029,55175,27458,69046,121277,46168,33732,20661,24581,135574,123110,37556,79260,72611,16957,12939,46162,58238,44907,72936,253758,41324,32518,96480,11949,124438,65280,43256,34107,53533,43531,37037,28366,45970,32741,173438,6121,194202,62969,26355,30314,58370,28455,1848,50519,82830,90393,21761,295490,10936,256940,133568,44050,20269,4089,27457,21610,219460,36743,14821,101388,52005,13124,30979,140816,167362,26054,18458,60789,34917,40447,26606,33422,9066,3452,83614,5761,20263,137238,25038,91310,101,52322,74548,42572,38084,214054,186568,31802,17665,30620,141936,37730,14420,4265,187218,49640,188208,51441,55388,96452,66659,40869,42039,60967,221027,19234,178581,29105,96050,9165,196118,157335,3738,40354,117436,2965,34136,59659,15570,50843,230035,31444,71260,43886,18316,5387,38500,168508,17406,32174,8828,103373,143806,90367,3560,18719,122310,16508,26719,2541,105429,6645,37998,73190,10591,235916,49737,87112,233941,53188,32193,79154,4544,52905,126477,7580,63501,57314,3216,31337,6541,103083,60846,49,9756,15481,1355,43840,14319,13743,27486,10222,73114,230718,418644,16706,6674,279748,23058,45273,295831,86306,2743,5535,88773,21829,35253,120938,31153,3169,16839,42847,8751,80974,33942,36867,35514,16485,26474,77775,56877,5391,48346,3882,108713,31403,27804,55248,26235,43821,136104,40118,175507,28034,203908,18732,1788,34030,106427,36958,54359,7251,44936,15356,69139,455,157915,22173,140291,50348,43275,82066,49621,54952,15216,36226,96695,66855,6936,1987,8227,196087,4631,68827,99004,47541,110265,17953,147605,110242,58520,31312,38724,329975,642,3155,34497,75937,6207,73843,6120,17249,51429,117746,3218,910,68961,319671,14938,29555,34700,1649,66673,72268,9655,76800,153087,6941,210168,27130,35398,1780,73242,3135,56689,19556,165307,8765,35967,121458,13333,70453,17350,117253,22265,13340,44265,39869,441,3742,135025,23581,33309,16543,17731,13291,157637,283005,21408,101360,63887,52312,83873,5338,233779,23759,186949,34531,177320,38069,156465,91004,19353,59852,68160,14891,1338,1072,29823,1950,28901,81407,313445,73038,84807,162348,240257,37162,138934,16111,58013,41253,102951,16457,96056,19541,56402,67217,41638,94381,89674,29481,37456,80815,151579,13937,13683,132537,19699,134545,67020,29816,222341,141235,427578,48868,129557,233342,23077,87871,16213,18728,16184,9469,37913,19680,2798,171356,178328,13216,50049,72690,71904,124644,55455,7504,29052,41036,266546,19899,30391,188755,8659,59469,16,104298,112943,53865,76203,138226,68857,139953,14125,107625,119795,173133,4398,50273,48808,54390,16466,122086,31835,67035,50971,48859,7508,46427,66477,73021,84615,39985,83076,46779,201569,53336,36443,60865,168164,143810,51393,25548,169307,32896,24485,38424,21837,29087,275813,51674,6714,64883,46169,187369,55186,76192,12852,12018,62134,31067,118303,16542,12125,10579,4928,26291,43854,7091,10946,253716,109062,39283,17261,113012,258512,47764,125126,32646,55892,80279,201623,149872,3192,385,1208,48750,5376,58738,22335,5427,82416,47811,32435,143086,38930,94128,59975,156037,37977,38224,62485,7698,50405,71027,16462,21559,136153,34131,107506,162069,63703,3101,215029,40407,4178,3774,9187,80019,17880,97926,67579,2600,18405,8351,47924,86638,70820,92206,86453,29610,42241,119200,3198,15466,67813,57863,35454,4779,99518,4649,104641,144269,33730,38073,65864,6838,109456,193298,154007,5623,45741,30846,182578,25573,157224,1543,58575,138703,146140,44971,49356,18275,59064,20300,13122,11848,24453,11973,9797,86843,2919,25530,49210,1130,161220,76788,75373,85604,34926,36014,17777,17255,51533,11676,92226,51845,119859,21525,5936,18507,28050,1140,31418,14857,34207,47859,10750,36382,32079,106909,59426,87757,38393,110042,15965,97104,33757,35344,97993,53979,33651,45407,41884,82515,173089,7177,58371,35365,47543,51927,35587,10670,23544,29306,84233,39976,76076,62097,9007,8668,28119,78281,120790,19835,143020,54968,18670,64959,20649,34469,42570,33001,136570,87796,120044,1106,58700,63951,127623,12805,83057,40212,31773,49850,7361,54336,347524,101314,23751,19569,48791,29174,49369,20467,7465,75842,38281,623,112457,60210,28849,51003,94720,6426,90047,85560,43761,3579,85105,34607,90410,118528,7224,42907,111163,18168,6960,161135,191298,5247,100584,127552,171568,20121,91173,12636,54615,20199,63730,98105,2396,40387,14438,125012,4765,33235,12865,45299,37728,82098,77872,114037,59253,19675,24838,398016,102561,11446,17069,57508,178277,65836,99941,26114,2585,271882,136866,50126,11027,155648,118367,14585,8910,123015,335383,40434,41016,53021,14439,87098,176860,201543,121888,2358,9286,5739,22666,54270,37884,169381,33984,93859,16124,89364,72207,51639,76366,99029,65812,2198,12147,174891,194289,6986,30252,88822,21284,11445,288337,160821,33034,100869,43852,25761,52882,1144,103809,1924,84458,86079,43411,13542,139276,18141,34978,41298,7276,26481,173800,33210,17951,142652,33616,33677,2210,19941,98568,2486,192414,80136,12058,235883,50963,249638,29572,27221,47034,6124,72107,63346,97620,158513,299699,40388,23235,37176,224244,198386,121323,67992,23827,63170,17838,106622,158590,26807,5345,23489,91891,55474,74834,37981,13058,5977,72552,34706,26828,145172,19904,21367,34043,960,77092,91381,4733,47446,7680,41697,5170,16960,14741,46101,13656,473,51842,37433,11103,11551,121951,13191,97536,165932,50397,51628,129028,9069,44885,6590,59195,47045,32940,225472,90345,21833,13303,29407,96615,141951,5198,6028,18395,7181,3861,14966,156358,167182,36529,55253,25942,173153,30959,27261,50691,150176,162201,38467,48462,80602,42163,118482,168,108756,26011,17166,54149,456538,22512,91374,13816,90358,131615,18132,226707,1824,28139,26860,42253,93877,77351,65575,8980,80574,22020,27948,40422,91324,76376,13528,39281,91685,82215,122541,144066,1983,193851,17283,26320,2739,194978,4790,26845,42627,61300,65815,174612,55133,4200,191130,79771,158321,52280,166796,221620,62461,11278,4067,88152,83409,31717,121367,13522,47325,37945,10406,174348,249321,154101,64912,29938,51775,17220,15776,166138,78890,84425,54121,42861,16368,24572,291647,10197,32073,22651,11677,97509,26952,35787,18424,41910,71614,94977,72318,41594,70024,275419,37702,60199,7335,39107,61315,18271,18394,33768,87884,104277,123724,7277,56288,71981,189803,49320,3352,6798,14240,8954,69220,94433,57372,28620,68863,193727,85575,42309,41667,67689,42081,22543,44824,12719,28540,114236,101553,27638,27296,4300,5353,4663,19379,94098,3758,95888,95144,80344,87320,28447,259518,12718,71391,152731,37063,24132,31911,104896,15672,103782,1521,4945,72541,23717,122632,15619,87175,206120,29428,189780,61416,28350,44457,972,1175,47233,198738,95789,41907,21953,97034,59341,22864,53713,16873,32971,20693,20954,31336,21477,16169,38370,16412,9019,3841,24599,21938,17085,6484,81198,76413,5849,72514,12320,65247,276175,37234,59796,52642,16312,57349,198507,94148,46134,18958,125552,1747,18725,151873,14901,5490,68287,29470,3689,64794,40814,26018,25692,54450,2703,88278,124886,173087,174e3,24159,179477,24276,46004,201876,209202,445,52876,31948,30206,157610,39180,18439,44124,50469,5774,96278,222758,200216,50290,45486,20435,46986,46276,140133,142326,15569,13363,47522,92583,2182,7135,16853,22998,30272,4952,63263,35623,39096,53789,44864,20053,110392,124213,4630,16087,28221,127787,25839,77481,44693,13464,113146,6983,27069,55717,50102,4760,7107,26186,66507,59145,36032,104182,71328,29425,64317,50781,47465,94298,69706,74899,22754,120756,25108,93077,56834,73286,39928,16218,41699,176763,7555,70819,50083,26895,23315,26014,16773,123079,41712,5719,31516,90427,158540,85051,183128,40864,27505,55392,9058,45224,96857,30901,136622,96557,56304,120061,11501,151448,5773,89743,7769,86069,2935,18471,41628,10114,33660,110170,49479,26745,92846,33221,26731,18795,87076,8550,2100,29972,120289,3077,72490,33784,2630,208722,50861,63483,79029,6419,39467,14302,45286,64207,9686,67513,44170,1050,77246,59266,17055,53801,7150,11111,42432,4278,94579,362117,36175,42902,41933,39002,98489,22913,74161,84773,57036,17556,162288,74485,178760,93867,73635,128860,50362,261,67455,80001,46080,35662,4368,25247,19230,74393,22588,1822,27682,235324,13798,85998,13194,235067,23514,71669,147632,23191,134748,214683,105101,1518,25489,247114,7380,54842,26922,3971,26361,20844,68642,170517,77339,123255,8963,77818,150998,48466,36806,2732,23261,11741,236162,18243,126216,28690,50546,16385,92760,197383,246558,201295,88255,67588,71687,176076,172653,169058,33906,63747,24835,157621,43338,30050,46152,132741,2770,51371,94835,6614,15112,11749,56936,1250,19027,399017,58036,100215,23388,55815,308768,124152,94803,9521,64186,8971,28,30427,62163,7616,103838,35079,29203,131235,7743,17389,10882,37420,61460,228512,85363,41581,131077,62822,119647,10130,54445,26925,19968,29016,24446,74028,24176,61448,67185,9254,8563,119129,9771,99184,37716,39514,10532,221512,258753,218630,55980,23394,32141,61924,66749,32411,3741,36475,26678,77010,44946,91203,128749,116953,20476,49625,53116,13735,102335,29376,51946,83407,67892,59212,34685,21083,1546,112982,32972,74397,1078,190545,16082,86140,58591,89611,101531,10061,105104,76319,20035,17551,52611,169061,190842,100780,23907,90413,115619,9675,34710,193435,49443,129734,11183,258877,16318,136182,126808,44635,27304,192375,2599,125648,47051,12091,23814,721,58800,40137,66726,97930,60877,74487,7942,54326,9841,41428,13762,8211,85383,6950,99177,79806,201786,296464,124087,13144,29741,41721,47634,55088,254286,106408,17041,99064,12942,64086,45233,14005,2612,55827,255,7984,13980,38574,12776,46654,73499,249951,2101,26676,25996,132326,116415,119062,50449,31033,23038,11589,179252,20007,14860,129270,21143,17796,144715,60106,70758,69842,34674,282133,44014,16774,57268,38528,24053,46373,201667,28327,471023,51889,102667,21193,114909,84132,69317,96723,67969,16134,68145,15058,28765,32035,2524,101089,98664,25045,76571,14957,86040,118506,262428,154764,81573,39681,283900,73287,127825,544,80448,52347,38512,175971,15180,45467,33086,46552,48894,81107,43213,36672,54025,76703,8053,7608,13299,56619,20752,238099,54164,105133,1444,32942,953,37564,8e3,66316,119463,106817,404,13667,149108,128597,31267,10269,49836,106150,1484,52330,76965,160486,171648,38456,31263,22424,37738,66245,67467,143369,60471,75610,20895,115528,86070,60854,40796,49347,18989,15030,11371,37578,15779,79867,10187,86462,46402,155626,93200,40229,7090,57547,108053,99598,11088,47505,41218,206017,2173,20988,30219,22919,80563,57566,42369,93141,41675,2407,182519,120495,27154,16702,29456,14349,7958,16688,117177,140375,42467,261919,74916,153569,10836,34742,49526,7621,105997,12212,2270,392377,7755,17959,25086,232152,138791,33847,13860,35316,5811,1344,71259,50452,207539,92635,50359,5821,33674,30255,2086,2587,96264,17543,42,6029,9580,43007,139248,82831,12917,29607,25786,51467,42137,85161,100698,31561,88989,121990,278500,3602,109344,37982,15279,116442,28936,30880,87894,58079,128661,126731,67392,28051,146885,4861,16216,97344,42827,147561,153948,22684,21335,47685,1853,43349,15185,59642,10229,25520,187921,108972,5579,98037,24945,6697,19193,63734,137934,75056,89740,19767,224268,56138,63643,151661,39313,70618,84031,89723,84074,13703,85626,35460,8867,64845,3439,57906,99776,63968,49270,81130,34356,16210,23547,36446,34090,140028,72439,2221,22163,57058,363492,113754,18913,95451,48663,54464,54037,176097,68425,3023,34906,29482,117389,341780,80431,58330,16753,92616,60907,94846,147486,4498,48646,7773,46801,7778,18946,464978,47558,33223,177444,7328,15626,63337,94700,11743,9351,255024,39098,16447,42647,96230,39769,58840,10068,63439,35800,65843,58823,413844,9156,51258,7434,61791,85018,6872,3692,28096,7121,33024,6009,75532,31997,192535,9661,3304,9547,14753,31987,25314,55689,15896,20430,39472,31340,99744,25398,115569,54883,28719,205423,23071,57855,64638,149867,25671,82403,37616,20668,39989,77996,74948,140555,175248,64810,36515,46595,4958,248773,24045,28728,136673,168704,20804,114833,100325,27135,21205,96151,153134,45992,7093,13992,76047,1980,19432,145001,75159,87462,17710,1013,45556,34297,144882,20648,26061,11319,129567,108555,18872,464580,33386,22717,65948,167189,5603,135042,79542,8801,202632,18114,91882,5973,5239,67315,4431,60916,47819,71693,32597,32606,18183,45072,80329,76385,24749,51305,40314,156514,14693,130345,13168,66214,18029,12858,34801,27628,14544,10823,40522,40185,33739,148694,23548,9923,61012,28859,17933,19442,34364,99849,164107,141167,30629,21054,6744,36491,8096,42474,41706,155060,30650,10600,163442,1143,96655,61390,52359,7559,51568,64256,203854,4467,22453,14504,436398,7878,6980,8293,63610,293747,16167,35763,19627,147603,15419,18032,110744,51346,33681,54571,40472,48615,39073,21604,13754,173027,92560,11083,47299,63062,11813,52007,29883,9734,139722,15953,1550,20651,13616,49306,16113,90089,92326,7584,30712,72424,164858,6831,152871,55746,197721,34167,196442,6022,112107,55215,7538,123381,4920,43539,77165,8939,50392,34192,20225,79762,22505,58667,40770,29788,97180,82835,4568,8579,13273,363569,35898,49983,436,36598,3237,131691,62418,35591,8101,4073,379438,65218,76072,33887,2968,27573,212619,288680,68278,72851,150504,217896,6913,121339,22017,35340,51072,43616,75043,31437,10833,81487,4364,22968,41454,106687,85446,19863,109625,149241,524,141850,214404,54376,657,237023,9401,108137,53800,32474,49712,53334,126876,27337,45552,177696,8269,15036,12097,42240,2328,125374,119295,99715,2500,19624,39441,27220,102691,60957,94543,39101,18566,67362,13975,78230,25017,34017,239007,90027,39351,41681,35354,43822,1043,916,58587,141983,94818,38799,75459,41114,67432,16195,36606,59568,22272,126769,31424,68659,12287,134302,257977,5756,207285,95637,47248,117689,19583,77451,22373,12200,54993,117118,34244,29386,34562,53819,71267,64172,77665,49368,7716,59301,25749,45426,194789,17297,2650,1766,32501,45198,20403,20984,6600,14171,94604,19037,5402,29896,9938,59935,109708,88081,145182,44844,39167,352626,164173,35374,45982,6122,154,73419,220487,53834,53601,17992,8609,229321,5610,68098,66815,71012,95069,140968,27396,8957,134489,24656,86659,56598,134852,17316,123838,255436,6613,41610,138033,81452,32023,32396,123687,63398,8693,29712,30407,19296,121188,3551,36099,20032,111948,56624,16547,27453,35916,15378,52039,56849,13489,22214,73177,53097,277349,2157,14029,187886,10260,141743,246460,91880,50869,3788,49486,133566,54950,33120,129337,53768,18333,9525,26902,312251,10297,9020,70759,16647,112432,59260,84609,9818,82766,73569,468,46001,75780,55028,52106,11498,43645,108069,17150,17753,29417,16705,31799,9606,289,122254,115975,8620,6133,255357,56908,14456,133464,43554,79224,11247,29630,160,12756,25464,65960,350428,62521,321796,100359,67358,35169,46172,113128,48988,88868,31094,33266,6847,60887,98188,49659,69117,92977,220228,13947,80181,35103,62170,97351,13475,2440,199768,19498,36597,46971,25234,67806,62881,84717,73648,181966,10488,94149,21550,26655,63436,48375,14405,165650,9621,24439,28043,42735,4490,29963,56674,45373,1934,262446,50855,67098,26898,5261,52696,40644,33900,9440,180286,87162,22940,19704,26936,69769,10254,101759,27406,12243,48e3,73926,113215,54935,5726,192787,4312,106216,9366,11550,52949,23457,212271,277152,133895,108374,6191,96477,29980,218916,58024,54696,40853,91124,65894,91170,65908,252552,6793,29212,15389,44516,122515,52617,35058,9017,103536,39510,49136,19242,130652,662077,74699,47024,31422,8517,73351,24399,13867,128360,4810,4434,61779,111983,61036,17798,110240,59722,102960,39688,10001,23803,23039,176498,56659,44814,134295,17188,77577,74466,226175,102472,154333,63900,111747,18062,41171,79669,32773,408933,42562,28931,30907,107388,43487,2946,240310,23938,24354,319,184983,7927,6488,1422,10790,68809,68209,64775,4361,202,17123,59634,51200,44391,18188,17843,2619,74278,3230,9540,47187,21702,36274,56894,43907,16310,34790,16866,6150,5561,13587,107545,108873,126867,86986,28640,33427,19017,5762,80637,17430,46903,2047,131055,25958,13558,5444,47152,13900,44563,122857,45348,70863,39593,54332,38068,33637,318,40310,143467,18502,24520,11377,62013,28942,27246,28269,83545,17999,59015,90707,30065,15161,34720,1263,37008,2012,6060,98575,92933,5721,299,199555,24578,29223,2985,743,115825,109523,136657,47454,26378,53586,3733,174945,93340,244456,5693,37386,28782,89767,27545,23573,18798,136425,34320,84778,20041,48453,38215,7477,71958,40621,8773,5874,187927,105965,51100,43533,18083,8443,10180,43597,2003,183999,69689,12216,129696,146188,62389,34044,68410,12765,43273,26949,266807,3345,34477,79197,5688,47539,213110,21634,22257,50092,32222,42346,39530,63668,98,134978,74022,5152,59088,174145,37220,9934,9545,118937,5724,87240,19875,15784,40143,23263,87513,181654,285152,37881,263241,4966,43934,10433,186657,6470,74416,225854,25908,142677,246262,32280,6192,75890,45546,143264,135305,29742,47013,77787,11732,126658,8763,37950,21806,57557,113464,89465,108995,164574,23894,22996,23169,15369,23117,17642,130607,40503,36239,280990,44666,9981,40427,147487,26869,168452,32886,32991,46798,240839,15111,70502,65697,88548,44145,28701,48767,31139,206777,35659,181164,166262,14554,171445,31786,66523,76607,17956,6507,31279,90476,116611,167918,6560,1243,115324,80128,41867,55897,187323,37069,32596,189444,145931,13390,105530,65709,26805,6999,55714,41300,22915,68951,22138,21120,22264,10058,19945,33635,56123,99085,10032,5818,6016,46649,57476,35264,94413,112522,262288,93686,83038,14341,23204,28807,66084,77987,6101,126673,7133,38126,5923,122091,170240,97772,46874,215746,43948,41622,3272,55596,8332,146411,251315,13533,8561,81521,115449,48616,175175,2063,186556,3036,134537,75772,29728,82360,22973,186559,86348,89100,38388,82297,45610,2613,87082,9986,177812,57884,23591,47485,42543,33582,44713,74439,257444,252451,31825,35631,38540,33066,5147,13973,4343,51830,70378,22827,26448,95560,36896,241741,48067,203953,298860,61620,20450,3220,67272,6586,107662,100160,108684,6929,57226,4762,7457,1320,40404,77204,99309,62750,208653,59977,44e3,74315,34332,5819,172217,64904,114077,18147,84012,1791,98456,90930,21446,116669,103938,7422,85140,59713,5768,326211,16239,75411,13229,29398,10758,236107,1539,112472,95979,152154,151294,306,21196,38146,10700,6891,84282,109646,56492,40539,6589,119491,51354,30685,140209,136906,29622,73617,49553,70525,51671,166869,139616,74395,37439,49595,45678,11959,33211,86560,52434,9282,62690,112155,130810,5243,108261,99970,265613,72551,80049,6391,33365,90721,66737,69872,87011,1860,9032,112544,60905,37371,89015,140351,19076,850,373531,2802,36725,218795,72062,28990,16550,24614,7815,6187,26336,33373,32162,42791,73555,32062,23386,10244,56392,49442,27076,136262,12412,14883,1134,33675,97153,199281,15608,100152,74072,47942,254301,36451,16026,10687,65067,56708,254030,30290,50490,13864,57941,259331,35588,23485,43486,24869,21620,92971,22072,88645,1048,182050,13343,32452,14825,19509,3325,216938,45740,99716,189082,53740,78245,25609,24311,176777,47340,308354,40669,66085,14102,125339,9225,128709,97207,1271,200933,78439,113451,88975,18324,46521,11819,18570,141756,72512,170020,52754,63550,118515,103073,93330,32736,50499,14722,31600,68452,398867,29316,172786,18417,104924,2606,5670,84818,16288,67106,59580,82929,607401,291,85829,359,15897,35830,50696,65630,52672,22115,356968,29895,40837,231192,34024,38957,26722,406,23335,124952,72068,68804,13268,147101,164740,276569,162596,66943,11569,26654,66358,4777,23229,102127,5848,978,2921,59666,5371,28212,90108,42938,39320,2499,4271,108792,33510,125072,71653,65239,38250,66357,38577,13964,86251,35708,50755,36010,29448,12209,3844,38222,206337,100876,67827,137088,14167,252225,84163,195270,1306,5703,54198,779,46802,22028,51124,86759,70560,113164,35685,162145,45471,34561,422,2611,6464,47486,19223,38246,9191,18331,89942,243642,212364,15893,17518,22617,6409,30046,126182,59716,36560,104428,18846,26592,19458,50793,147333,30826,1388,27647,10922,14495,33545,19269,135828,39727,41601,46931,233379,49169,131130,182112,16276,82381,118209,142445,128310,19672,28740,82907,33436,3118,102206,28723,24819,41937,38854,5157,3881,111491,1142,9776,421673,152241,29309,14961,87854,6054,15424,3796,82656,54996,2108,55367,239450,154525,9643,118103,106041,64601,68549,48707,30266,25772,18740,9462,229669,91798,112152,191327,14493,72828,8175,66636,236474,25817,87351,129027,76653,20422,22983,71240,27846,44661,12399,46158,77704,53101,35032,11072,17300,109294,33638,24408,1895,11241,760,17584,82479,125877,63150,141075,34259,23274,81698,15732,43577,48340,91584,14688,16379,24481,150280,96420,262050,48635,43727,61819,56268,72003,88178,17281,79912,13218,122519,125295,166396,11811,2171,118930,67746,17636,178278,174656,95661,173039,83845,79689,17473,98555,127696,203415,54730,22925,232239,9309,12136,175026,20740,180188,10747,39816,314017,266131,10040,175732,112550,220651,31974,37393,888,23008,86799,4303,64905,148467,75337,251,3284,370102,50264,9835,5438,23655,4481,29851,329,12855,7162,64931,78141,12804,42372,296771,83547,18624,34874,86271,3360,48665,77735,88767,11463,63527,28889,22258,29140,194315,113924,25499,6406,31334,1845,4802,49184,43455,35469,127594,92970,61038,115005,38840,87761,106838,8811,20572,55637,11162,96721,132425,108925,2948,125457,36356,3502,75270,27622,127192,2561,123095,49394,61155,16897,110064,9699,89448,53356,19628,220310,21622,83036,9885,112214,6087,26713,17901,161912,91492,3440,68594,9266,92238,8087,6866,150194,72175,80701,13459,31836,43243,239700,95846,44749,50647,21945,230538,120612,132371,244604,5193,105637,34661,41341,68775,85393,1874,8771,33718,49672,77403,595452,99507,6490,58895,128742,7704,39239,73217,43816,62824,37804,199976,22361,80005,87514,94832,14089,4574,139975,59142,75523,100268,43906,53442,15152,2547,186002,17011,19513,204282,3343,60568,128318,119250,4298,51871,41336,71759,21921,45074,98169,145889,99427,11350,1237,5520,28799,7803,53702,21026,136352,38293,128690,12158,90132,44600,10184,26957,39459,126025,78904,82999,59373,39301,150198,120529,153042,20177,50089,14764,271571,30530,123161,38975,101562,22941,5648,124654,109243,69817,71675,49162,106884,21241,107795,30258,16572,188262,141456,7688,60718,8271,11044,32440,104608,103419,236109,93156,43293,128929,42107,67180,25201,115254,185488,130954,72813,167547,20537,39969,38432,22582,184022,1139,27199,5655,17767,97412,122606,209377,27070,35871,326617,188954,42680,73512,80911,22629,3011,95021,315242,157737,383,41821,41808,19335,27950,15674,25677,110950,35375,76835,59108,57370,35262,16569,160415,37706,78086,32041,49691,137143,9782,172080,50148,77917,6323,10110,69172,17711,21795,59511,76184,135114,31046,132319,59105,157578,20549,80778,57649,158421,65143,4575,72235,21899,10797,92745,34035,106079,80159,4508,78304,25350,75457,46458,32937,25623,47,8531,104751,84953,8138,36508,187199,66310,115274,13253,32461,38536,1916,42007,187160,35055,26325,84394,35963,94216,45590,97782];var ko=15,Oo=class{log;peerRouting;routingTable;refreshInterval;refreshQueryTimeout;commonPrefixLengthRefreshedAt;refreshTimeoutId;constructor(e,t){let{peerRouting:n,routingTable:o,refreshInterval:i,refreshQueryTimeout:s,logPrefix:a}=t;this.log=e.logger.forComponent(`${a}:routing-table:refresh`),this.peerRouting=n,this.routingTable=o,this.refreshInterval=i??D4,this.refreshQueryTimeout=s??L4,this.commonPrefixLengthRefreshedAt=[],this.refreshTable=this.refreshTable.bind(this)}async afterStart(){this.log(`refreshing routing table every ${this.refreshInterval}ms`),this.refreshTable(!0)}async stop(){this.refreshTimeoutId!=null&&clearTimeout(this.refreshTimeoutId)}refreshTable(e=!1,t){this.log("refreshing routing table");let n=this._maxCommonPrefix(),o=this._getTrackedCommonPrefixLengthsForRefresh(n);this.log(`max common prefix length ${n}`),this.log(`tracked CPLs [ ${o.map(i=>i.toISOString()).join(", ")} ]`),Promise.all(o.map(async(i,s)=>{try{if(await this._refreshCommonPrefixLength(s,i,e,t),this._numPeersForCpl(n)===0){let a=Math.min(2*(s+1),o.length-1);for(let c=s+1;c<a+1;c++)try{await this._refreshCommonPrefixLength(c,i,e,t)}catch(u){this.log.error("failed to refresh entries with common prefix length %d - %e",c,u)}}}catch(a){this.log.error("failed to refresh entries with common prefix length - %e",a)}})).catch(i=>{this.log.error("failed to refresh table - %e",i)}).then(()=>{this.refreshTimeoutId=setTimeout(this.refreshTable,this.refreshInterval),this.refreshTimeoutId.unref!=null&&this.refreshTimeoutId.unref()}).catch(i=>{this.log.error("failed to set refresh timeout - %e",i)})}async _refreshCommonPrefixLength(e,t,n,o){if(!n&&t.getTime()>Date.now()-this.refreshInterval){this.log("not running refresh for cpl %s as time since last refresh not above interval",e);return}let i=this._generateRandomPeerId(e);this.log("starting refreshing cpl %s with key %p (routing table size was %s)",e,i,this.routingTable.size);let s=Ue([o?.signal,AbortSignal.timeout(this.refreshQueryTimeout)]);try{let a=await Ao(this.peerRouting.getClosestPeers(i.toMultihash().bytes,{signal:s}));this.log(`found ${a} peers that were close to imaginary peer %p`,i),this.log("finished refreshing cpl %s with key %p (routing table size is now %s)",e,i,this.routingTable.size)}finally{s.clear()}}_getTrackedCommonPrefixLengthsForRefresh(e){e>ko&&(e=ko);let t=[];for(let n=0;n<=e;n++)t[n]=this.commonPrefixLengthRefreshedAt[n]??new Date;return t}_generateRandomPeerId(e){if(this.routingTable.kb==null)throw new Error("Routing table not started");if(this.routingTable.kb.localPeer==null)throw new Error("Local peer not set");let t=C1(2),n=(t[1]<<8)+t[0],o=this._makePeerId(this.routingTable.kb.localPeer.kadId,n,e),i=pe(o);return Le(i)}_makePeerId(e,t,n){if(n>ko)throw new Error(`Cannot generate peer ID for common prefix length greater than ${ko}`);let s=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1)^32768>>n,a=65535<<16-(n+1),c=s&a|t&~a,u=s5[c],l=new ArrayBuffer(34),f=new DataView(l,0,l.byteLength);return f.setUint8(0,ft.code),f.setUint8(1,32),f.setUint32(2,u,!1),new Uint8Array(f.buffer,f.byteOffset,f.byteLength)}_maxCommonPrefix(){let e=0;for(let t of this._prefixLengths())t>e&&(e=t);return e}_numPeersForCpl(e){let t=0;for(let n of this._prefixLengths())n===e&&t++;return t}*_prefixLengths(){if(this.routingTable.kb?.localPeer!=null)for(let{kadId:e}of this.routingTable.kb.toIterable()){let t=We(this.routingTable.kb.localPeer.kadId,e),n=0;for(let o of t)if(o===0)n++;else break;yield n}}};var Bo=class{peerId;providers;peerStore;log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:add-provider`),this.peerId=e.peerId,this.providers=t.providers,this.peerStore=e.peerStore}async handle(e,t){if(t.key==null||t.key.length===0)throw new Pe("Missing key");let n;try{n=X.decode(t.key)}catch{throw new Pe("Invalid CID")}(t.providers==null||t.providers.length===0)&&this.log.error("no providers found in message"),this.log("%p asked us, %p to store provider record for for %c",e,this.peerId,n),await Promise.all(t.providers.map(async o=>{let i=pe(o.id),s=Le(i),a=o.multiaddrs.map(c=>W1(c));if(!e.equals(s)){this.log("invalid provider peer %p from %p",o.id,e);return}if(o.multiaddrs.length<1){this.log("no valid addresses for provider %p. Ignore",e);return}this.log.trace("received provider %p for %s (addrs %s)",e,n,a),await this.providers.addProvider(n,s),await this.peerStore.merge(s,{multiaddrs:a})}))}};var No=class{peerRouting;peerInfoMapper;peerId;addressManager;log;constructor(e,t){let{peerRouting:n,logPrefix:o}=t;this.log=e.logger.forComponent(`${o}:rpc:handlers:find-node`),this.peerId=e.peerId,this.addressManager=e.addressManager,this.peerRouting=n,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){this.log("incoming request from %p for peers close to %b",e,t.key);try{if(t.key==null)throw new Pe("Invalid FIND_NODE message received - key was missing");let n=await this.peerRouting.getClosestPeersOffline(t.key,{exclude:[e,this.peerId]});Q(this.peerId.toMultihash().bytes,t.key)&&n.push({id:this.peerId,multiaddrs:this.addressManager.getAddresses().map(i=>i.decapsulateCode(421))});let o={type:$.FIND_NODE,clusterLevel:t.clusterLevel,closer:n.map(this.peerInfoMapper).filter(({multiaddrs:i})=>i.length).map(i=>({id:i.id.toMultihash().bytes,multiaddrs:i.multiaddrs.map(s=>s.bytes)})),providers:[]};return o.closer.length===0?this.log("could not find any peers closer to %b for %p",t.key,e):this.log("found %d peers close to %b for %p",o.closer.length,t.key,e),o}catch(n){throw this.log("error during finding peers closer to %b for %p - %e",t.key,e,n),n}}};function G7(r){return r[Symbol.asyncIterator]!=null}function Y7(r){if(G7(r))return(async()=>{let t=[];for await(let n of r)t.push(n);return t})();let e=[];for(let t of r)e.push(t);return e}var a5=Y7;var Fo=class{peerId;peerRouting;providers;peerStore;peerInfoMapper;log;constructor(e,t){let{peerRouting:n,providers:o,logPrefix:i}=t;this.log=e.logger.forComponent(`${i}:rpc:handlers:get-providers`),this.peerId=e.peerId,this.peerStore=e.peerStore,this.peerRouting=n,this.providers=o,this.peerInfoMapper=t.peerInfoMapper}async handle(e,t){if(t.key==null)throw new Pe("Invalid GET_PROVIDERS message received - key was missing");let n;try{n=X.decode(t.key)}catch{throw new Pe("Invalid CID")}this.log("%p asking for providers for %s",e,n);let[o,i]=await Promise.all([a5(Qr(await this.providers.getProviders(n),async a=>{let c=await this.peerStore.get(a);return{id:c.id,multiaddrs:c.addresses.map(({multiaddr:l})=>l)}})),this.peerRouting.getClosestPeersOffline(t.key)]),s={type:$.GET_PROVIDERS,key:t.key,clusterLevel:t.clusterLevel,closer:i.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)})),providers:o.map(this.peerInfoMapper).filter(({id:a,multiaddrs:c})=>c.length>0).map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))};return this.log("got %s providers %s closerPeers",s.providers.length,s.closer.length),s}async _getAddresses(e){return[]}};var Mo=class{peerStore;datastore;peerRouting;log;datastorePrefix;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:get-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.peerStore=e.peerStore,this.datastore=e.datastore,this.peerRouting=t.peerRouting}async handle(e,t){let n=t.key;if(this.log("%p asked for key %b",e,n),n==null||n.length===0)throw new Pe("Invalid key");let o={type:$.GET_VALUE,key:n,clusterLevel:t.clusterLevel,closer:[],providers:[]};if(Q4(n)){this.log("is public key");let a=W4(n),c;try{let u=await this.peerStore.get(a);if(u.id.publicKey==null)throw new qe("No public key found in key book");c=Pt(u.id.publicKey)}catch(u){if(u.name!=="NotFoundError")throw u}if(c!=null)return this.log("returning found public key"),o.record=new fe(n,c,new Date).serialize(),o}let[i,s]=await Promise.all([this._checkLocalDatastore(n),this.peerRouting.getClosestPeersOffline(n)]);return i!=null&&(this.log("had record for %b in local datastore",n),o.record=i.serialize()),s.length>0&&(this.log("had %s closer peers in routing table",s.length),o.closer=s.map(a=>({id:a.id.toMultihash().bytes,multiaddrs:a.multiaddrs.map(c=>c.bytes)}))),o}async _checkLocalDatastore(e){this.log("checkLocalDatastore looking for %b",e);let t=Gt(this.datastorePrefix,e),n;try{n=await this.datastore.get(t)}catch(i){if(i.name==="NotFoundError")return;throw i}let o=fe.deserialize(n);if(o.timeReceived==null||Date.now()-o.timeReceived.getTime()>so){await this.datastore.delete(t);return}return o}};var Uo=class{log;constructor(e,t){this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:ping`)}async handle(e,t){return this.log("ping from %p",e),t}};var Ko=class{components;validators;log;datastorePrefix;constructor(e,t){let{validators:n}=t;this.components=e,this.log=e.logger.forComponent(`${t.logPrefix}:rpc:handlers:put-value`),this.datastorePrefix=`${t.datastorePrefix}/record`,this.validators=n}async handle(e,t){let n=t.key;if(this.log("%p asked us to store value for key %b",e,n),t.record==null)throw this.log.error("empty record from %p",e),new Pe(`Empty record from: ${e}`);try{let o=fe.deserialize(t.record);await Wr(this.validators,o),o.timeReceived=new Date;let i=Gt(this.datastorePrefix,o.key);await this.components.datastore.put(i,o.serialize().subarray()),this.log("put record for %b into datastore under key %k",n,i)}catch(o){this.log("did not put record for key %b into datastore %o",n,o)}return t}};var qo=class{handlers;log;metrics;incomingMessageTimeout;constructor(e,t){this.metrics={operations:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_requests_total`),errors:e.metrics?.registerCounterGroup(`${t.metricsPrefix}_inbound_rpc_errors_total`),rpcTime:e.metrics?.registerMetricGroup(`${t.metricsPrefix}_inbound_rpc_time_seconds`,{label:"operation"})},this.log=e.logger.forComponent(`${t.logPrefix}:rpc`),this.incomingMessageTimeout=t.incomingMessageTimeout??1e4,this.handlers={[$.GET_VALUE.toString()]:new Mo(e,t),[$.PUT_VALUE.toString()]:new Ko(e,t),[$.FIND_NODE.toString()]:new No(e,t),[$.ADD_PROVIDER.toString()]:new Bo(e,t),[$.GET_PROVIDERS.toString()]:new Fo(e,t),[$.PING.toString()]:new Uo(e,t)}}async handleMessage(e,t){let n=this.handlers[t.type];if(n==null){this.log.error(`no handler found for message type: ${t.type}`);return}try{return this.metrics.operations?.increment({[t.type]:!0}),await n.handle(e,t)}catch{this.metrics.errors?.increment({[t.type]:!0})}}async onIncomingStream(e,t){let n=()=>{e.abort(new Wn)},o=AbortSignal.timeout(this.incomingMessageTimeout);o.addEventListener("abort",n);let i=Rn(e).pb($t);for(;;){if(e.readStatus!=="readable"){await e.close({signal:o});break}let s=await i.read({signal:o}),a=this.metrics?.rpcTime?.timer(s.type.toString()),c=this.metrics?.rpcTime?.timer(s.type.toString()),u=!1;try{this.log("incoming %s from %p",s.type,t.remotePeer);let l=await this.handleMessage(t.remotePeer,s);l!=null&&await i.write(l,{signal:o})}catch(l){throw u=!0,c?.(),l}finally{u||a?.()}o.removeEventListener("abort",n),o=AbortSignal.timeout(this.incomingMessageTimeout),o.addEventListener("abort",n)}}};var zo=class extends Ce{log;components;protocol;running;registrarId;constructor(e,t){super();let{protocol:n,logPrefix:o}=t;this.components=e,this.log=e.logger.forComponent(`${o}:topology-listener`),this.running=!1,this.protocol=n}isStarted(){return this.running}async start(){this.running||(this.running=!0,this.registrarId=await this.components.registrar.register(this.protocol,{onConnect:e=>{this.log("observed peer %p with protocol %s",e,this.protocol),this.dispatchEvent(new CustomEvent("peer",{detail:e}))}}))}async stop(){this.running=!1,this.registrarId!=null&&(this.components.registrar.unregister(this.registrarId),this.registrarId=void 0)}};var O2=class{dht;constructor(e){this.dht=e}async provide(e,t={}){await kn(this.dht.provide(e,t))}async cancelReprovide(e){await this.dht.cancelReprovide(e)}async*findProviders(e,t={}){for await(let n of this.dht.findProviders(e,t))n.name==="PROVIDER"&&(yield*n.providers.map(o=>({...o,routing:"kad-dht"})))}async put(e,t,n){await kn(this.dht.put(e,t,n))}async get(e,t){for await(let n of this.dht.get(e,t))if(n.name==="VALUE")return n.value;throw new qe("Could not find value for key")}},B2=class{dht;constructor(e){this.dht=e}async findPeer(e,t={}){for await(let n of this.dht.findPeer(e,t))if(n.name==="FINAL_PEER")return n.peer;throw new qe("Peer not found")}async*getClosestPeers(e,t={}){for await(let n of this.dht.getClosestPeers(e,t))n.name==="FINAL_PEER"&&(yield n.peer)}},Z7=32,Q7=64,Vo=class extends Ce{k;a;d;protocol;routingTable;providers;network;peerRouting;components;log;running;clientMode;validators;selectors;queryManager;contentFetching;contentRouting;routingTableRefresh;rpc;topologyListener;querySelf;maxInboundStreams;maxOutboundStreams;dhtContentRouting;dhtPeerRouting;peerInfoMapper;reprovider;onPeerConnectTimeout;constructor(e,t={}){super();let n=t.logPrefix??"libp2p:kad-dht",o=t.datastorePrefix??"/dht",i=t.metricsPrefix??"libp2p_kad_dht",s={queries:e.metrics?.registerMetricGroup(`${i}_operations_total`,{label:"operation"}),errors:e.metrics?.registerCounterGroup(`${i}_operation_errors_total`,{label:"operation"}),queryTime:e.metrics?.registerMetricGroup(`${i}_operation_time_seconds`,{label:"operation"}),errorTime:e.metrics?.registerMetricGroup(`${i}_operation_error_time_seconds`,{label:"operation"})};this.running=!1,this.components=e,this.log=e.logger.forComponent(n),this.k=t.kBucketSize??jn,this.a=t.alpha??zt,this.d=t.disjointPaths??this.a,this.protocol=t.protocol??v4,this.clientMode=t.clientMode??!0,this.maxInboundStreams=t.maxInboundStreams??Z7,this.maxOutboundStreams=t.maxOutboundStreams??Q7,this.peerInfoMapper=t.peerInfoMapper??mo,this.onPeerConnectTimeout=t.onPeerConnectTimeout??A4,this.providers=new Io(e,{...t.providers,logPrefix:n,datastorePrefix:o}),this.validators={...q4,...t.validators},this.selectors={...K4,...t.selectors},this.network=new So(e,{protocol:this.protocol,logPrefix:n,metricsPrefix:i}),this.routingTable=new Lo(e,{kBucketSize:this.k,pingOldContactTimeout:t.pingOldContactTimeout,pingOldContactConcurrency:t.pingOldContactConcurrency,pingOldContactMaxQueueSize:t.pingOldContactMaxQueueSize,pingNewContactTimeout:t.pingNewContactTimeout,pingNewContactConcurrency:t.pingNewContactConcurrency,pingNewContactMaxQueueSize:t.pingNewContactMaxQueueSize,protocol:this.protocol,logPrefix:n,metricsPrefix:i,prefixLength:t.prefixLength,splitThreshold:t.kBucketSplitThreshold,network:this.network});let a=ce();t.allowQueryWithZeroPeers===!0&&a.resolve(),this.queryManager=new To(e,{disjointPaths:this.d,alpha:this.a,logPrefix:n,metricsPrefix:i,initialQuerySelfHasRun:a,routingTable:this.routingTable,allowQueryWithZeroPeers:t.allowQueryWithZeroPeers}),this.peerRouting=new _o(e,{routingTable:this.routingTable,network:this.network,validators:this.validators,queryManager:this.queryManager,logPrefix:n}),this.contentFetching=new xo(e,{validators:this.validators,selectors:this.selectors,peerRouting:this.peerRouting,queryManager:this.queryManager,network:this.network,logPrefix:n,datastorePrefix:o}),this.contentRouting=new vo(e,{network:this.network,peerRouting:this.peerRouting,queryManager:this.queryManager,routingTable:this.routingTable,providers:this.providers,logPrefix:n}),this.routingTableRefresh=new Oo(e,{peerRouting:this.peerRouting,routingTable:this.routingTable,logPrefix:n}),this.rpc=new qo(e,{routingTable:this.routingTable,providers:this.providers,peerRouting:this.peerRouting,validators:this.validators,logPrefix:n,metricsPrefix:i,datastorePrefix:o,peerInfoMapper:this.peerInfoMapper}),this.topologyListener=new zo(e,{protocol:this.protocol,logPrefix:n}),this.querySelf=new Po(e,{peerRouting:this.peerRouting,interval:t.querySelfInterval,initialInterval:t.initialQuerySelfInterval,logPrefix:n,initialQuerySelfHasRun:a,operationMetrics:s}),this.reprovider=new Co(e,{...t.reprovide,logPrefix:n,metricsPrefix:i,datastorePrefix:o,contentRouting:this.contentRouting,operationMetrics:s}),this.network.addEventListener("peer",c=>{let u=c.detail;this.onPeerConnect(u).catch(l=>{this.log.error("could not add %p to routing table - %e",u.id,l)}),this.dispatchEvent(new CustomEvent("peer",{detail:u}))}),this.topologyListener.addEventListener("peer",c=>{let u=c.detail;Promise.resolve().then(async()=>{let l=await this.components.peerStore.get(u),f={id:u,multiaddrs:l.addresses.map(({multiaddr:d})=>d),protocols:l.protocols};await this.onPeerConnect(f)}).catch(l=>{this.log.error("could not add %p to routing table - %e",u,l)})}),this.dhtPeerRouting=new B2(this),this.dhtContentRouting=new O2(this),t.clientMode==null&&e.events.addEventListener("self:peer:update",c=>{this.log("received update of self-peer info"),Promise.resolve().then(async()=>{let u=c.detail.peer.addresses.some(({multiaddr:f})=>!An(f)&&!E4.exactMatch(f)),l=this.getMode();u&&l==="client"?await this.setMode("server"):l==="server"&&!u&&await this.setMode("client")}).catch(u=>{this.log.error("error setting dht server mode - %e",u)})}),this.get=gr(this.get.bind(this),s,"GET_VALUE"),this.findProviders=gr(this.findProviders.bind(this),s,"FIND_PROVIDERS"),this.findPeer=gr(this.findPeer.bind(this),s,"FIND_PEER"),this.getClosestPeers=gr(this.getClosestPeers.bind(this),s,"GET_CLOSEST_PEERS"),this.provide=gr(this.provide.bind(this),s,"PROVIDE"),this.put=gr(this.put.bind(this),s,"PUT_VALUE")}[Symbol.toStringTag]="@libp2p/kad-dht";[$2]=["@libp2p/content-routing","@libp2p/peer-routing","@libp2p/peer-discovery","@libp2p/kad-dht"];[j2]=["@libp2p/identify","@libp2p/ping"];get[K2](){return this.dhtContentRouting}get[z2](){return this.dhtPeerRouting}get[q2](){return this}async onPeerConnect(e){if(this.log.trace("peer %p connected",e.id,e.multiaddrs),e=this.peerInfoMapper(e),e.multiaddrs.length===0){this.log.trace("ignoring %p as there were no valid addresses in %s after filtering",e.id,e.multiaddrs.map(n=>n.toString()));return}let t=AbortSignal.timeout(this.onPeerConnectTimeout);try{await this.routingTable.add(e.id,{signal:t})}catch(n){this.log.error("could not add %p to routing table - %e",e.id,n)}}isStarted(){return this.running}getMode(){return this.clientMode?"client":"server"}async setMode(e,t){if(e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}if(await this.components.registrar.unhandle(this.protocol,t),e===this.getMode()&&t?.force!==!0){this.log("already in %s mode",e);return}e==="client"?(this.log("enabling client mode while in %s mode",this.getMode()),this.clientMode=!0):(this.log("enabling server mode while in %s mode",this.getMode()),this.clientMode=!1,await this.components.registrar.handle(this.protocol,this.rpc.onIncomingStream.bind(this.rpc),{signal:t?.signal,maxInboundStreams:this.maxInboundStreams,maxOutboundStreams:this.maxOutboundStreams}))}async start(){this.running||(this.running=!0,await this.setMode(this.clientMode?"client":"server",{force:!0}),await Jr(this.routingTable,this.queryManager,this.network,this.topologyListener,this.routingTableRefresh,this.reprovider),await Jr(this.querySelf))}async stop(){this.running=!1,await Xn(this.querySelf,this.queryManager,this.network,this.routingTable,this.routingTableRefresh,this.topologyListener,this.reprovider)}async*put(e,t,n={}){yield*this.contentFetching.put(e,t,n)}async*get(e,t={}){yield*this.contentFetching.get(e,t)}async*provide(e,t={}){yield*this.contentRouting.provide(e,this.components.addressManager.getAddresses(),t)}async cancelReprovide(e,t){await this.providers.removeProvider(e,this.components.peerId,t)}async*findProviders(e,t={}){yield*this.contentRouting.findProviders(e,t)}async*findPeer(e,t={}){yield*this.peerRouting.findPeer(e,t)}async*getClosestPeers(e,t={}){yield*this.peerRouting.getClosestPeers(e,t)}async refreshRoutingTable(e){this.routingTableRefresh.refreshTable(!0,e)}};var N2;(function(r){r[r.SEND_QUERY=0]="SEND_QUERY",r[r.PEER_RESPONSE=1]="PEER_RESPONSE",r[r.FINAL_PEER=2]="FINAL_PEER",r[r.QUERY_ERROR=3]="QUERY_ERROR",r[r.PROVIDER=4]="PROVIDER",r[r.VALUE=5]="VALUE",r[r.ADD_PEER=6]="ADD_PEER",r[r.DIAL_PEER=7]="DIAL_PEER",r[r.PATH_ENDED=8]="PATH_ENDED"})(N2||(N2={}));function W7(r={}){return e=>new Vo(e,r)}return p5(X7);})();
|
|
3
3
|
/*! Bundled license information:
|
|
4
4
|
|
|
5
|
-
@noble/hashes/utils.js:
|
|
6
|
-
(*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
|
|
7
|
-
|
|
8
5
|
@noble/curves/utils.js:
|
|
9
6
|
@noble/curves/abstract/modular.js:
|
|
10
7
|
@noble/curves/abstract/curve.js:
|