mte-relay-browser-public-client 5.0.0-beta.9 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/index.cjs +1 -1
  2. package/dist/index.mjs +964 -617
  3. package/dist/types/core/index.d.ts +1 -0
  4. package/dist/types/{mte-relay → core/mte-relay}/auth.d.ts +1 -1
  5. package/dist/types/{mte-relay → core/mte-relay}/client.d.ts +47 -2
  6. package/dist/types/{mte-relay → core/mte-relay}/config.d.ts +1 -1
  7. package/dist/types/{mte-relay → core/mte-relay}/diagnostics.d.ts +1 -1
  8. package/dist/types/{mte-relay → core/mte-relay}/discovery.d.ts +1 -1
  9. package/dist/types/{mte-relay → core/mte-relay}/errors.d.ts +4 -4
  10. package/dist/types/{mte-relay → core/mte-relay}/headerPolicy.d.ts +1 -1
  11. package/dist/types/core/mte-relay/index.d.ts +26 -0
  12. package/dist/types/{mte-relay → core/mte-relay}/mteBootstrap.d.ts +1 -1
  13. package/dist/types/{mte-relay → core/mte-relay}/mteProfile.d.ts +1 -1
  14. package/dist/types/{mte-relay → core/mte-relay}/pairing.d.ts +2 -2
  15. package/dist/types/{mte-relay → core/mte-relay}/pool.d.ts +2 -2
  16. package/dist/types/core/mte-relay/requestStreaming.d.ts +90 -0
  17. package/dist/types/{mte-relay → core/mte-relay}/transport.d.ts +11 -4
  18. package/dist/types/{mte-relay → core/mte-relay}/types.d.ts +28 -1
  19. package/dist/types/core/protocol/base64.d.ts +25 -0
  20. package/dist/types/core/protocol/canonicalJson.d.ts +43 -0
  21. package/dist/types/core/protocol/data.d.ts +10 -0
  22. package/dist/types/core/protocol/envelope.d.ts +96 -0
  23. package/dist/types/core/protocol/errorFrame.d.ts +31 -0
  24. package/dist/types/core/protocol/metadata.d.ts +150 -0
  25. package/dist/types/core/protocol/method.d.ts +49 -0
  26. package/dist/types/core/protocol/personalization.d.ts +57 -0
  27. package/dist/types/core/protocol/reader.d.ts +82 -0
  28. package/dist/types/core/protocol/registry.d.ts +183 -0
  29. package/dist/types/core/protocol/request.d.ts +37 -0
  30. package/dist/types/core/protocol/response.d.ts +18 -0
  31. package/dist/types/core/protocol/sha256.d.ts +10 -0
  32. package/dist/types/core/protocol/token.d.ts +30 -0
  33. package/dist/types/index.d.ts +4 -1
  34. package/dist/types/mte/Mte.d.ts +1285 -0
  35. package/package.json +8 -6
  36. package/readme.md +69 -0
  37. package/dist/types/mte-relay/index.d.ts +0 -13
  38. /package/dist/types/{mte-relay → core/mte-relay}/abort.d.ts +0 -0
  39. /package/dist/types/{mte-relay → core/mte-relay}/keepalive.d.ts +0 -0
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),t=e(((e,t)=>{t.exports={}})),n=e((e=>{var n=e&&e.__awaiter||function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};Object.defineProperty(e,"__esModule",{value:!0}),e.MteMem=e.MteWasm=e.MteKyber=e.MteKyberStatus=e.MteKyberStrength=e.MteRandom=e.MteSdrStorage=e.MteSdrCookie=e.MteSdrAbs=e.MteMkeDec=e.MteMkeEnc=e.MteDec=e.MteEnc=e.MteBase=e.MteInitInfo=e.MteHashes=e.MteCiphers=e.MteVerifiers=e.MteDrbgs=e.MteStatus=void 0;var r;(function(e){e[e.mte_status_success=0]=`mte_status_success`,e[e.mte_status_invalid_input=1]=`mte_status_invalid_input`,e[e.mte_status_unsupported=2]=`mte_status_unsupported`,e[e.mte_status_drbg_error=3]=`mte_status_drbg_error`,e[e.mte_status_drbg_catastrophic=4]=`mte_status_drbg_catastrophic`,e[e.mte_status_drbg_seedlife_reached=5]=`mte_status_drbg_seedlife_reached`,e[e.mte_status_cipher_test_failed=6]=`mte_status_cipher_test_failed`,e[e.mte_status_hash_test_failed=7]=`mte_status_hash_test_failed`,e[e.mte_status_output_inhibited=8]=`mte_status_output_inhibited`,e[e.mte_status_impl_error=9]=`mte_status_impl_error`,e[e.mte_status_license_error=10]=`mte_status_license_error`,e[e.mte_status_token_does_not_exist=11]=`mte_status_token_does_not_exist`,e[e.mte_status_checksum_mismatch=12]=`mte_status_checksum_mismatch`,e[e.mte_status_digest_mismatch=13]=`mte_status_digest_mismatch`,e[e.mte_status_time_before_exceeded=14]=`mte_status_time_before_exceeded`,e[e.mte_status_time_after_exceeded=15]=`mte_status_time_after_exceeded`,e[e.mte_status_seq_outside_window=16]=`mte_status_seq_outside_window`,e[e.mte_status_seq_async_replay=17]=`mte_status_seq_async_replay`,e[e.mte_status_seq_mismatch=18]=`mte_status_seq_mismatch`})(r||(e.MteStatus=r={}));var i;(function(e){e[e.mte_drbgs_none=0]=`mte_drbgs_none`,e[e.mte_drbgs_increment=1]=`mte_drbgs_increment`,e[e.mte_drbgs_ctr_aes128_df=2]=`mte_drbgs_ctr_aes128_df`,e[e.mte_drbgs_ctr_aes128_nodf=3]=`mte_drbgs_ctr_aes128_nodf`,e[e.mte_drbgs_ctr_aes192_df=4]=`mte_drbgs_ctr_aes192_df`,e[e.mte_drbgs_ctr_aes192_nodf=5]=`mte_drbgs_ctr_aes192_nodf`,e[e.mte_drbgs_ctr_aes256_df=6]=`mte_drbgs_ctr_aes256_df`,e[e.mte_drbgs_ctr_aes256_nodf=7]=`mte_drbgs_ctr_aes256_nodf`,e[e.mte_drbgs_hash_sha1=8]=`mte_drbgs_hash_sha1`,e[e.mte_drbgs_hash_sha256=9]=`mte_drbgs_hash_sha256`,e[e.mte_drbgs_hash_sha512=10]=`mte_drbgs_hash_sha512`})(i||(e.MteDrbgs=i={}));var a;(function(e){e[e.mte_verifiers_none=0]=`mte_verifiers_none`,e[e.mte_verifiers_crc32=1]=`mte_verifiers_crc32`,e[e.mte_verifiers_crc32_seq=2]=`mte_verifiers_crc32_seq`,e[e.mte_verifiers_seq=3]=`mte_verifiers_seq`,e[e.mte_verifiers_t64=4]=`mte_verifiers_t64`,e[e.mte_verifiers_t64_crc32=5]=`mte_verifiers_t64_crc32`,e[e.mte_verifiers_t64_crc32_seq=6]=`mte_verifiers_t64_crc32_seq`,e[e.mte_verifiers_t64_seq=7]=`mte_verifiers_t64_seq`})(a||(e.MteVerifiers=a={}));var o;(function(e){e[e.mte_ciphers_none=0]=`mte_ciphers_none`,e[e.mte_ciphers_aes128_ctr=1]=`mte_ciphers_aes128_ctr`,e[e.mte_ciphers_aes192_ctr=2]=`mte_ciphers_aes192_ctr`,e[e.mte_ciphers_aes256_ctr=3]=`mte_ciphers_aes256_ctr`})(o||(e.MteCiphers=o={}));var s;(function(e){e[e.mte_hashes_none=0]=`mte_hashes_none`,e[e.mte_hashes_crc32=1]=`mte_hashes_crc32`,e[e.mte_hashes_sha1=2]=`mte_hashes_sha1`,e[e.mte_hashes_sha256=3]=`mte_hashes_sha256`,e[e.mte_hashes_sha512=4]=`mte_hashes_sha512`})(s||(e.MteHashes=s={}));var c;(function(e){e[e.mte_init_info_arm64_aes_paa=0]=`mte_init_info_arm64_aes_paa`,e[e.mte_init_info_arm64_sha1_paa=1]=`mte_init_info_arm64_sha1_paa`,e[e.mte_init_info_arm64_sha256_paa=2]=`mte_init_info_arm64_sha256_paa`,e[e.mte_init_info_arm64_sha512_paa=3]=`mte_init_info_arm64_sha512_paa`,e[e.mte_init_info_arm64_crc32_paa=4]=`mte_init_info_arm64_crc32_paa`})(c||(e.MteInitInfo=c={}));var l=class e{constructor(t){if(this.drbg=i.mte_drbgs_none,this.tokBytes=0,this.verifiers=a.mte_verifiers_none,this.cipher=o.mte_ciphers_none,this.hash_=s.mte_hashes_none,this.entropyInput=new _,this.nonce=null,this.nonceIntBytes=0,this.eiCallback=null,this.nCallback=null,this.tsCallback=null,this.initBase=(e,t,n,r,i)=>{this.drbg=e,this.tokBytes=t,this.verifiers=n,this.cipher=r,this.hash_=i,this.nonceIntBytes=Math.max(this.getDrbgsNonceMinBytes(e),Math.min(8,this.getDrbgsNonceMaxBytes(e)))},this.destructBase=()=>{this.wasm.free(this.entropyInput),this.entropyInput.invalidate()},this.getVersion=()=>{let e=this.exports.mte_base_version();return this.wasm.wasmOffToStr(e)},this.getVersionMajor=()=>this.exports.mte_wasm_base_version_major(),this.getVersionMinor=()=>this.exports.mte_wasm_base_version_minor(),this.getVersionPatch=()=>this.exports.mte_wasm_base_version_patch(),this.initLicense=(e,t)=>{let n=this.wasm.strToWasm(e),r=this.wasm.strToWasm(t),i=this.exports.mte_license_init(n.off,r.off);return this.wasm.free(n),this.wasm.free(r),i},this.getStatusCount=()=>this.exports.mte_wasm_base_status_count(),this.getStatusName=e=>{let t=this.exports.mte_wasm_base_status_name(e);return this.wasm.wasmOffToStr(t)},this.getStatusDescription=e=>{let t=this.exports.mte_wasm_base_status_description(e);return this.wasm.wasmOffToStr(t)},this.getStatusCode=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_base_status_code(t.off);return this.wasm.free(t),n},this.statusIsError=e=>this.exports.mte_base_status_is_error(e),this.hasRuntimeOpts=()=>this.exports.mte_wasm_base_has_runtime_opts(),this.getDefaultDrbg=()=>this.exports.mte_wasm_base_default_drbg(),this.getDefaultTokBytes=()=>this.exports.mte_wasm_base_default_tok_bytes(),this.getDefaultVerifiers=()=>this.exports.mte_wasm_base_default_verifiers(),this.getDefaultCipher=()=>this.exports.mte_wasm_base_default_cipher(),this.getDefaultHash=()=>this.exports.mte_wasm_base_default_hash(),this.getDrbgsCount=()=>this.exports.mte_wasm_base_drbgs_count(),this.getDrbgsName=e=>{let t=this.exports.mte_wasm_base_drbgs_name(e);return this.wasm.wasmOffToStr(t)},this.getDrbgsAlgo=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_base_drbgs_algo(t.off);return this.wasm.free(t),n},this.getDrbgsSecStrengthBytes=e=>this.exports.mte_wasm_base_drbgs_sec_strength_bytes(e),this.getDrbgsPersonalMinBytes=e=>this.exports.mte_wasm_base_drbgs_personal_min_bytes(e),this.getDrbgsPersonalMaxBytes=e=>this.exports.mte_wasm_base_drbgs_personal_max_bytes(e),this.getDrbgsEntropyMinBytes=e=>this.exports.mte_wasm_base_drbgs_entropy_min_bytes(e),this.getDrbgsEntropyMaxBytes=e=>this.exports.mte_wasm_base_drbgs_entropy_max_bytes(e),this.getDrbgsNonceMinBytes=e=>this.exports.mte_wasm_base_drbgs_nonce_min_bytes(e),this.getDrbgsNonceMaxBytes=e=>this.exports.mte_wasm_base_drbgs_nonce_max_bytes(e),this.getDrbgsReseedInterval=e=>this.exports.mte_wasm_base_drbgs_reseed_interval(e),this.setIncrInstError=e=>{this.exports.mte_wasm_base_drbgs_incr_inst_error(e)},this.setIncrGenError=(e,t)=>{this.exports.mte_wasm_base_drbgs_incr_gen_error(e,t)},this.getVerifiersCount=()=>this.exports.mte_wasm_base_verifiers_count(),this.getVerifiersName=e=>{let t=this.exports.mte_wasm_base_verifiers_name(e);return this.wasm.wasmOffToStr(t)},this.getVerifiersAlgo=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_base_verifiers_algo(t.off);return this.wasm.free(t),n},this.getCiphersCount=()=>this.exports.mte_wasm_base_ciphers_count(),this.getCiphersName=e=>{let t=this.exports.mte_wasm_base_ciphers_name(e);return this.wasm.wasmOffToStr(t)},this.getCiphersAlgo=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_base_ciphers_algo(t.off);return this.wasm.free(t),n},this.getCiphersBlockBytes=e=>this.exports.mte_wasm_base_ciphers_block_bytes(e),this.getHashesCount=()=>this.exports.mte_wasm_base_hashes_count(),this.getHashesName=e=>{let t=this.exports.mte_wasm_base_hashes_name(e);return this.wasm.wasmOffToStr(t)},this.getHashesAlgo=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_base_hashes_algo(t.off);return this.wasm.free(t),n},this.getDrbg=()=>this.drbg,this.getTokBytes=()=>this.tokBytes,this.getVerifiers=()=>this.verifiers,this.getCipher=()=>this.cipher,this.getHash=()=>this.hash_,this.setEntropyCallback=e=>{this.eiCallback=e},this.setEntropyArr=e=>{this.wasm.free(this.entropyInput),this.entropyInput=this.wasm.arrToWasm(e);for(let t=0;t<e.length;++t)e[t]=0},this.setEntropyStr=e=>{this.wasm.free(this.entropyInput),this.entropyInput=this.wasm.strToWasm(e)},this.setEntropyB64=e=>{this.wasm.free(this.entropyInput),this.entropyInput=this.wasm.strToWasm(e);let t=this.exports.mte_wasm_base64_decode(this.entropyInput.off);this.entropyInput.used=t},this.setNonceCallback=e=>{this.nCallback=e},this.setNonceArr=e=>{this.nonce=e},this.setNonce=e=>{let t=new Uint8Array(this.nonceIntBytes);for(let n=0;n<e.length;++n){let r=parseInt(e.charAt(n));for(let e=0;e<t.length;++e){let n=t[e]*10+r;t[e]=n%256,r=Math.floor(n/256)}}this.setNonceArr(t)},this.setTimestampCallback=e=>{this.tsCallback=e},this.entropyCallback=(t,n,i,a,o,s)=>{let c=e.instances[t];return c.eiCallback?c.eiCallback.entropyCallback(n,i,a,o,s):c.entropyInput.used<i||c.entropyInput.used>a?r.mte_status_drbg_catastrophic:(c.wasm.intToWasm(o,c.entropyInput.off),c.wasm.intToWasm(s,c.entropyInput.used),r.mte_status_success)},this.nonceCallback=(t,n,r,i,a)=>{let o=e.instances[t];if(o.nCallback){o.nCallback.nonceCallback(n,r,i,a);return}if(o.nonce==null){o.wasm.intToWasm(a,0);return}this.wasm.arrToOffLen(o.nonce,i,o.nonce.length),o.wasm.intToWasm(a,o.nonce.length)},this.timestampCallback=(t,n)=>{let r=e.instances[t],i={ts:0,upper:0};r.tsCallback&&(i=r.tsCallback.timestampCallback()),i.upper==0?r.wasm.int64ToWasm(n,i.ts):(r.wasm.intToWasm(n,i.ts),r.wasm.intToWasm(n+4,i.upper))},this.wasm=t,t.exports!==null)this.exports=t.exports;else throw TypeError(`MteBase: WASM does not have exports.`);if(t.memory!==null)this.memory=t.memory;else throw TypeError(`MteBase: WASM does not have memory.`);if(t.entropyCallback===null&&(t.entropyCallback=this.entropyCallback),t.nonceCallback===null&&(t.nonceCallback=this.nonceCallback),t.timestampCallback===null&&(t.timestampCallback=this.timestampCallback),this.instance=e.instances.length,e.instances.push(this),!e.mteInitialized&&this.exports.mte_init(0,0)==0)throw Error(`MteBase: MTE init error.`)}};e.MteBase=l,l.instances=[],l.mteInitialized=!1,e.MteEnc=class e extends l{constructor(e,t,n,i){super(e),this.destruct=()=>{this.destructBase(),this.wasm.free(this.encoder),this.encoder.invalidate(),this.wasm.free(this.saved),this.saved.invalidate(),this.wasm.free(this.saved64),this.saved64.invalidate()},this.instantiate=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_enc_instantiate(this.encoder.off,this.instance,this.instance,t.off,t.used);return this.wasm.free(t),n},this.getReseedCounter=()=>this.exports.mte_wasm_enc_reseed_counter(this.encoder.off),this.saveState=()=>this.exports.mte_enc_state_save(this.encoder.off,this.saved.off)==r.mte_status_success?new Uint8Array(this.saved.buff):null,this.saveStateB64=()=>this.exports.mte_wasm_enc_state_save_b64(this.encoder.off,this.saved64.off)==r.mte_status_success?this.wasm.wasmToStr(this.saved64):null,this.restoreState=e=>(this.wasm.arrToOffLen(e,this.saved.off,e.length),this.exports.mte_enc_state_restore(this.encoder.off,this.saved.off)),this.restoreStateB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_enc_state_restore_b64(this.encoder.off,t.off);return this.wasm.free(t),n},this.encode=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_enc_buff_bytes(this.encoder.off,e.length),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_enc_encode(this.encoder.off,this.instance,t.off,e.length,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToInt(o.off),u=i.buff.slice(c,c+l);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:u,status:s}},this.encodeB64=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_wasm_enc_buff_bytes_b64(this.encoder.off,e.length),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_enc_encode_b64(this.encoder.off,this.instance,t.off,e.length,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToStr(i,c);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:l,status:s}},this.encodeStr=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_enc_buff_bytes(this.encoder.off,t.used),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_enc_encode(this.encoder.off,this.instance,t.off,t.used,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToInt(o.off),u=i.buff.slice(c,c+l);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:u,status:s}},this.encodeStrB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_enc_buff_bytes_b64(this.encoder.off,t.used),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_enc_encode_b64(this.encoder.off,this.instance,t.off,t.used,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToStr(i,c);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:l,status:s}},this.uninstantiate=()=>this.exports.mte_enc_uninstantiate(this.encoder.off);let a=typeof t==`string`?this.getDrbgsAlgo(t):t,c=typeof i==`string`?this.getVerifiersAlgo(i):i;this.initBase(a,n,c,o.mte_ciphers_none,s.mte_hashes_none);let l=this.exports.mte_wasm_enc_state_bytes(a,n,c);if(l==0||(this.encoder=e.malloc(l),this.exports.mte_wasm_enc_state_init(this.encoder.off,a,n,c)!=r.mte_status_success))throw RangeError(`MteEnc: Invalid options.`);this.saved=e.malloc(this.exports.mte_enc_save_bytes(this.encoder.off)),this.saved64=e.malloc(this.exports.mte_wasm_enc_save_bytes_b64(this.encoder.off))}static fromdefault(t){let n=new l(t);return new e(t,n.getDefaultDrbg(),n.getDefaultTokBytes(),n.getDefaultVerifiers())}},e.MteDec=class e extends l{constructor(e,t,n,i,a,c){super(e),this.encTs={ts:0,upper:0},this.decTs={ts:0,upper:0},this.msgSkipped=0,this.destruct=()=>{this.destructBase(),this.wasm.free(this.decoder),this.decoder.invalidate(),this.wasm.free(this.saved),this.saved.invalidate(),this.wasm.free(this.saved64),this.saved64.invalidate()},this.instantiate=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_dec_instantiate(this.decoder.off,this.instance,this.instance,t.off,t.used);return this.wasm.free(t),n},this.getReseedCounter=()=>this.exports.mte_wasm_dec_reseed_counter(this.decoder.off),this.saveState=()=>this.exports.mte_dec_state_save(this.decoder.off,this.saved.off)==r.mte_status_success?new Uint8Array(this.saved.buff):null,this.saveStateB64=()=>this.exports.mte_wasm_dec_state_save_b64(this.decoder.off,this.saved64.off)==r.mte_status_success?this.wasm.wasmToStr(this.saved64):null,this.restoreState=e=>(this.wasm.arrToOffLen(e,this.saved.off,e.length),this.exports.mte_dec_state_restore(this.decoder.off,this.saved.off)),this.restoreStateB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_dec_state_restore_b64(this.decoder.off,t.off);return this.wasm.free(t),n},this.decode=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_dec_buff_bytes(this.decoder.off,e.length),r=this.wasm.malloc(n),i=this.wasm.newInt(),a=this.wasm.newInt(),o=this.wasm.newInt64(),s=this.wasm.newInt64(),c=this.wasm.newInt(),l=this.exports.mte_wasm_dec_decode(this.decoder.off,this.instance,t.off,e.length,r.off,i.off,a.off,o.off,s.off,c.off);if(this.statusIsError(l))return this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{arr:null,status:l};let u=this.wasm.wasmToInt(i.off),d=this.wasm.wasmToInt(a.off),f=r.buff.slice(u,u+d);return this.encTs=this.wasm.wasmToTimestamp(o),this.decTs=this.wasm.wasmToTimestamp(s),this.msgSkipped=this.wasm.wasmToInt(c.off),this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{arr:f,status:l}},this.decodeB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_dec_buff_bytes_b64(this.decoder.off,t.used),r=this.wasm.malloc(n),i=this.wasm.newInt(),a=this.wasm.newInt(),o=this.wasm.newInt64(),s=this.wasm.newInt64(),c=this.wasm.newInt(),l=this.exports.mte_wasm_dec_decode_b64(this.decoder.off,this.instance,t.off,t.used,r.off,i.off,a.off,o.off,s.off,c.off);if(this.statusIsError(l))return this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{arr:null,status:l};let u=this.wasm.wasmToInt(i.off),d=this.wasm.wasmToInt(a.off),f=r.buff.slice(u,u+d);return this.encTs=this.wasm.wasmToTimestamp(o),this.decTs=this.wasm.wasmToTimestamp(s),this.msgSkipped=this.wasm.wasmToInt(c.off),this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{arr:f,status:l}},this.decodeStr=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_dec_buff_bytes(this.decoder.off,e.length),r=this.wasm.malloc(n),i=this.wasm.newInt(),a=this.wasm.newInt(),o=this.wasm.newInt64(),s=this.wasm.newInt64(),c=this.wasm.newInt(),l=this.exports.mte_wasm_dec_decode(this.decoder.off,this.instance,t.off,e.length,r.off,i.off,a.off,o.off,s.off,c.off);if(this.statusIsError(l))return this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{str:null,status:l};let u=this.wasm.wasmToInt(i.off),d=this.wasm.wasmToStr(r,u);return this.encTs=this.wasm.wasmToTimestamp(o),this.decTs=this.wasm.wasmToTimestamp(s),this.msgSkipped=this.wasm.wasmToInt(c.off),this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{str:d,status:l}},this.decodeStrB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_dec_buff_bytes_b64(this.decoder.off,t.used),r=this.wasm.malloc(n),i=this.wasm.newInt(),a=this.wasm.newInt(),o=this.wasm.newInt64(),s=this.wasm.newInt64(),c=this.wasm.newInt(),l=this.exports.mte_wasm_dec_decode_b64(this.decoder.off,this.instance,t.off,t.used,r.off,i.off,a.off,o.off,s.off,c.off);if(this.statusIsError(l))return this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{str:null,status:l};let u=this.wasm.wasmToInt(i.off),d=this.wasm.wasmToStr(r,u);return this.encTs=this.wasm.wasmToTimestamp(o),this.decTs=this.wasm.wasmToTimestamp(s),this.msgSkipped=this.wasm.wasmToInt(c.off),this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{str:d,status:l}},this.getEncTs=()=>this.encTs,this.getDecTs=()=>this.decTs,this.getMsgSkipped=()=>this.msgSkipped,this.uninstantiate=()=>this.exports.mte_dec_uninstantiate(this.decoder.off);let l=typeof t==`string`?this.getDrbgsAlgo(t):t,u=typeof i==`string`?this.getVerifiersAlgo(i):i;this.initBase(l,n,u,o.mte_ciphers_none,s.mte_hashes_none);let d=this.exports.mte_wasm_dec_state_bytes(l,n,u);if(d==0)throw RangeError(`MteDec: Invalid options.`);if(this.decoder=e.malloc(d),this.exports.mte_wasm_dec_state_init(this.decoder.off,l,n,u,a,c)!=r.mte_status_success)throw this.wasm.free(this.decoder),RangeError(`MteDec: Invalid options.`);this.saved=e.malloc(this.exports.mte_dec_save_bytes(this.decoder.off)),this.saved64=e.malloc(this.exports.mte_wasm_dec_save_bytes_b64(this.decoder.off))}static fromdefault(t,n=0,r=0){let i=new l(t);return new e(t,i.getDefaultDrbg(),i.getDefaultTokBytes(),i.getDefaultVerifiers(),n,r)}};var u=class e extends l{constructor(e,t,n,i,a,o){super(e),this.destruct=()=>{this.destructBase(),this.wasm.free(this.encoder),this.encoder.invalidate(),this.wasm.free(this.saved),this.saved.invalidate(),this.wasm.free(this.saved64),this.saved64.invalidate(),this.wasm.free(this.chunk),this.chunk.invalidate()},this.instantiate=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_mke_enc_instantiate(this.encoder.off,this.instance,this.instance,t.off,t.used);return this.wasm.free(t),n},this.getReseedCounter=()=>this.exports.mte_wasm_mke_enc_reseed_counter(this.encoder.off),this.saveState=()=>this.exports.mte_mke_enc_state_save(this.encoder.off,this.saved.off)==r.mte_status_success?new Uint8Array(this.saved.buff):null,this.saveStateB64=()=>this.exports.mte_wasm_mke_enc_state_save_b64(this.encoder.off,this.saved64.off)==r.mte_status_success?this.wasm.wasmToStr(this.saved64):null,this.restoreState=e=>(this.wasm.arrToOffLen(e,this.saved.off,e.length),this.exports.mte_mke_enc_state_restore(this.encoder.off,this.saved.off)),this.restoreStateB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_mke_enc_state_restore_b64(this.encoder.off,t.off);return this.wasm.free(t),n},this.encode=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_mke_enc_buff_bytes(this.encoder.off,e.length),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_mke_enc_encode(this.encoder.off,this.instance,t.off,e.length,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToInt(o.off),u=i.buff.slice(c,c+l);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:u,status:s}},this.encodeB64=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_wasm_mke_enc_buff_bytes_b64(this.encoder.off,e.length),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_mke_enc_encode_b64(this.encoder.off,this.instance,t.off,e.length,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToStr(i,c);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:l,status:s}},this.encodeStr=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_mke_enc_buff_bytes(this.encoder.off,t.used),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_mke_enc_encode(this.encoder.off,this.instance,t.off,t.used,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToInt(o.off),u=i.buff.slice(c,c+l);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{arr:u,status:s}},this.encodeStrB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_mke_enc_buff_bytes_b64(this.encoder.off,t.used),i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.exports.mte_wasm_mke_enc_encode_b64(this.encoder.off,this.instance,t.off,t.used,i.off,a.off,o.off);if(s!=r.mte_status_success)return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:null,status:s};let c=this.wasm.wasmToInt(a.off),l=this.wasm.wasmToStr(i,c);return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),{str:l,status:s}},this.encryptFinishBytes=()=>this.exports.mte_mke_enc_encrypt_finish_bytes(this.encoder.off),this.startEncrypt=()=>this.exports.mte_mke_enc_encrypt_start(this.encoder.off,this.chunk.off),this.encryptChunk=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_wasm_mke_enc_encrypt_chunk(this.encoder.off,this.chunk.off,t.off,e.length,t.off),i=null;return n==r.mte_status_success&&(i=new Uint8Array(t.buff)),this.wasm.free(t),i},this.finishEncrypt=()=>{let e=this.wasm.newInt(),t=this.wasm.newInt(),n=this.exports.mte_wasm_mke_enc_encrypt_finish(this.encoder.off,this.chunk.off,this.instance,e.off,t.off);if(n!=r.mte_status_success)return this.wasm.free(e),this.wasm.free(t),{arr:null,status:n};let i=this.wasm.wasmToInt(e.off),a=this.wasm.wasmToInt(t.off),o=this.chunk.buff.slice(i,i+a);return this.wasm.free(e),this.wasm.free(t),{arr:o,status:n}},this.uninstantiate=()=>this.exports.mte_mke_enc_uninstantiate(this.encoder.off);let s=typeof t==`string`?this.getDrbgsAlgo(t):t,c=typeof i==`string`?this.getVerifiersAlgo(i):i,l=typeof a==`string`?this.getCiphersAlgo(a):a,u=typeof o==`string`?this.getHashesAlgo(o):o;this.initBase(s,n,c,l,u);let d=this.exports.mte_wasm_mke_enc_state_bytes(s,n,c,l,u);if(d==0||(this.encoder=e.malloc(d),this.exports.mte_wasm_mke_enc_state_init(this.encoder.off,s,n,c,l,u)!=r.mte_status_success))throw RangeError(`MteMkeEnc: Invalid options.`);this.saved=e.malloc(this.exports.mte_mke_enc_save_bytes(this.encoder.off)),this.saved64=e.malloc(this.exports.mte_wasm_mke_enc_save_bytes_b64(this.encoder.off)),this.chunk=e.malloc(this.exports.mte_mke_enc_encrypt_state_bytes(this.encoder.off))}static fromdefault(t){let n=new l(t);return new e(t,n.getDefaultDrbg(),n.getDefaultTokBytes(),n.getDefaultVerifiers(),n.getDefaultCipher(),n.getDefaultHash())}};e.MteMkeEnc=u;var d=class e extends l{constructor(e,t,n,i,a,o,s,c){super(e),this.encTs={ts:0,upper:0},this.decTs={ts:0,upper:0},this.msgSkipped=0,this.destruct=()=>{this.destructBase(),this.wasm.free(this.decoder),this.decoder.invalidate(),this.wasm.free(this.saved),this.saved.invalidate(),this.wasm.free(this.saved64),this.saved64.invalidate(),this.wasm.free(this.chunk),this.chunk.invalidate()},this.instantiate=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_mke_dec_instantiate(this.decoder.off,this.instance,this.instance,t.off,t.used);return this.wasm.free(t),n},this.getReseedCounter=()=>this.exports.mte_wasm_mke_dec_reseed_counter(this.decoder.off),this.saveState=()=>this.exports.mte_mke_dec_state_save(this.decoder.off,this.saved.off)==r.mte_status_success?new Uint8Array(this.saved.buff):null,this.saveStateB64=()=>this.exports.mte_wasm_mke_dec_state_save_b64(this.decoder.off,this.saved64.off)==r.mte_status_success?this.wasm.wasmToStr(this.saved64):null,this.restoreState=e=>(this.wasm.arrToOffLen(e,this.saved.off,e.length),this.exports.mte_mke_dec_state_restore(this.decoder.off,this.saved.off)),this.restoreStateB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_mke_dec_state_restore_b64(this.decoder.off,t.off);return this.wasm.free(t),n},this.decode=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_mke_dec_buff_bytes(this.decoder.off,e.length);if(n==0)return this.wasm.free(t),{arr:null,status:r.mte_status_invalid_input};let i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.wasm.newInt64(),c=this.wasm.newInt64(),l=this.wasm.newInt(),u=this.exports.mte_wasm_mke_dec_decode(this.decoder.off,this.instance,t.off,e.length,i.off,a.off,o.off,s.off,c.off,l.off);if(this.statusIsError(u))return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),this.wasm.free(l),{arr:null,status:u};let d=this.wasm.wasmToInt(a.off),f=this.wasm.wasmToInt(o.off),p=i.buff.slice(d,d+f);return this.encTs=this.wasm.wasmToTimestamp(s),this.decTs=this.wasm.wasmToTimestamp(c),this.msgSkipped=this.wasm.wasmToInt(l.off),this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),this.wasm.free(l),{arr:p,status:u}},this.decodeB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_mke_dec_buff_bytes_b64(this.decoder.off,t.used),r=this.wasm.malloc(n),i=this.wasm.newInt(),a=this.wasm.newInt(),o=this.wasm.newInt64(),s=this.wasm.newInt64(),c=this.wasm.newInt(),l=this.exports.mte_wasm_mke_dec_decode_b64(this.decoder.off,this.instance,t.off,t.used,r.off,i.off,a.off,o.off,s.off,c.off);if(this.statusIsError(l))return this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{arr:null,status:l};let u=this.wasm.wasmToInt(i.off),d=this.wasm.wasmToInt(a.off),f=r.buff.slice(u,u+d);return this.encTs=this.wasm.wasmToTimestamp(o),this.decTs=this.wasm.wasmToTimestamp(s),this.msgSkipped=this.wasm.wasmToInt(c.off),this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{arr:f,status:l}},this.decodeStr=e=>{let t=this.wasm.arrToWasm(e),n=this.exports.mte_mke_dec_buff_bytes(this.decoder.off,e.length);if(n==0)return this.wasm.free(t),{str:null,status:r.mte_status_invalid_input};let i=this.wasm.malloc(n),a=this.wasm.newInt(),o=this.wasm.newInt(),s=this.wasm.newInt64(),c=this.wasm.newInt64(),l=this.wasm.newInt(),u=this.exports.mte_wasm_mke_dec_decode(this.decoder.off,this.instance,t.off,e.length,i.off,a.off,o.off,s.off,c.off,l.off);if(this.statusIsError(u))return this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),this.wasm.free(l),{str:null,status:u};let d=this.wasm.wasmToInt(a.off),f=this.wasm.wasmToStr(i,d);return this.encTs=this.wasm.wasmToTimestamp(s),this.decTs=this.wasm.wasmToTimestamp(c),this.msgSkipped=this.wasm.wasmToInt(l.off),this.wasm.free(t),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),this.wasm.free(l),{str:f,status:u}},this.decodeStrB64=e=>{let t=this.wasm.strToWasm(e),n=this.exports.mte_wasm_mke_dec_buff_bytes_b64(this.decoder.off,t.used),r=this.wasm.malloc(n),i=this.wasm.newInt(),a=this.wasm.newInt(),o=this.wasm.newInt64(),s=this.wasm.newInt64(),c=this.wasm.newInt(),l=this.exports.mte_wasm_mke_dec_decode_b64(this.decoder.off,this.instance,t.off,t.used,r.off,i.off,a.off,o.off,s.off,c.off);if(this.statusIsError(l))return this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{str:null,status:l};let u=this.wasm.wasmToInt(i.off),d=this.wasm.wasmToStr(r,u);return this.encTs=this.wasm.wasmToTimestamp(o),this.decTs=this.wasm.wasmToTimestamp(s),this.msgSkipped=this.wasm.wasmToInt(c.off),this.wasm.free(t),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),this.wasm.free(o),this.wasm.free(s),this.wasm.free(c),{str:d,status:l}},this.startDecrypt=()=>this.exports.mte_mke_dec_decrypt_start(this.decoder.off,this.chunk.off),this.decryptChunk=e=>{let t=this.wasm.arrToWasm(e),n=this.wasm.newInt(),i=e.length+this.ciphBlockBytes,a=this.wasm.malloc(i),o=this.exports.mte_wasm_mke_dec_decrypt_chunk(this.decoder.off,this.chunk.off,t.off,e.length,a.off,n.off),s=this.wasm.wasmToInt(n.off),c=a.buff.slice(0,s);return this.wasm.free(t),this.wasm.free(a),this.wasm.free(n),o==r.mte_status_success?c:null},this.finishDecrypt=()=>{let e=this.wasm.newInt(),t=this.wasm.newInt(),n=this.wasm.newInt64(),r=this.wasm.newInt64(),i=this.wasm.newInt(),a=this.exports.mte_wasm_mke_dec_decrypt_finish(this.decoder.off,this.chunk.off,this.instance,e.off,t.off,n.off,r.off,i.off);if(this.statusIsError(a))return this.wasm.free(e),this.wasm.free(t),this.wasm.free(n),this.wasm.free(r),this.wasm.free(i),{arr:null,status:a};let o=this.wasm.wasmToInt(e.off),s=this.wasm.wasmToInt(t.off),c=this.chunk.buff.slice(o,o+s);return this.encTs=this.wasm.wasmToTimestamp(n),this.decTs=this.wasm.wasmToTimestamp(r),this.msgSkipped=this.wasm.wasmToInt(i.off),this.wasm.free(e),this.wasm.free(t),this.wasm.free(n),this.wasm.free(r),this.wasm.free(i),{arr:c,status:a}},this.getEncTs=()=>this.encTs,this.getDecTs=()=>this.decTs,this.getMsgSkipped=()=>this.msgSkipped,this.uninstantiate=()=>this.exports.mte_mke_dec_uninstantiate(this.decoder.off);let l=typeof t==`string`?this.getDrbgsAlgo(t):t,u=typeof i==`string`?this.getVerifiersAlgo(i):i,d=typeof a==`string`?this.getCiphersAlgo(a):a,f=typeof o==`string`?this.getHashesAlgo(o):o;this.initBase(l,n,u,d,f);let p=this.exports.mte_wasm_mke_dec_state_bytes(l,n,u,d,f);if(p==0||(this.decoder=e.malloc(p),this.exports.mte_wasm_mke_dec_state_init(this.decoder.off,l,n,u,d,f,s,c)!=r.mte_status_success)||(this.saved=e.malloc(this.exports.mte_mke_dec_save_bytes(this.decoder.off)),this.saved64=e.malloc(this.exports.mte_wasm_mke_dec_save_bytes_b64(this.decoder.off)),this.chunk=e.malloc(this.exports.mte_mke_dec_decrypt_state_bytes(this.decoder.off)),this.ciphBlockBytes=this.getCiphersBlockBytes(d),this.ciphBlockBytes==0))throw RangeError(`MteMkeDec: Invalid options.`)}static fromdefault(t,n=0,r=0){let i=new l(t);return new e(t,i.getDefaultDrbg(),i.getDefaultTokBytes(),i.getDefaultVerifiers(),i.getDefaultCipher(),i.getDefaultHash(),n,r)}};e.MteMkeDec=d;var f=class{constructor(e,t,n){this.entropy=new Uint8Array,this.memFiles=new Map,this.getEncoder=()=>this.enc,this.getDecoder=()=>this.dec,this.initSdr=(e,t)=>{this.entropy=e,this.nonce.fill(0);for(let e=0;e<t.length;++e){let n=parseInt(t.charAt(e));for(let e=0;e<this.nonce.length;++e){let t=this.nonce[e]*10+n;this.nonce[e]=t%256,n=Math.floor(t/256)}}this.implDirExists(this.sdrPath)||this.implCreateDir(this.sdrPath)},this.readData=e=>{let t;t=this.memFiles.has(e)?this.memFiles.get(e):this.implReadFile(this.sdrPath,e);let n=new Uint8Array(this.nonce.length);for(let e=0;e<n.length;++e)n[e]=t[e]^this.nonce[e];let i=Uint8Array.from(this.entropy);this.dec.setEntropyArr(i),this.dec.setNonceArr(n);let a=this.dec.instantiate(e);if(a!=r.mte_status_success)throw Error(`Error instantiating decoder (`+this.dec.getStatusName(a)+`): `+this.dec.getStatusDescription(a));let o=t.slice(n.length),s=this.dec.decode(o);if(s.status!=r.mte_status_success)throw Error(`Error decoding data (`+this.dec.getStatusName(s.status)+`): `+this.dec.getStatusDescription(s.status));return s.arr},this.readString=e=>{let t;t=this.memFiles.has(e)?this.memFiles.get(e):this.implReadFile(this.sdrPath,e);let n=new Uint8Array(this.nonce.length);for(let e=0;e<n.length;++e)n[e]=t[e]^this.nonce[e];let i=Uint8Array.from(this.entropy);this.dec.setEntropyArr(i),this.dec.setNonceArr(n);let a=this.dec.instantiate(e);if(a!=r.mte_status_success)throw Error(`Error instantiating decoder (`+this.dec.getStatusName(a)+`): `+this.dec.getStatusDescription(a));let o=t.slice(n.length),s=this.dec.decodeStr(o);if(s.status!=r.mte_status_success)throw Error(`Error decoding data (`+this.dec.getStatusName(s.status)+`): `+this.dec.getStatusDescription(s.status));return s.str},this.writeData=(e,t,n=!1)=>{let i=this.implGetTimestamp(),a=new Uint8Array(this.nonce.length);for(let e=0;e<a.length;++e)a[e]=i[e]^this.nonce[e];let o=Uint8Array.from(this.entropy);this.enc.setEntropyArr(o),this.enc.setNonceArr(a);let s=this.enc.instantiate(e);if(s!=r.mte_status_success)throw Error(`Error instantiating encoder (`+this.enc.getStatusName(s)+`): `+this.enc.getStatusDescription(s));let c=this.enc.encode(t);if(c.status!=r.mte_status_success)throw Error(`Error encoding data (`+this.enc.getStatusName(c.status)+`): `+this.enc.getStatusDescription(c.status));let l=new Uint8Array(c.arr.length+i.length);for(let e=0;e<i.length;++e)l[e]=i[e];for(let e=0;e<c.arr.length;++e)l[e+i.length]=c.arr[e];n?this.memFiles.set(e,l):this.implWriteFile(this.sdrPath,e,l)},this.writeString=(e,t,n=!1)=>{let i=this.implGetTimestamp(),a=new Uint8Array(this.nonce.length);for(let e=0;e<a.length;++e)a[e]=i[e]^this.nonce[e];let o=Uint8Array.from(this.entropy);this.enc.setEntropyArr(o),this.enc.setNonceArr(a);let s=this.enc.instantiate(e);if(s!=r.mte_status_success)throw Error(`Error instantiating encoder (`+this.enc.getStatusName(s)+`): `+this.enc.getStatusDescription(s));let c=this.enc.encodeStr(t);if(c.status!=r.mte_status_success)throw Error(`Error encoding data (`+this.enc.getStatusName(c.status)+`): `+this.enc.getStatusDescription(c.status));let l=new Uint8Array(c.arr.length+i.length);for(let e=0;e<i.length;++e)l[e]=i[e];for(let e=0;e<c.arr.length;++e)l[e+i.length]=c.arr[e];n?this.memFiles.set(e,l):this.implWriteFile(this.sdrPath,e,l)},this.remove=e=>{this.memFiles.has(e)?this.memFiles.delete(e):this.implRemoveFile(this.sdrPath,e)},this.removeSdr=()=>{if(this.implDirExists(this.sdrPath)){let e=this.implListFiles(this.sdrPath);for(let t=0;t<e.length;++t)this.implRemoveFile(this.sdrPath,e[t]);this.implRemoveDir(this.sdrPath)}},this.implDirExists=e=>!0,this.implListFiles=e=>[],this.implCreateDir=e=>{},this.implReadFile=(e,t)=>{throw Error(`MteSdrAbs.readFile() called.`)},this.implWriteFile=(e,t,n)=>{throw Error(`MteSdrAbs.writeFile() called.`)},this.implRemoveDir=e=>{},this.implRemoveFile=(e,t)=>{},this.implGetTimestamp=()=>{let e=Math.floor(Date.now()),t=new Uint8Array(this.nonce.length);for(let n=t.length-1;n>=0;--n)t[n]=e%256,e=Math.floor(e/256);return t},this.enc=e,this.dec=t,this.wasm=e.wasm,this.enc.setEntropyCallback(null),this.dec.setEntropyCallback(null),this.enc.setNonceCallback(null),this.dec.setNonceCallback(null),this.enc.setTimestampCallback(null),this.dec.setTimestampCallback(null);let i=e.getDrbgsNonceMinBytes(e.getDrbg()),a=e.getDrbgsNonceMaxBytes(e.getDrbg()),o=Math.min(Math.max(i,8),a);this.nonce=new Uint8Array(o),this.sdrPath=n}};e.MteSdrAbs=f,e.MteSdrCookie=class e extends f{constructor(e,t,n,r){super(e,t,n),this.implListFiles=e=>{let t=e+`_`;return document.cookie.split(`;`).filter(e=>e.trim().startsWith(t)).map(e=>e.split(`=`)[0].trim().slice(t.length))},this.implReadFile=(e,t)=>{let n=e+`_`+t+`=`,r=document.cookie.split(`;`).filter(e=>e.trim().startsWith(n));if(r.length!=1)throw Error(`Could not find cookie.`);let i=r[0];return this.wasm.b64decode(decodeURIComponent(i.split(`=`)[1].trim()))},this.implWriteFile=(e,t,n)=>{let r=encodeURIComponent(this.wasm.b64encode(n));document.cookie=e+`_`+t+`=`+r+this.attrs},this.implRemoveFile=(e,t)=>{document.cookie=e+`_`+t+`=_; max-age=0`},this.attrs=r}static fromdefault(t,n,r){return new e(u.fromdefault(t),d.fromdefault(t),n,r)}},e.MteSdrStorage=class e extends f{constructor(e,t,n,r){super(e,t,n),this.implListFiles=e=>{let t=e+`/`,n=[];for(let e=0;e<this.storage.length;++e){let r=this.storage.key(e);r.startsWith(t)&&n.push(r.slice(t.length))}return n},this.implReadFile=(e,t)=>{let n=e+`/`+t,r=this.storage.getItem(n);if(r==null)throw Error(`Could not find file.`);return this.wasm.b64decode(r)},this.implWriteFile=(e,t,n)=>{let r=this.wasm.b64encode(n),i=e+`/`+t;this.storage.setItem(i,r)},this.implRemoveFile=(e,t)=>{let n=e+`/`+t;this.storage.removeItem(n)},this.storage=r?window.localStorage:window.sessionStorage}static fromdefault(t,n,r){return new e(u.fromdefault(t),d.fromdefault(t),n,r)}};var p=class{};e.MteRandom=p,p.getBytes=e=>e.length==0?!1:typeof window>`u`?(t().getRandomValues(e),!0):(window.crypto.getRandomValues(e),!0);var m;(function(e){e[e.none=0]=`none`,e[e.K512=512]=`K512`,e[e.K768=768]=`K768`,e[e.K1024=1024]=`K1024`})(m||(e.MteKyberStrength=m={}));var h;(function(e){e[e.success=0]=`success`,e[e.invalidStrength=-1]=`invalidStrength`,e[e.entropyFail=-2]=`entropyFail`,e[e.invalidPubKey=-3]=`invalidPubKey`,e[e.invalidPrivKey=-4]=`invalidPrivKey`,e[e.memoryFail=-5]=`memoryFail`,e[e.invalidCipherText=-6]=`invalidCipherText`})(h||(e.MteKyberStatus=h={}));var g=class e{constructor(t,n){if(this.publicKeySize=0,this.privateKeySize=0,this.minEntropySize=0,this.maxEntropySize=0,this.encryptedSize=0,this.secretSize=0,this.privateKey=null,this.myEntropyCb=null,this.myEntropy=null,this.getPublicKeySize=()=>this.publicKeySize,this.getSecretSize=()=>this.secretSize,this.getEncryptedSize=()=>this.encryptedSize,this.getminEntropySize=()=>this.minEntropySize,this.getMaxEntropySize=()=>this.maxEntropySize,this.getAlgorithm=()=>{let e=this.exports.mte_wasm_kyber_get_algorithm();return this.wasm.wasmOffToStr(e)},this.setEntropyCallback=e=>{this.myEntropyCb=e},this.setEntropy=e=>{if(e.length<this.minEntropySize||e.length>this.maxEntropySize)return h.entropyFail;this.myEntropy=new Uint8Array(e.length);for(let t=0;t<e.length;++t)this.myEntropy[t]=e[t],e[t]=0;return h.success},this.createKeypair=()=>{let e=h.success,t=this.wasm.malloc(this.publicKeySize),n=this.wasm.newInt();this.wasm.intToWasm(n.off,this.publicKeySize);let r=this.wasm.malloc(this.privateKeySize),i=this.wasm.newInt();if(this.wasm.intToWasm(i.off,this.privateKeySize),e=this.exports.mte_wasm_kyber_create_keypair(r.off,i.off,t.off,n.off,this.instance),e!=h.success)return this.wasm.free(t),this.wasm.free(n),this.wasm.free(r),this.wasm.free(i),{result1:null,result2:null,status:e};let a=t.buff.slice(0,this.publicKeySize);return this.privateKey=r.buff.slice(0,this.privateKeySize),this.wasm.free(t),this.wasm.free(n),this.wasm.free(r),this.wasm.free(i),{result1:a,result2:null,status:e}},this.createSecret=e=>{let t=this.wasm.arrToWasm(e),n=this.wasm.malloc(this.secretSize),r=this.wasm.newInt();this.wasm.intToWasm(r.off,this.secretSize);let i=this.wasm.malloc(this.encryptedSize),a=this.wasm.newInt();this.wasm.intToWasm(a.off,this.encryptedSize);let o=this.exports.mte_wasm_kyber_create_secret(t.off,e.length,n.off,r.off,i.off,a.off,this.instance);if(this.wasm.free(t),o!==h.success)return this.wasm.free(n),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),{result1:null,result2:null,status:o};let s=n.buff.slice(0,this.secretSize),c=i.buff.slice(0,this.encryptedSize);return this.wasm.free(n),this.wasm.free(r),this.wasm.free(i),this.wasm.free(a),{result1:s,result2:c,status:h.success}},this.decryptSecret=e=>{if(this.privateKey===null)return{result1:null,result2:null,status:h.invalidPrivKey};let t=this.wasm.arrToWasm(this.privateKey),n=this.wasm.arrToWasm(e),r=this.wasm.malloc(this.secretSize),i=this.wasm.newInt();this.wasm.intToWasm(i.off,this.secretSize);let a=this.exports.mte_wasm_kyber_decrypt_secret(t.off,this.privateKey.length,n.off,e.length,r.off,i.off);if(this.wasm.free(t),this.wasm.free(n),a!==h.success)return this.wasm.free(r),this.wasm.free(i),{result1:null,result2:null,status:a};let o=r.buff.slice(0,this.secretSize);return this.wasm.free(r),this.wasm.free(i),{result1:o,result2:null,status:h.success}},this.destruct=()=>{for(e.instances[this.instance]=null;e.instances.length>0&&e.instances[e.instances.length-1]==null;)e.instances.pop()},this.defaultCallback=(t,n,r,i,a)=>{let o=e.instances[t];if(o.myEntropyCb!==null)return o.myEntropyCb.entropyCallback(n,r,i,a);if(o.myEntropy===null){let e=new Uint8Array(i);if(!p.getBytes(e))return h.entropyFail;let t=this.wasm.wasmOverlay(n,i);for(let n=0;n<i;++n)t[n]=e[n],e[n]=0;o.wasm.intToWasm(r,i)}else{let e=this.wasm.wasmOverlay(n,o.myEntropy.length);for(let t=0;t<o.myEntropy.length;++t)e[t]=o.myEntropy[t],o.myEntropy[t]=0;o.wasm.intToWasm(r,o.myEntropy.length),o.myEntropy=null}return h.success},e.strength!==m.none&&e.strength!==n)throw TypeError(`MteKyber: differing Kyber strengths are not supported.`);if(this.wasm=t,t.exports!==null)this.exports=t.exports;else throw TypeError(`MteKyber: WASM does not have exports.`);if(t.memory!==null)this.memory=t.memory;else throw TypeError(`MteKyber: WASM does not have memory.`);t.kyberCallback===null&&(t.kyberCallback=this.defaultCallback),this.instance=-1;for(let t=0;t<e.instances.length;t++)if(e.instances[t]===null){this.instance=t;break}if(this.instance===-1?(this.instance=e.instances.length,e.instances.push(this)):e.instances[this.instance]=this,this.exports.mte_wasm_kyber_init(n)!=h.success)throw TypeError(`MteKyber: intializing the strength failed.`);e.strength=n,this.publicKeySize=this.exports.mte_wasm_kyber_get_pubkey_size(),this.privateKeySize=this.exports.mte_wasm_kyber_get_privkey_size(),this.minEntropySize=this.exports.mte_wasm_kyber_get_min_entropy_size(),this.maxEntropySize=this.exports.mte_wasm_kyber_get_max_entropy_size(),this.encryptedSize=this.exports.mte_wasm_kyber_get_encrypted_size(),this.secretSize=this.exports.mte_wasm_kyber_get_secret_size()}};e.MteKyber=g,g.instances=[],g.strength=m.none,g.zeroize=e=>{for(let t=0;t<e.length;++t)e[t]=0},e.MteWasm=class{constructor(){this.kyberCallback=null,this.entropyCallback=null,this.nonceCallback=null,this.timestampCallback=null,this.exports=null,this.memory=null,this.pageBytes=65536,this.base=0,this.bytes=0,this.blocks=[],this.instantiate=()=>new Promise((e,t)=>n(this,void 0,void 0,function*(){try{let t={mte_wasm_kyber_cb:this.kyberCallbackWasm,mte_wasm_ei_cb:this.entropyCallbackWasm,mte_wasm_n_cb:this.nonceCallbackWasm,mte_wasm_t_cb:this.timestampCallbackWasm},n={env:t,imports:t},r=new y,i=yield WebAssembly.compile(r.wasmArr),a=yield WebAssembly.instantiate(i,n);this.exports=a.exports,this.memory=this.exports.memory,this.base=this.memory.buffer.byteLength,e()}catch(e){t(e)}})),this.malloc=e=>{let t=this.memory,n=this.blocks.length;for(let r=0;r<n;++r)if(!this.blocks[r].inUse&&this.blocks[r].bytes>=e){this.blocks[r].bytes>e&&(this.blocks.splice(r+1,0,new v(this.blocks[r].off+e,this.blocks[r].bytes-e)),this.blocks[r].bytes=e);let n=new _(this.blocks[r].off,new Uint8Array(t.buffer,this.blocks[r].off,e));return this.blocks[r].inUse=!0,this.blocks[r].mteMem=n,n}let r=t.buffer.byteLength,i=Math.ceil(e/this.pageBytes);t.grow(i);for(let e=0;e<n;++e)this.blocks[e].inUse&&(this.blocks[e].mteMem.buff=new Uint8Array(t.buffer,this.blocks[e].off,this.blocks[e].bytes));let a=t.buffer.byteLength-r;return this.blocks.length!=0&&!this.blocks[this.blocks.length-1].inUse?this.blocks[this.blocks.length-1].bytes+=a:this.blocks.push(new v(this.base+this.bytes,a)),this.bytes+=a,this.malloc(e)},this.free=e=>{let t=0,n=this.blocks.length;for(;t<n&&this.blocks[t].off!=e.off;++t);t!=n&&(t!=0&&!this.blocks[t-1].inUse?(this.blocks[t-1].bytes+=this.blocks[t].bytes,this.blocks.splice(t,1),--t):(this.blocks[t].inUse=!1,this.blocks[t].mteMem=null),t<this.blocks.length-1&&!this.blocks[t+1].inUse&&(this.blocks[t].bytes+=this.blocks[t+1].bytes,this.blocks.splice(t+1,1)))},this.wasmToInt=e=>{let t=this.wasmOverlay(e,4);return t[0]+t[1]*256+t[2]*65536+t[3]*16777216},this.intToWasm=(e,t)=>{let n=this.wasmOverlay(e,4);n[0]=t&255,n[1]=t>>8&255,n[2]=t>>16&255,n[3]=t>>24},this.newInt=()=>this.malloc(4),this.wasmToInt64=e=>{let t=this.wasmOverlay(e,8);return t[0]+t[1]*256+t[2]*65536+t[3]*16777216+t[4]*4294967296+t[5]*1099511627776+t[6]*281474976710656},this.int64ToWasm=(e,t)=>{let n=this.wasmOverlay(e,8);for(let e=0;e<6;++e)n[e]=t&255,t/=256;n[6]=t&255,n[7]=0},this.newInt64=()=>this.malloc(8),this.wasmToTimestamp=e=>e.buff[7]==0&&!(e.buff[6]&224)?{ts:this.wasmToInt64(e.off),upper:0}:{ts:this.wasmToInt(e.off),upper:this.wasmToInt(e.off+4)},this.wasmOverlay=(e,t)=>new Uint8Array(this.memory.buffer,e,t),this.wasmToArr=(e,t)=>{let n=this.wasmOverlay(e,t),r=new Uint8Array(t);for(let e=0;e<t;++e)r[e]=n[e];return r},this.arrToWasm=e=>{let t=this.malloc(e.length);for(let n=0;n<e.length;++n)t.buff[n]=e[n];return t},this.arrToOffLen=(e,t,n)=>{let r=this.wasmOverlay(t,n);for(let t=0;t<n;++t)r[t]=e[t]},this.strToWasm=(e,t=0)=>{e=String(e);let n=this.malloc(e.length*4+1+t),r=n.buff,i=0;for(let t=0;t<e.length;++t){let n=e.charCodeAt(t);n<128?(r[i]=n,++i):n<2048?(r[i]=192|n>>6,++i,r[i]=128|n&63,++i):n<55296||n>=57344?(r[i]=224|n>>12,++i,r[i]=128|n>>6&63,++i,r[i]=128|n&63,++i):(n=(n&1023)<<10|e.charCodeAt(t)&1023|65536,r[i]=240|n>>18,++i,r[i]=128|n>>12&63,++i,r[i]=128|n>>6&63,++i,r[i]=128|n&63,++i)}return n.used=i,r[i]=0,n},this.wasmToStr=(e,t=0)=>{let n,r=``,i=e.buff;for(let a=t;a<e.used&&i[a]!=0;)i[a]<128?(r+=String.fromCharCode(i[a]),++a):i[a]>191&&i[a]<224?(n=(i[a]&31)<<6|i[a+1]&63,r+=String.fromCharCode(n),a+=2):i[a]>223&&i[a]<240?(n=(i[a]&15)<<12|(i[a+1]&63)<<6|i[a+2]&63,r+=String.fromCharCode(n),a+=3):(n=(i[a]&7)<<18|(i[a+1]&63)<<12|(i[a+2]&63)<<6|(i[a+3]&63)-65536,r+=String.fromCharCode(n),a+=4);return r},this.wasmOffToStr=(e,t=0)=>{let n=this.wasmOverlay(e,this.memory.buffer.byteLength-e);return this.wasmToStr(new _(-1,n),t)},this.b64encode=e=>{let t=this.arrToWasm(e),n=this.exports.mte_wasm_base64_encode_bytes(e.length),r=this.malloc(n);this.exports.mte_wasm_base64_encode(t.off,e.length,r.off);let i=this.wasmToStr(r);return this.free(t),this.free(r),i},this.b64decode=e=>{let t=this.strToWasm(e),n=this.exports.mte_wasm_base64_decode(t.off),r=this.wasmToArr(t.off,n);return this.free(t),r},this.kyberCallbackWasm=(e,t,n,r,i)=>{if(this.kyberCallback===null)throw TypeError(`Missing Kyber callback.`);return this.kyberCallback(e,t,n,r,i)},this.entropyCallbackWasm=(e,t,n,r,i,a)=>{if(this.entropyCallback===null)throw TypeError(`Missing entropy callback.`);return this.entropyCallback(e,t,n,r,i,a)},this.nonceCallbackWasm=(e,t,n,r,i)=>{if(this.nonceCallback===null)throw TypeError(`Missing nonce callback.`);this.nonceCallback(e,t,n,r,i)},this.timestampCallbackWasm=(e,t)=>{if(this.timestampCallback===null)throw TypeError(`Missing timestamp callback.`);return this.timestampCallback(e,t)}}};var _=class{constructor(e=-1,t=null){this.invalidate=()=>{this.off=-1,this.buff=null,this.used=0},this.off=e,this.buff=t,this.used=t==null?0:t.length}};e.MteMem=_;var v=class{constructor(e,t){this.inUse=!1,this.off=e,this.bytes=t,this.mteMem=null}},y=class e{constructor(){let t=Math.floor(e.wasmB64.length/4)*3;for(let n=e.wasmB64.length-1;n>0&&e.wasmB64[n]==`=`;--n)--t;this.wasmArr=new Uint8Array(t);let n=e=>e>=65&&e<=90?e-65:e>=97&&e<=122?e-71:e>=48&&e<=57?e+4:e==43?62:63,r,i,a,o,s,c,l,u,d=0,f=0,p=Math.floor(t/3)*3;for(;d<p;)s=e.wasmB64.charCodeAt(f),++f,c=e.wasmB64.charCodeAt(f),++f,l=e.wasmB64.charCodeAt(f),++f,u=e.wasmB64.charCodeAt(f),++f,r=n(s),i=n(c),a=n(l),o=n(u),this.wasmArr[d]=r<<2|i>>4,++d,this.wasmArr[d]=(i&15)<<4|a>>2,++d,this.wasmArr[d]=(a&3)<<6|o,++d;switch(t-d){case 1:s=e.wasmB64.charCodeAt(f),++f,c=e.wasmB64.charCodeAt(f),r=n(s),i=n(c),this.wasmArr[d]=r<<2|i>>4;break;case 2:s=e.wasmB64.charCodeAt(f),++f,c=e.wasmB64.charCodeAt(f),++f,l=e.wasmB64.charCodeAt(f),r=n(s),i=n(c),a=n(l),this.wasmArr[d]=r<<2|i>>4,++d,this.wasmArr[d]=(i&15)<<4|a>>2}}};y.wasmB64=`AGFzbQEAAAABnQEUYAJ/fwF/YAF/AX9gAAF/YAN/f38AYAJ/fwBgBX9/f39/AX9gA39/fwF/YAF/AGAEf39/fwBgB39/f39/f38Bf2ABfwF8YAp/f39/f39/f39/AX9gBn9/f39/fwF/YAR/f39/AX9gBn9/f3x/fwF/YAV/f39/fwBgAABgBn9/f398fwF/YAh/f39/f398fwF/YAh/f39/f39/fwF/AkIDA2Vudg5tdGVfd2FzbV9laV9jYgAOA2Vudg1tdGVfd2FzbV9uX2NiAA8DZW52EW10ZV93YXNtX2t5YmVyX2NiAAUDsgGwARAAAgEBBQAEBgYGAwABBAYEAwMNBAcDAAUEBAYBBAYIBgEAAAABBgAAAAAAAAEBBgAAAAEAAAABAQABAAAAAQABBAcDCAMDAwgHCAMDBwMDBAQHAwcDBAcHCAgABAEDAQICAgIBAQECAgICAgEBAQEKAQoHBAEBAQEBAgEBBhEFCgEAAAALCwYNBQoAAAAJCQUSBQAACwsMEwUMBQAACQkMBQECAgICAgICBQUJDAcCBAUBcAEFBQUGAQEBgIACBggBfwFBkK0CCweEHoABBm1lbW9yeQIACG10ZV9pbml0AAQQbXRlX2Jhc2VfdmVyc2lvbgAFGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBABhtdGVfYmFzZV9zdGF0dXNfaXNfZXJyb3IABhBtdGVfbGljZW5zZV9pbml0AAkSbXRlX2VuY19zYXZlX2J5dGVzACQSbXRlX2VuY19zdGF0ZV9zYXZlACUVbXRlX2VuY19zdGF0ZV9yZXN0b3JlACYSbXRlX2VuY19idWZmX2J5dGVzACcVbXRlX2VuY191bmluc3RhbnRpYXRlACgSbXRlX2RlY19zYXZlX2J5dGVzACQSbXRlX2RlY19zdGF0ZV9zYXZlAC0VbXRlX2RlY19zdGF0ZV9yZXN0b3JlAC4SbXRlX2RlY19idWZmX2J5dGVzAC8VbXRlX2RlY191bmluc3RhbnRpYXRlADAWbXRlX21rZV9lbmNfc2F2ZV9ieXRlcwAkFm10ZV9ta2VfZW5jX3N0YXRlX3NhdmUAJRltdGVfbWtlX2VuY19zdGF0ZV9yZXN0b3JlADcWbXRlX21rZV9lbmNfYnVmZl9ieXRlcwA4IG10ZV9ta2VfZW5jX2VuY3J5cHRfZmluaXNoX2J5dGVzADofbXRlX21rZV9lbmNfZW5jcnlwdF9zdGF0ZV9ieXRlcwA7GW10ZV9ta2VfZW5jX2VuY3J5cHRfc3RhcnQAPBltdGVfbWtlX2VuY191bmluc3RhbnRpYXRlAD0WbXRlX21rZV9kZWNfc2F2ZV9ieXRlcwAkFm10ZV9ta2VfZGVjX3N0YXRlX3NhdmUALRltdGVfbWtlX2RlY19zdGF0ZV9yZXN0b3JlAD4WbXRlX21rZV9kZWNfYnVmZl9ieXRlcwA/H210ZV9ta2VfZGVjX2RlY3J5cHRfc3RhdGVfYnl0ZXMAQRltdGVfbWtlX2RlY19kZWNyeXB0X3N0YXJ0AEIZbXRlX21rZV9kZWNfdW5pbnN0YW50aWF0ZQBDHG10ZV93YXNtX2Jhc2U2NF9lbmNvZGVfYnl0ZXMAYBZtdGVfd2FzbV9iYXNlNjRfZW5jb2RlAGEWbXRlX3dhc21fYmFzZTY0X2RlY29kZQBiG210ZV93YXNtX2Jhc2VfdmVyc2lvbl9tYWpvcgBjG210ZV93YXNtX2Jhc2VfdmVyc2lvbl9taW5vcgBkG210ZV93YXNtX2Jhc2VfdmVyc2lvbl9wYXRjaABlGm10ZV93YXNtX2Jhc2Vfc3RhdHVzX2NvdW50AGYZbXRlX3dhc21fYmFzZV9zdGF0dXNfbmFtZQBnIG10ZV93YXNtX2Jhc2Vfc3RhdHVzX2Rlc2NyaXB0aW9uAGgZbXRlX3dhc21fYmFzZV9zdGF0dXNfY29kZQBpHm10ZV93YXNtX2Jhc2VfaGFzX3J1bnRpbWVfb3B0cwBqGm10ZV93YXNtX2Jhc2VfZGVmYXVsdF9kcmJnAGsfbXRlX3dhc21fYmFzZV9kZWZhdWx0X3Rva19ieXRlcwBsH210ZV93YXNtX2Jhc2VfZGVmYXVsdF92ZXJpZmllcnMAbRxtdGVfd2FzbV9iYXNlX2RlZmF1bHRfY2lwaGVyAG0abXRlX3dhc21fYmFzZV9kZWZhdWx0X2hhc2gAbRltdGVfd2FzbV9iYXNlX2RyYmdzX2NvdW50AG4YbXRlX3dhc21fYmFzZV9kcmJnc19uYW1lAG8YbXRlX3dhc21fYmFzZV9kcmJnc19hbGdvAHAmbXRlX3dhc21fYmFzZV9kcmJnc19zZWNfc3RyZW5ndGhfYnl0ZXMAcSZtdGVfd2FzbV9iYXNlX2RyYmdzX3BlcnNvbmFsX21pbl9ieXRlcwByJm10ZV93YXNtX2Jhc2VfZHJiZ3NfcGVyc29uYWxfbWF4X2J5dGVzAHMlbXRlX3dhc21fYmFzZV9kcmJnc19lbnRyb3B5X21pbl9ieXRlcwBxJW10ZV93YXNtX2Jhc2VfZHJiZ3NfZW50cm9weV9tYXhfYnl0ZXMAcyNtdGVfd2FzbV9iYXNlX2RyYmdzX25vbmNlX21pbl9ieXRlcwB0I210ZV93YXNtX2Jhc2VfZHJiZ3Nfbm9uY2VfbWF4X2J5dGVzAHEjbXRlX3dhc21fYmFzZV9kcmJnc19yZXNlZWRfaW50ZXJ2YWwAdSNtdGVfd2FzbV9iYXNlX2RyYmdzX2luY3JfaW5zdF9lcnJvcgB2Im10ZV93YXNtX2Jhc2VfZHJiZ3NfaW5jcl9nZW5fZXJyb3IAdx1tdGVfd2FzbV9iYXNlX3ZlcmlmaWVyc19jb3VudABsHG10ZV93YXNtX2Jhc2VfdmVyaWZpZXJzX25hbWUAeBxtdGVfd2FzbV9iYXNlX3ZlcmlmaWVyc19hbGdvAHkbbXRlX3dhc21fYmFzZV9jaXBoZXJzX2NvdW50AGMabXRlX3dhc21fYmFzZV9jaXBoZXJzX25hbWUAehptdGVfd2FzbV9iYXNlX2NpcGhlcnNfYWxnbwB7IW10ZV93YXNtX2Jhc2VfY2lwaGVyc19ibG9ja19ieXRlcwB8Gm10ZV93YXNtX2Jhc2VfaGFzaGVzX2NvdW50AH0ZbXRlX3dhc21fYmFzZV9oYXNoZXNfbmFtZQB+GW10ZV93YXNtX2Jhc2VfaGFzaGVzX2FsZ28AfxhtdGVfd2FzbV9kZWNfc3RhdGVfYnl0ZXMAgAEXbXRlX3dhc21fZGVjX3N0YXRlX2luaXQAgQEYbXRlX3dhc21fZGVjX2luc3RhbnRpYXRlAIIBG210ZV93YXNtX2RlY19yZXNlZWRfY291bnRlcgCDARttdGVfd2FzbV9kZWNfc2F2ZV9ieXRlc19iNjQAhAEbbXRlX3dhc21fZGVjX3N0YXRlX3NhdmVfYjY0AIUBHm10ZV93YXNtX2RlY19zdGF0ZV9yZXN0b3JlX2I2NACGARttdGVfd2FzbV9kZWNfYnVmZl9ieXRlc19iNjQAhwETbXRlX3dhc21fZGVjX2RlY29kZQCIARdtdGVfd2FzbV9kZWNfZGVjb2RlX2I2NACJARhtdGVfd2FzbV9lbmNfc3RhdGVfYnl0ZXMAigEXbXRlX3dhc21fZW5jX3N0YXRlX2luaXQAiwEYbXRlX3dhc21fZW5jX2luc3RhbnRpYXRlAIwBG210ZV93YXNtX2VuY19yZXNlZWRfY291bnRlcgCNARttdGVfd2FzbV9lbmNfc2F2ZV9ieXRlc19iNjQAhAEbbXRlX3dhc21fZW5jX3N0YXRlX3NhdmVfYjY0AI4BHm10ZV93YXNtX2VuY19zdGF0ZV9yZXN0b3JlX2I2NACPARttdGVfd2FzbV9lbmNfYnVmZl9ieXRlc19iNjQAkAETbXRlX3dhc21fZW5jX2VuY29kZQCRARdtdGVfd2FzbV9lbmNfZW5jb2RlX2I2NACSARxtdGVfd2FzbV9ta2VfZGVjX3N0YXRlX2J5dGVzAJMBG210ZV93YXNtX21rZV9kZWNfc3RhdGVfaW5pdACUARxtdGVfd2FzbV9ta2VfZGVjX2luc3RhbnRpYXRlAJUBH210ZV93YXNtX21rZV9kZWNfcmVzZWVkX2NvdW50ZXIAgwEfbXRlX3dhc21fbWtlX2RlY19zYXZlX2J5dGVzX2I2NACEAR9tdGVfd2FzbV9ta2VfZGVjX3N0YXRlX3NhdmVfYjY0AIUBIm10ZV93YXNtX21rZV9kZWNfc3RhdGVfcmVzdG9yZV9iNjQAlgEfbXRlX3dhc21fbWtlX2RlY19idWZmX2J5dGVzX2I2NACXARdtdGVfd2FzbV9ta2VfZGVjX2RlY29kZQCYARttdGVfd2FzbV9ta2VfZGVjX2RlY29kZV9iNjQAmQEebXRlX3dhc21fbWtlX2RlY19kZWNyeXB0X2NodW5rAJoBH210ZV93YXNtX21rZV9kZWNfZGVjcnlwdF9maW5pc2gAmwEcbXRlX3dhc21fbWtlX2VuY19zdGF0ZV9ieXRlcwCcARttdGVfd2FzbV9ta2VfZW5jX3N0YXRlX2luaXQAnQEcbXRlX3dhc21fbWtlX2VuY19pbnN0YW50aWF0ZQCeAR9tdGVfd2FzbV9ta2VfZW5jX3Jlc2VlZF9jb3VudGVyAI0BH210ZV93YXNtX21rZV9lbmNfc2F2ZV9ieXRlc19iNjQAhAEfbXRlX3dhc21fbWtlX2VuY19zdGF0ZV9zYXZlX2I2NACOASJtdGVfd2FzbV9ta2VfZW5jX3N0YXRlX3Jlc3RvcmVfYjY0AJ8BH210ZV93YXNtX21rZV9lbmNfYnVmZl9ieXRlc19iNjQAoAEXbXRlX3dhc21fbWtlX2VuY19lbmNvZGUAoQEbbXRlX3dhc21fbWtlX2VuY19lbmNvZGVfYjY0AKIBHm10ZV93YXNtX21rZV9lbmNfZW5jcnlwdF9jaHVuawCjAR9tdGVfd2FzbV9ta2VfZW5jX2VuY3J5cHRfZmluaXNoAKQBE210ZV93YXNtX2t5YmVyX2luaXQApQEebXRlX3dhc21fa3liZXJfZ2V0X3B1YmtleV9zaXplAKYBH210ZV93YXNtX2t5YmVyX2dldF9wcml2a2V5X3NpemUApwEebXRlX3dhc21fa3liZXJfZ2V0X3NlY3JldF9zaXplAKgBIW10ZV93YXNtX2t5YmVyX2dldF9lbmNyeXB0ZWRfc2l6ZQCpASNtdGVfd2FzbV9reWJlcl9nZXRfbWluX2VudHJvcHlfc2l6ZQCqASNtdGVfd2FzbV9reWJlcl9nZXRfbWF4X2VudHJvcHlfc2l6ZQCrARxtdGVfd2FzbV9reWJlcl9nZXRfYWxnb3JpdGhtAKwBHW10ZV93YXNtX2t5YmVyX2NyZWF0ZV9rZXlwYWlyAK4BHG10ZV93YXNtX2t5YmVyX2NyZWF0ZV9zZWNyZXQArwEdbXRlX3dhc21fa3liZXJfZGVjcnlwdF9zZWNyZXQAsAELX2luaXRpYWxpemUAAxlfZW1zY3JpcHRlbl9zdGFja19yZXN0b3JlALEBHGVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2N1cnJlbnQAsgEJCwEAQQELBF9erQEDDAEFCoPQBLABAwABC90DAQJ/AkBBgAgtAAAiAUUEQEGACCEADAELA0AgASACaiECIANBAWoiA0GACGoiAC0AACIBDQALC0HwKyAALQBCIAAtAEFBCHRyIgEgAEFAay0AACAALQA/IAAtAD4gAC0APSAALQA8IAAtADsgAC0AOiAALQA5IAAtADggAC0ANyAALQA2IAAtADUgAC0ANCAALQAzIAAtADIgAC0AMSAALQAwIAAtAC8gAC0ALiAALQAtIAAtACwgAC0AKyAALQAqIAAtACkgAC0AKCAALQAnIAAtACYgAC0AJSAALQAkIAAtACMgAC0AIiAALQAhIAAtACAgAC0AHyAALQAeIAAtAB0gAC0AHCAALQAbIAAtABogAC0AGSAALQAYIAAtABcgAC0AFiAALQAVIAAtABQgAC0AEyAALQASIAAtABEgAC0AECAALQAPIAAtAA4gAC0ADSAALQAMIAAtAAsgAC0ACiAALQAJIAAtAAggAC0AByAALQAGIAAtAAUgAC0ABCAALQADIAAtAAIgAiAALQABampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqampqamsgAUVyIgA2AgAgAEULBQBBgAgLJwEBfwJAAkAgAA4PAQAAAAAAAAAAAAAAAAABAAsgAEEPRyEBCyABC9gEAgx/An4CQCAAQQggAEFAayILEB4iAQ0AIABBADoAyBEgAEHIAGohCSAAQcgQaiEDQYABIQRBgQEhBUEBIQgDQCAAQQggCRAeIgENASAEIAVqIQoDQCAJKQMAIQ0gCiEHIAQhBiAFIQICQANAAkAgCyADIAdBAXYiAWotAABBA3RqKQMAIg4gDVYEQCABIAZGBEAgBiECDAILIAEgBmohByABIQIMAgsgDSAOWA0CIAFBAWoiBiACTw0AIAIgBmohBwwBCwsCQAJAIARFDQAgAiAERw0AIAMgBEEBayIEaiAIOgAADAELAkACQCACIAVHDQAgAkGAAkYNACADIAVqIAg6AAAMAQsCQCAFQYACRwRAIARFDQEgAiAEayAFIAJrTw0BCwJAIARBAWsiByACQQFrIgpPDQBBACEGIAchASACIARrQQNxIgwEQANAIAEgA2ogAyABQQFqIgFqLQAAOgAAIAZBAWoiBiAMRw0ACwsgBCACa0F8Sw0AA0AgASADaiICIAIoAAE2AAAgAUEEaiIBIApHDQALCyADIApqIAg6AAAgByEEDAILAkAgAiAFTw0AQQAhBiAFIgEgAmtBA3EiBwRAA0AgASADaiADIAFBAWsiAWotAAA6AAAgBkEBaiIGIAdHDQALCyACIAVrQXxLDQADQCABIANqQQNrIAMgAUEEayIBaigAADYAACABIAJLDQALCyACIANqIAg6AAALIAVBAWohBQsgCUEI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aiEDCyACIANNBEBBAA8LA0AgACADai0AACABIANqLQAAayIEDQEgA0EBaiIDIAJHDQALQQAPCyAEC+YFAQt/AkAgAEEHcSIDIAFBB3FHBEAgAkUNAUEAIQMgAkEETwRAIAJBfHEhBQNAIAAgA2ogASADai0AADoAACAAIANBAXIiBGogASAEai0AADoAACAAIANBAnIiBGogASAEai0AADoAACAAIANBA3IiBGogASAEai0AADoAACADQQRqIQMgCUEEaiIJIAVHDQALCyACQQNxIgJFDQEDQCAAIANqIAEgA2otAAA6AAAgA0EBaiEDIAZBAWoiBiACRw0ACwwBCwJAIANFDQAgAkUNACAAIAEtAAA6AABBCCADayIEIAIgAiAESxsiBEEBRg0AIAAgAS0AAToAASAEQQJGDQAgACABLQACOgACIARBA0YNACAAIAEtAAM6AAMgBEEERg0AIAAgAS0ABDoABCAEQQVGDQAgACABLQAFOgAFIARBBkYNACAAIAEtAAY6AAYLIAIgBGsiC0EITwRAQQEgC0EDdiIDIANBAU0bIgVBA3EhDCABIARqIQcgACAEaiEIQQAhAyALQSBPBEAgBUH8////AXEhCQNAIAggA0EDdCIKaiAHIApqKQMANwMAIAggCkEIciIFaiAFIAdqKQMANwMAIAggCkEQciIFaiAFIAdqKQMANwMAIAggCkEYciIFaiAFIAdqKQMANwMAIANBBGohAyAGQQRqIgYgCUcNAAsLIAwEQANAIAggA0EDdCIFaiAFIAdqKQMANwMAIANBAWohAyANQQFqIg0gDEcNAAsLIAtBeHEgBGohBAsgAiAETQ0AIAIgBCIDa0EDcSIFBEBBACEGA0AgACADaiABIANqLQAAOgAAIANBAWohAyAGQQFqIgYgBUcNAAsLIAQgAmtBfEsNAANAIAAgA2ogASADai0AADoAACAAIANBAWoiBGogASAEai0AADoAACAAIANBAmoiBGogASAEai0AADoAACAAIANBA2oiBGogASAEai0AADoAACADQQRqIgMgAkcNAAsLC1QBA38CQCAALQAAIgMEQANAIAEgAmotAAAiBEUEQEEBDwsgA0H/AXEgBGsiAw0CIAAgAkEBaiICai0AACIDDQALC0F/QQAgASACai0AABshAwsgAwscAQJ/A0AgASICQQFq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IAJBECAEayIHSQ0BAkAgBEEQRg0AIARBDWtBA08EQCAHQXxxIQpBACEEA0AgBSAGaiABIAVqLQAAOgAAIAYgBUEBciIJaiABIAlqLQAAOgAAIAYgBUECciIJaiABIAlqLQAAOgAAIAYgBUEDciIJaiABIAlqLQAAOgAAIAVBBGohBSAEQQRqIgQgCkcNAAsLIAdBA3EiBEUNAANAIAUgBmogASAFai0AADoAACAFQQFqIQUgCEEBaiIIIARHDQALCyAAIAMgAxAUIAIgB2shAiABIAdqIQELIAJBD0sEQANAIAAgASADEBQgAUEQaiEBIAJBEGsiAkEPSw0ACwsgAg0BQQAPCwJAIAJFDQBBACEDIAJBBE8EQCACQXxxIQdBACEAA0AgBSAGaiABIAVqLQAAOgAAIAYgBUEBciIIaiABIAhqLQAAOgAAIAYgBUECciIIaiABIAhqLQAAOgAAIAYgBUEDciIIaiABIAhqLQAAOgAAIAVBBGohBSAAQQRqIgAgB0cNAAsLIAJBA3EiAEUNAANAIAUgBmogASAFai0AADoAACAFQQFqIQUgA0EBaiIDIABHDQALCyACIARqDwtBACEEQQAhBSACQQRPBEAgAkEMcSEGQQAhAANAIAMgBWogASAFai0AADoAACADIAVBAXIiB2ogASAHai0AADoAACADIAVBAnIiB2ogASAHai0AADoAACADIAVBA3IiB2ogASAHai0AADoAACAFQQRqIQUgAEEEaiIAIAZHDQALCyACQQNxIgAEQANAIAMgBWogASAFai0AADoAACAFQQFqIQUgBEEBaiIEIABHDQALCyACC74EACABIAApAzA8AAAgASAAKQMwQgiIPAABIAEgACkDMEIQiDwAAiABIAApAzBCGIg8AAMgASAANQI0PAAEIAEgACkDMEIoiDwABSABIAAzATY8AAYgASAAMQA3PAAHIAEgAC0AADoACCABIAAtAAE6AAkgASAALQACOgAKIAEgAC0AAzoACyABIAAtAAQ6AAwgASAALQAFOgANIAEgAC0ABjoADiABIAAtAAc6AA8gASAALQAIOgAQIAEgAC0ACToAESABIAAtAAo6ABIgASAALQALOgATIAEgAC0ADDoAFCABIAAtAA06ABUgASAALQAOOgAWIAEgAC0ADzoAFyABIAAtABA6ABggASAALQAROgAZIAEgAC0AEjoAGiABIAAtABM6ABsgASAALQAUOgAcIAEgAC0AFToAHSABIAAtABY6AB4gASAALQAXOgAfIAEgAC0AGDoAICABIAAtABk6ACEgASAALQAaOgAiIAEgAC0AGzoAIyABIAAtABw6ACQgASAALQAdOgAlIAEgAC0AHjoAJiABIAAtAB86ACcgASAALQAgOgAoIAEgAC0AIToAKSABIAAtACI6ACogASAALQAjOgArIAEgAC0AJDoALCABIAAtACU6AC0gASAALQAmOgAuIAEgAC0AJzoALyABIAAtACg6ADAgASAALQApOgAxIAEgAC0AKjoAMiABIAAtACs6ADMgASAALQAsOgA0IAEgAC0ALToANSABIAAtAC46ADYgASAALQAvOgA3C+wDACAAIAEpAAA3AzAgACABLQAIOgAAIAAgAS0ACToAASAAIAEtAAo6AAIgACABLQALOgADIAAgAS0ADDoABCAAIAEtAA06AAUgACABLQAOOgAGIAAgAS0ADzoAByAAIAEtABA6AAggACABLQAROgAJIAAgAS0AEjoACiAAIAEtABM6AAsgACABLQAUOgAMIAAgAS0AFToADSAAIAEtABY6AA4gACABLQAXOgAPIAAgAS0AGDoAECAAIAEtABk6ABEgACABLQAaOgASIAAgAS0AGzoAEyAAIAEtABw6ABQgACABLQAdOgAVIAAgAS0AHjoAFiAAIAEtAB86ABcgACABLQAgOgAYIAAgAS0AIToAGSAAIAEtACI6ABogACABLQAjOgAbIAAgAS0AJDoAHCAAIAEtACU6AB0gACABLQAmOgAeIAAgAS0AJzoAHyAAIAEtACg6ACAgACABLQApOgAhIAAgAS0AKjoAIiAAIAEtACs6ACMgACABLQAsOgAkIAAgAS0ALToAJSAAIAEtAC46ACYgACABLQAvOgAnIAAgAS0AMDoAKCAAIAEtADE6ACkgACABLQAyOgAqIAAgAS0AMzoAKyAAIAEtADQ6ACwgACABLQA1OgAtIAAgAS0ANjoALiAAIAEtADc6AC8L+wIBBX8jAEGAAmsiBCQAAn9BAyABQYCABEsNABogACkDMEKBgICAgIDAAFoEQCAAQgA3AwAgAEIANwMwIABCADcDKCAAQgA3AyAgAEIANwMYIABCADcDECAAQgA3AwhBBQwBCyAE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IAMgASAOahAeIAZyIAgQB3IhBiAKKAIMBEBBACEJA0AgCigCBCEBIwBBEGsiDyQAAkAgCCABIAkgCEHAEGogD0EMahAIIgMNAAJ/IAhByBBqIQIgCEFAayELIAEgCUEDdGopAwAhEUGAAiEDQQAhBEGAASEBA0AgCyABIAJqLQAAQQN0aikDACISIBFWBEAgAUF/cyABIARGDQIaIAQgASIDakECbSEBDAELAkAgESASVgR/IAFBAWoiBCADSA0BIANBf3MFIAELDAILIAMgBGpBAm0hAQwACwALIgFBAEgEQEELIQMMAQsgDSAIQcgQaiICIAFqLQAAIgs6AA8gDygCDCEEIAggC0EDdGogCCkDwBA3A0ACQCAEQX9zIgMgAUkEQCABIARqIgxBA3FBA0cEQCAMQQFqQQNxIRBBACEEA0AgASACaiACIAFBAWsiAWotAAA6AAAgBEEBaiIEIBBHDQALCyAMQQNJDQEDQCABIAJqQQNrIAIgAUEEayIBaigAADYAACABIANLDQALDAELIAEgA08NACABQX4gBGsiA08NAEECIAEgBGoiDGtBA3EiEARAQQAhBANAIAEgAmogAiABQQFqIgFqLQAAOgAAIARBAWoiBCAQRw0ACwsgDEEFakEDSQ0AA0AgASACaiIEIAQoAAE2AAAgAUEEaiIBIANHDQALCyACIANqIAs6AABBACEDCyAPQRBqJAAgCSAOaiIBIAEtAAAgDS0AD3M6AAAgBiADIAYbIAYgAxshBiAJQQFqIgkgCigCDEkNAAsLIA1BEGokACAGIQECQCAKKAIARQRAIAEiAw0BIAAgACgCDEEBajYCDCAAIAApAwBCAYg3AwBBACEDDAELAkACQCABDQAgACgCCEEASA0AIAVBOBAKDAELIAggBRAdIAVBOBAKQRIhAyABQQtGDQELIAooAgAhAgJAIAAoAghBAEgEQCAAIAApAwBCASACrYaENwMADAELIAAgAiAAKAIMakEBajYCDAsgASEDCyAKKAIIIAooAgxqQQA6AAALIAdBIGokACADCxkAIABCADcDACAAQQA2AgwgAEEQaiABEBoLMgAgASAAKAIMNgAAIAEgACgCCEEASAR+IAApAwAFQgALNwAEIABBEGogAUEMahAcQQALJAAgAEEQaiABQQxqEB0gACABKAAANgIMIAAgASkA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ASADEEVBACEBA0AgAUEDdCICIANB0AFqaiACIANqKQMANwMAIAFBAWoiAUERRw0ACyAAIAMpA9ABNwAAIAAgAykD2AE3AAggACADKQPoATcAGCAAIAMpA+ABNwAQIANBoANqJAAL9gkCB38IfiMAQaADayIDJAAgA0HQAWpBAEHIAfwLACADQQBByAH8CwAgAkHIAE8EQANAIAMgAykDACABKQAAhTcDACADIAMpAwggASkACIU3AwggAyADKQMQIAEpABCFNwMQIAMgAykDGCABKQAYhTcDGCADIAMpAyAgASkAIIU3AyAgAyADKQMoIAEpACiFNwMoIAMgAykDMCABKQAwhTcDMCADIAMpAzggASkAOIU3AzggAyADKQNAIAEpAECFNwNAIAFByABqIQEgAxBFIAJByABrIgJBxwBLDQALCwJAIAJFDQAgAkEETwRAIAJB/ABxIQkDQCADQdABaiIHIARqIAEgBGotAAA6AAAgByAEQQFyIgVqIAEgBWotAAA6AAAgByAEQQJyIgVqIAEgBWotAAA6AAAgByAEQQNyIgVqIAEgBWotAAA6AAAgBEEEaiEEIAZBBGoiBiAJRw0ACwsgAkEDcSIGRQ0AA0AgA0HQAWogBGogASAEai0AADoAACAEQQFqIQQgCEEBaiIIIAZHDQALCyADQdABaiACakEGOgAAIAMgAy0AlwJBgAFyOgCXAiADIAMpAwAgAykD0AGFNwMAIAMgAykDCCADKQPYAYU3AwggAyADKQMQIAMpA+ABhTcDECADIAMpAxggAykD6AGFNwMYIAMgAykDICADKQPwAYU3AyAgAyADKQMoIAMpA/gBhTcDKCADIAMpAzAgAykDgAKFNwMwIAMgAykDOCADKQOIAoU3AzggAyADKQNAIAMpA5AChTcDQCADEEUgAykDACEKIAMpAwghCyADKQMQIQwgAykDGCENIAMpAyAhDiADKQMoIQ8gAykDMCEQIAAgAykDOCIRPAA4IAAgEDwAMCAAIA88ACggACAOPAAgIAAgDTwAGCAAIAw8ABAgACALPAAIIAAgCjwAACAAIBFCOIg8AD8gACARQjCIPAA+IAAgEUIoiDwAPSAAIBFCIIg8ADwgACARQhiIPAA7IAAgEUIQiDwAOiAAIBFCCIg8ADkgACAQQjiIPAA3IAAgEEIwiDwANiAAIBBC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IgRCAFINAQsLQQAQWkGALUGALSgCAEEBajYCACACQYACaiQAC/kEAQN/IwBBMGsiBCQAIAQgASkAGDcDGCAEIAEpABA3AxAgBCABKQAANwMAIAQgASkACDcDCCAEIAM6ACEgBCACOgAgQQAhAkEAIQMjAEHQAWsiASQAIAFBAEHIAfwLACAAQQBByAH8CwADQCABIAJqIAIgBGotAAA6AAAgASACQQFyIgVqIAQgBWotAAA6AAAgASACQQJyIgVqIAQgBWotAAA6AAAgASACQQNyIgVqIAQgBWotAAA6AAAgAkEEaiECIANBBGoiA0EgRw0ACwNAIAEgAmogAiAEai0AADoAACACQQFqIQIgBkEBaiIGQQJHDQALIAFBHzoAIiABIAEtAKcBQYABcjoApwEgACAAKQMAIAEpAwCFNwMAIAAgACkDCCABKQMIhTcDCCAAIAApAxAgASkDEIU3AxAgACAAKQMYIAEpAxiFNwMYIAAgACkDICABKQMghTcDICAAIAApAyggASkDKIU3AyggACAAKQMwIAEpAzCFNwMwIAAgACkDOCABKQM4hTcDOCAAIAApA0AgASkDQIU3A0AgACAAKQNIIAEpA0iFNwNIIAAgACkDUCABKQNQhTcDUCAAIAApA1ggASkDWIU3A1ggACAAKQNgIAEpA2CFNwNgIAAgACkDaCABKQNohTcDaCAAIAApA3AgASkDcIU3A3AgACAAKQN4IAEpA3iFNwN4IAAgACkDgAEgASkDgAGFNwOAASAAIAApA4gBIAEpA4gBhTcDiAEgACAAKQOQASABKQOQAYU3A5ABIAAgACkDmAEgASkDmAGFNwOYASAAIAApA6ABIAEpA6ABhTcDoAEgAUHQAWokACAEQTBqJAALTQEBfyMAQTBrIgQkACAEIAIpABg3AxggBCACKQAQNwMQIAQgAikAADcDACAEIAIpAAg3AwggBCADOgAgIAAgASAEQSEQRyAEQTBqJAALIAAgACABKAIAIAEoAgQgASgCCLggAUEMaiABQRBqEAALGgAgACABKAIAIAEoAgQgASgCCCABQQxqEAELEAAgAEECakEDbkECdEEBcgsLACAAIAEgAhALGgsMACAAIAAQECAAEAwLBABBBAsEAEECCwQAQQELBABBEwsOACAAQQJ0QbAeaigCAAsOACAAQQJ0QYAfaigCAAv7AQACf0EAIABB/wkQD0UNABpBASAAQcYJEA9FDQAaQQIgAEHoCxAPRQ0AGkEDIABBvwoQD0UNABpBBCAAQbUNEA9FDQAaQQUgAEHVDBAPRQ0AGkEGIABBmwwQD0UNABpBByAAQbkMEA9FDQAaQQggAEH/CxAPRQ0AGkEJIABBqQoQD0UNABpBCiAAQdUKEA9FDQAaQQsgAEHfCRAPRQ0AGkEMIABBswsQD0UNABpBDSAAQYALEA9FDQAaQQ4gAEGVDRAPRQ0AGkEPIABB9gwQD0UNABpBECAAQagJEA9FDQAaQREgAEGMCRAPRQ0AGkETQRIgAEGbCxAPGwsLBABBAAsEAEEGCwQAQQgLBABBAwsEAEELCw4AIABBAnRBgBVqKAIAC5MBAAJ/QQAgAEHoFBAPRQ0AGkEBIABB6BQQD0UNABpBAiAAQegUEA9FDQAaQQMgAEHoFBAPRQ0AGkEEIABB6BQQD0UNABpBBSAAQegUEA9FDQAaQQYgAEHQCxAPRQ0AGkEHIABB6BQQD0UNABpBCCAAQegUEA9FDQAaQQkgAEHoFBAPRQ0AGkELQQogAEHoFBAPGwsLBABBIAsEAEEACwsARAAA4P///+9BCwQAQRALCwBEAAAAAAAA8EILAwABCwMAAQsOACAAQQJ0QdAVaigCAAtsAAJ/QQAgAEHoFBAPRQ0AGkEBIABB6BQQD0UNABpBAiAAQegUEA9FDQAaQQMgAEHuChAPRQ0AGkEEIABB6BQQD0UNABpBBSAAQegUEA9FDQAaQQYgAEHoFBAPRQ0AGkEIQQcgAEHoFBAPGwsLDgAgAEECdEHwFGooAgALOAACf0EAIABB6BQQD0UNABpBASAAQegUEA9FDQAaQQIgAEHoFBAPRQ0AGkEEQQMgAEGSChAPGwsLBABBAQsEAEEFCw4AIABBAnRBsBVqKAIAC0UAAn9BACAAQegUEA9FDQAaQQEgAEHoFBAPRQ0AGkECIABB6BQQD0UNABpBAyAAQdsNEA9FDQAaQQVBBCAAQegUEA8bCwtdAQF/IwBBEGsiAyQAIAMgATYCDCADIAI2AgggAyAANgIEIANBADYCAEEAIQACQCADKAIEQQZHDQAgAygCDEEIRw0AQf8SQQAgAygCCEEDRhshAAsgA0EQaiQAIAALpgEBAX8jAEEQayIGJAAgBiACNgIMIAYgAzYCCCAGIAE2AgQgBiAFNgIAAn9BACEBIABBD2pBcHEhAEEBIQICQCAGKAIEQQZHDQAgBigCDEEIRw0AIAYoAghBA0cNAEGALCgCAEUEQCAAQQA2AuASQQoMAgsgAEFBIAYoAgAiASABQUFMGzYCCEEAIQJBASEBCyAAIAE2AuASIAILIQAgBkEQaiQAIAALmgYBB38jAEEgayIGJAAgBiAENgIcIAYgAzYCGCAGIAI2AhQgBkEBNgIQIAYgATYCDCAGQQI2AggjAEEgayIBIQIgASQAAkBBgCwoAgBFBEBBCiEADAELIABBD2pBcHEiCygC4BJBBGtBfE0EQCALQQA2AuASQQEhAAwBCyACIAYoAgg2AgggAiAGKAIMNgIMIAIgBigCEDYCECACIAYoAhQ2AhQgAUGAAmsiASQAQYACIAYoAhwiAyADQYACTxshCgJAIANFDQAgBigCGCEEQQAhACADQQRPBEAgCkH8A3EhBQNAIAAgAWogACAEai0AADoAACABIABBAXIiCWogBCAJai0AADoAACABIABBAnIiCWogBCAJai0AADoAACABIABBA3IiCWogBCAJai0AADoAACAAQQRqIQAgCEEEaiIIIAVHDQALCyAKQQNxIghFDQADQCAAIAFqIAAgBGotAAA6AAAgAEEBaiEAIAdBAWoiByAIRw0ACwsCQCADQf//A3EiAEGQLC0AACIETw0AIANBf3MgBGpB//8DcUEBaiIHRQ0AIAAgAWpBACAH/AsACyADQYECTwRAIAYoAhghB0GAAiEAQYACIQgDQCABIABB/wFxaiIFIAUtAAAgACAHai0AAHM6AAAgAyAIQQFqIghB//8DcSIASw0ACwsCQCAERQ0AQQAhCEEAIQAgBEEETwRAIARB/AFxIQNBACEHA0AgACABaiIFIAUtAAAgAEEBciIFQZAsai0AAHM6AAAgASAFaiIFIAUtAAAgAEECciIFQZAsai0AAHM6AAAgASAFaiIFIAUtAAAgAEEDciIFQZAsai0AAHM6AAAgASAFaiIFIAUtAAAgAEEEaiIAQZAsai0AAHM6AAAgB0EEaiIHIANHDQALCyAEQQNxIgNFDQADQCAAIAFqIgcgBy0AACAAQQFqIgBBkCxqLQAAczoAACAIQQFqIgggA0cNAAsLIAIgATYCGCACIAogBCAEIApJGzYC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IQJBASEBCyAAIAE2AoQWIAILIQAgCEEgaiQAIAALmgYBB38jAEEgayIGJAAgBiAENgIcIAYgAzYCGCAGIAI2AhQgBkEBNgIQIAYgATYCDCAGQQI2AggjAEEgayIBIQIgASQAAkBBgCwoAgBFBEBBCiEADAELIABBD2pBcHEiCygChBZBBGtBfE0EQCALQQA2AoQWQQEhAAwBCyACIAYoAgg2AgggAiAGKAIMNgIMIAIgBigCEDYCECACIAYoAhQ2AhQgAUGAAmsiASQAQYACIAYoAhwiAyADQYACTxshCgJAIANFDQAgBigCGCEEQQAhACADQQRPBEAgCkH8A3EhBQNAIAAgAWogACAEai0AADoAACABIABBAXIiCWogBCAJai0AADoAACABIABBAnIiCWogBCAJai0AADoAACABIABBA3IiCWogBCAJai0AADoAACAAQQRqIQAgCEEEaiIIIAVHDQALCyAKQQNxIghFDQADQCAAIAFqIAAgBGotAAA6AAAgAEEBaiEAIAdBAWoiByAIRw0ACwsCQCADQf//A3EiAEGQLC0AACIETw0AIANBf3MgBGpB//8DcUEBaiIHRQ0AIAAgAWpBACAH/AsACyADQYECTwRAIAYoAhghB0GAAiEAQYACIQgDQCABIABB/wFxaiIFIAUtAAAgACAHai0AAHM6AAAgAyAIQQFqIghB//8DcSIASw0ACwsCQCAERQ0AQQAhCEEAIQAgBEEETwRAIARB/AFxIQNBACEHA0AgACABaiIFIAUtAAAgAEEBciIFQZAsai0AAHM6AAAgASAFaiIFIAUtAAAgAEECciIFQZAsai0AAHM6AAAgASAFaiIFIAUtAAAgAEEDciIFQZAsai0AAHM6AAAgASAFaiIFIAUtAAAgAEEEaiIAQZAsai0AAHM6AAAgB0EEaiIHIANHDQALCyAEQQNxIgNFDQADQCAAIAFqIgcgBy0AACAAQQFqIgBBkCxqLQAAczoAACAIQQFqIgggA0cNAAsLIAIgATYCGCACIAogBCAEIApJGzYCHCALIAJBCGoQMyIADQAgC0ECNgKEFgsgAkEgaiQAIAZBIGokACAAC3QBA38jACICIQMgAiABEBAiBEEDakECdkEDbEEQakFwcWsiAiQAIAEgBCACEAwaAkACfyAAQQ9qQXBxIgEoAoQWQQRrQX1JBEBB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b0kNACAHKAIMIAQQWUEAIQhBACEFIwBBwDBrIgQkACAEQaUsLQAAQQt0QYDwH3FrIgskACAEQYAwaiIGEFsgBiAGQSAQSSALIAZBABBKAkBBpSwtAABFDQAgBEGgMGohCkEAIQYDQCAEIAVBCXRqIAogBkH/AXEQTiAGQQFqIQYgBUEBaiIFQaUsLQAAIglJDQALIAlFDQBBACEFA0AgBEGAIGogBUEJdGogCiAGQf8BcRBOIAZBAWohBiAFQQFqIgVBpSwtAABJDQALCyAEEFUgBEGAIGoQVUEAIQZBpSwtAAAEQANAIARBgBBqIAZBCXRqIgogCyAGQQt0aiAEEFZBACEFA0AgCiAFQQF0aiIJIAkuAQBByQpsIgkgCUGAgISYf2xBEHVB/2VsakEQdTsBACAFQQFqIgVBgAJHDQALIAZBAWoiBkGlLC0AAEkNAAsLIARBgBBqIgUgBSAEQYAgahBYIAUQVyAAIAQQUyACIAUQUyACQaosLwEAaiAELQCAMDoAACACQaosLwEAaiAELQCBMDoAASACQaosLwEAaiAELQCCMDoAAiACQaosLwEAaiAELQCDMDoAAyACQaosLwEAaiAELQCEMDoABCACQaosLwEAaiAELQCFMDoABSACQaosLwEAaiAELQCGMDoABiACQaosLwEAaiAELQCHMDoAByACQaosLwEAaiAELQCIMDoACCACQaosLwEAaiAELQCJMDoACSACQaosLwEAaiAELQCKMDoACiACQaosLwEAaiAELQCLMDoACyACQaosLwEAaiAELQCMMDoADCACQaosLwEAaiAELQCNMDoADSACQaosLwEAaiAELQCOMDoADiACQaosLwEAaiAELQCPMDoADyACQaosLwEAaiAELQCQMDoAECACQaosLwEAaiAELQCRMDoAESACQaosLwEAaiAELQCSMDoAEiACQaosLwEAaiAELQCTMDoAEyACQaosLwEAaiAELQCUMDoAFCACQaosLwEAaiAELQCVMDoAFSACQaosLwEAaiAELQCWMDoAFiACQaosLwEAaiAELQCXMDoAFyACQaosLwEAaiAELQCYMDoAGCACQaosLwEAaiAELQCZMDoAGSACQaosLwEAaiAELQCaMDoAGiACQaosLwEAaiAELQCbMDoAGyACQaosLwEAaiAELQCcMDoAHCACQaos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LjIuMQDLBQMl85YbsK/h4woYOVwVefveOC+oxkW9h7h3Lmcst6H39bW1nQV0GY0wM9VkJuNuSrQ9ipJFVOw3vVZb0P2oIJEAywUDJfOWG7Cv4eMKGDlcFXn73jgvqMZFvYe4dy5nLLeh9/W1tZ0FdBmNMDPVZCbjbkq0PYqSRVTsN71WW9D9qCCRAG10ZV9zdGF0dXNfc2VxX2FzeW5jX3JlcGxheQBtdGVfc3RhdHVzX3NlcV9vdXRzaWRlX3dpbmRvdwBtdGVfc3RhdHVzX2ludmFsaWRfaW5wdXQAbXRlX3N0YXR1c190b2tlbl9kb2VzX25vdF9leGlzdABtdGVfc3RhdHVzX3N1Y2Nlc3MAbXRlX2NpcGhlcnNfYWVzMjU2X2N0cgBtdGVfc3RhdHVzX2ltcGxfZXJyb3IAbXRlX3N0YXR1c19kcmJnX2Vycm9yAG10ZV9zdGF0dXNfbGljZW5zZV9lcnJvcgBtdGVfdmVyaWZpZXJzX3NlcQBtdGVfc3RhdHVzX2RpZ2VzdF9taXNtYXRjaABtdGVfc3RhdHVzX3NlcV9taXNtYXRjaABtdGVfc3RhdHVzX2NoZWNrc3VtX21pc21hdGNoAG10ZV9kcmJnc19jdHJfYWVzMjU2X2RmAG10ZV9zdGF0dXNfdW5zdXBwb3J0ZWQAbXRlX3N0YXR1c19vdXRwdXRfaW5oaWJpdGVkAG10ZV9zdGF0dXNfY2lwaGVyX3Rlc3RfZmFpbGVkAG10ZV9zdGF0dXNfaGFzaF90ZXN0X2ZhaWxlZABtdGVfc3RhdHVzX2RyYmdfc2VlZGxpZmVfcmVhY2hlZABtdGVfc3RhdHVzX3RpbWVfYWZ0ZXJfZXhjZWVkZWQAbXRlX3N0YXR1c190aW1lX2JlZm9yZV9leGNlZWRlZABtdGVfc3RhdHVzX2RyYmdfY2F0YXN0cm9waGljAEt5YmVyNzY4AG10ZV9oYXNoZXNfc2hhMjU2AEt5YmVyMTAyNABLeWJlcjUxMgBUaGUgc2VxdWVuY2UgbnVtYmVyIGlzIG91dHNpZGUgdGhlIHdpbmRvdy4AT3V0cHV0IGlzIGluaGliaXRlZCBkdWUgdG8gYW4gZXJyb3Igc3RhdGUgb3Igc2VsZi10ZXN0LgBUaGUgbWVzc2FnZSB3YXMgcmVjZWl2ZWQgdG9vIGxvbmcgYWZ0ZXIgaXQgd2FzIHNlbnQuAFRoZSBtZXNzYWdlIHdhcyByZWNlaXZlZCB0b28gbG9uZyBiZWZvcmUgaXQgd2FzIHNlbnQuAE5vIHN1Y2ggdG9rZW4gZXhpc3RzLgBJbXBsZW1lbnRhdGlvbiBlcnJvci4ASGFzaCBkaWdlc3QgbWlzbWF0Y2guAENoZWNrc3VtIG1pc21hdGNoLgBUaGUgc2VxdWVuY2UgbnVtYmVyIGhhcyBhbHJlYWR5IGJlZW4gc2VlbiBpbiBhc3luYyBtb2RlLgBUaGUgbGljZW5zZSB3YXMgbm90IHNldCBvciBpcyBub3QgdmFsaWQuAEFuIGlucHV0IHdhcyBub3QgdmFsaWQuAEF0dGVtcHRpbmcgdG8gc3luYyB1cCBhIHNlcXVlbmNpbmcgdmFyaWF0aW9uIHJlc3VsdGVkIGluIGEgYmFkIG1lc3NhZ2UuIFRoZSBzdGF0ZSBoYXMgYmVlbiByb2xsZWQgYmFjayB0byB3aGVyZSBpdCB3YXMgYmVmb3JlIHRoZSBtZXNzYWdlIGFycml2ZWQuAEFuIHVuc3VwcG9ydGVkIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkLgBObyBlcnJvciBvY2N1cnJlZC4AQSBjaXBoZXIgYWxnb3JpdGhtIHNlbGYtdGVzdCBmYWlsZWQuAEEgaGFzaCBhbGdvcml0aG0gc2VsZi10ZXN0IGZhaWxlZC4AQSBub3JtYWwgRFJCRyBlcnJvciBvY2N1cnJlZC4gTklTVCBTUCA4MDAtOTBBIHNlY3Rpb24gOS4AQSBjYXRhc3Ryb3BoaWMgRFJCRyBlcnJvciBvY2N1cnJlZC4gTklTVCBTUCA4MDAtOTBBIHNlY3Rpb24gOS4AVGhlIHNlZWRsaWZlIGhhcyBiZWVuIHJlYWNoZWQuIE5JU1QgU1AgODAwLTkwQSBzZWN0aW9uIDkuMy4xLgAAAAAAAAAAaAoAAGgKAABoCgAAEgUAAGgKAABoCgAAaAoAAGgKAABoCgAAaAoAANAFAABoCgAAaAoAAGgKAABoCgAAAAAAAGgKAABoCgAAaAoAANsGAABoCgBB0BULgBBoCgAAaAoAAGgKAABuBQAAaAoAAGgKAABoCgAAaAoAAEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVm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`}))(),r=Object.freeze([137,77,84]),i=Object.freeze([77,84,69]),a={REQUEST:0,RESPONSE:1,DATA:2,ERROR:3,OPEN:4,OPEN_ACK:5,CLOSE:6,PING:7,PONG:8,GOAWAY:9,REKEY_REQUEST:10},o=[`REQUEST`,`RESPONSE`,`DATA`,`ERROR`,`OPEN`,`OPEN_ACK`,`CLOSE`,`PING`,`PONG`,`GOAWAY`,`REKEY_REQUEST`];function s(e){return o[e]??`KIND(${e})`}var c={END:1,MORE:2,TEXT:4,HALF:8},l=class extends Error{code;seen;max;constructor(e,t,n){super(t),this.name=`FrameError`,this.code=e,this.seen=n?.seen,this.max=n?.max}};function u(e){return e.length>=3&&e[0]===i[0]&&e[1]===i[1]&&e[2]===i[2]}function d(e){if(e.length>=r.length&&(e[0]!==r[0]||e[1]!==r[1]||e[2]!==r[2]))throw u(e)?new l(`legacy_signature`,`legacy MTE signature (frame version 1 or older); this relay speaks frame version 2 only`):new l(`signature`,`bad signature; this is not an MTE Relay frame`);if(e.length<12)throw new l(`short`,`short header: ${e.length} bytes, need 12`);let t=e[3];if(t!==2)throw new l(`version`,`unsupported frame version ${t} (this build accepts 2)`,{seen:t});let n=e[5];if(n&240||e[6]!==0||e[7]!==0)throw new l(`reserved`,`reserved bit or byte set`);let i=e[4];if(i>10)throw new l(`kind`,`unassigned kind ${i}`,{seen:i});return{version:t,kind:i,flags:n,length:new DataView(e.buffer,e.byteOffset,12).getUint32(8,!1)}}function f(e,t,n){if(!Number.isInteger(n)||n<0||n>4294967295)throw new l(`payload`,`frame length ${n} does not fit a uint32`,{seen:n});let i=new Uint8Array(12);return i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=2,i[4]=e,i[5]=t,new DataView(i.buffer).setUint32(8,n,!1),i}function p(e,t,n){let r=new Uint8Array(12+n.length);return r.set(f(e,t,n.length),0),r.set(n,12),r}function m(e,t){let{kind:n,flags:r,length:i}=e;if(t===`ws`&&(r&c.END)!==0)throw new l(`payload`,`${s(n)} carries END on ws`);if(n===a.REQUEST||n===a.RESPONSE){if((r&~c.END)!==0)throw new l(`payload`,`${s(n)} carries flags 0x${r.toString(16)}`);return}if(n===a.DATA){if((r&(c.MORE|c.TEXT))!==0&&t!==`ws`)throw new l(`payload`,`DATA carries MORE or TEXT on ${t}`);if((r&c.HALF)!==0&&t!==`tcp`)throw new l(`payload`,`DATA carries HALF on ${t}`);if(i===0&&r!==0)throw new l(`payload`,`length 0 DATA carries flags 0x${r.toString(16)}`);return}if(r!==0)throw new l(`payload`,`${s(n)} carries flags 0x${r.toString(16)}`)}function h(e,t){let n=new Uint8Array(1+t.length);return n[0]=e,n.set(t,1),n}function g(e,t){if(e.length===0)throw new l(`payload`,`empty DATA plaintext`);if(e[0]!==t)throw new l(`flags_mismatch`,`DATA flags byte 0x${e[0].toString(16)} does not match header flags 0x${t.toString(16)}`,{seen:e[0]});return e.subarray(1)}var _=class{raw;constructor(e){this.raw=e}},v=new TextDecoder(`utf-8`,{fatal:!0}),y=new TextEncoder;function b(e){throw new l(`metadata`,e)}var ee=class{i=0;src;constructor(e){this.src=e}parseTopLevelObject(){this.skipWhitespace(),this.src[this.i]!==`{`&&b(`metadata top level must be a JSON object`);let e=this.parseObject();return this.skipWhitespace(),this.i!==this.src.length&&b(`trailing data after the top level object at offset ${this.i}`),e}skipWhitespace(){for(;this.i<this.src.length;){let e=this.src[this.i];if(e===` `||e===` `||e===`
2
2
  `||e===`\r`){this.i+=1;continue}return}}expect(e){this.src[this.i]!==e&&b(`expected ${e} at offset ${this.i}`),this.i+=1}parseValue(){this.skipWhitespace();let e=this.src[this.i];if(e===void 0&&b(`unexpected end of input`),e===`{`)return this.parseObject();if(e===`[`)return this.parseArray();if(e===`"`)return this.parseString();if(e===`t`)return this.parseLiteral(`true`,!0);if(e===`f`)return this.parseLiteral(`false`,!1);if(e===`n`)return this.parseLiteral(`null`,null);if(e===`-`||e>=`0`&&e<=`9`)return this.parseNumber();b(`unexpected character ${JSON.stringify(e)} at offset ${this.i}`)}parseLiteral(e,t){if(this.src.startsWith(e,this.i))return this.i+=e.length,t;b(`invalid literal at offset ${this.i}`)}parseObject(){this.expect(`{`);let e=new Map;if(this.skipWhitespace(),this.src[this.i]===`}`)return this.i+=1,e;for(;;){this.skipWhitespace(),this.src[this.i]!==`"`&&b(`object key must be a string at offset ${this.i}`);let t=this.parseString();e.has(t)&&b(`duplicate key ${JSON.stringify(t)}`),this.skipWhitespace(),this.expect(`:`),e.set(t,this.parseValue()),this.skipWhitespace();let n=this.src[this.i];if(n===`,`){this.i+=1;continue}if(n===`}`)return this.i+=1,e;b(`expected , or } at offset ${this.i}`)}}parseArray(){this.expect(`[`);let e=[];if(this.skipWhitespace(),this.src[this.i]===`]`)return this.i+=1,e;for(;;){e.push(this.parseValue()),this.skipWhitespace();let t=this.src[this.i];if(t===`,`){this.i+=1;continue}if(t===`]`)return this.i+=1,e;b(`expected , or ] at offset ${this.i}`)}}parseString(){this.expect(`"`);let e=``;for(;;){let t=this.src[this.i];if(t===void 0&&b(`unterminated string`),t===`"`)return this.i+=1,e;if(t===`\\`){this.i+=1,e+=this.parseEscape();continue}t<` `&&b(`unescaped control character U+${t.charCodeAt(0).toString(16)} in a string`),e+=t,this.i+=1}}parseEscape(){let e=this.src[this.i];switch(this.i+=1,e){case`"`:return`"`;case`\\`:return`\\`;case`/`:return`/`;case`b`:return`\b`;case`f`:return`\f`;case`n`:return`
3
- `;case`r`:return`\r`;case`t`:return` `;case`u`:{let e=this.src.slice(this.i,this.i+4);return/^[0-9a-fA-F]{4}$/.test(e)||b(`bad \\u escape at offset ${this.i}`),this.i+=4,String.fromCharCode(Number.parseInt(e,16))}default:return b(`bad escape \\${e} at offset ${this.i-1}`)}}parseNumber(){let e=this.i;if(this.src[this.i]===`-`&&(this.i+=1),this.src[this.i]===`0`)this.i+=1;else for(this.isDigit(this.src[this.i])||b(`bad number at offset ${e}`);this.isDigit(this.src[this.i]);)this.i+=1;if(this.src[this.i]===`.`)for(this.i+=1,this.isDigit(this.src[this.i])||b(`bad number at offset ${e}`);this.isDigit(this.src[this.i]);)this.i+=1;let t=this.src[this.i];if(t===`e`||t===`E`){this.i+=1;let t=this.src[this.i];for((t===`+`||t===`-`)&&(this.i+=1),this.isDigit(this.src[this.i])||b(`bad number at offset ${e}`);this.isDigit(this.src[this.i]);)this.i+=1}return new _(this.src.slice(e,this.i))}isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}};function x(e){let t;try{t=v.decode(e)}catch{return b(`metadata is not valid UTF-8`)}return new ee(t).parseTopLevelObject()}var te={8:`\\b`,9:`\\t`,10:`\\n`,12:`\\f`,13:`\\r`,34:`\\"`,92:`\\\\`};function ne(e){let t=`"`;for(let n of e){let e=n.codePointAt(0),r=te[e];if(r!==void 0){t+=r;continue}if(e<32){t+=`\\u${e.toString(16).padStart(4,`0`)}`;continue}t+=n}return t+`"`}function re(e,t){let n=y.encode(e),r=y.encode(t),i=Math.min(n.length,r.length);for(let e=0;e<i;e+=1)if(n[e]!==r[e])return n[e]-r[e];return n.length-r.length}function S(e){return e===null?`null`:typeof e==`boolean`?e?`true`:`false`:typeof e==`string`?ne(e):e instanceof _?e.raw:Array.isArray(e)?`[${e.map(S).join(`,`)}]`:`{${[...e.keys()].sort(re).map(t=>`${ne(t)}:${S(e.get(t))}`).join(`,`)}}`}function ie(e){return y.encode(S(e))}function C(e){for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n===0||n===10||n===13)return!1}return!0}var w={PAIR_NOT_FOUND:470,DECODER_RESTORE_FAILED:471,ENCODER_RESTORE_FAILED:472,DECODE_FAILED:473,ENCODE_FAILED:474,INVALID_CLIENT_ID:475,POOL_EXHAUSTED:476,INVALID_FRAME:477,FRAME_VERSION_UNSUPPORTED:478,REPLAY_REJECTED:479,NO_DOMAIN_FOR_HOST:480,FRAME_TOO_LARGE:481,METADATA_INVALID:482,HEADER_MISMATCH:483,TARGET_POLICY:484,UPSTREAM_CAPACITY:485,PAIR_BUSY:486,REKEY_OVERDUE:487,LIMIT:488,TARGET_RESET:489,INVALID_REQUEST:490,INTERNAL:500,UPSTREAM:502,STATE_STORE:503},T={PAIR_NOT_FOUND:`pair_not_found`,DECODER_RESTORE_FAILED:`decoder_restore_failed`,ENCODER_RESTORE_FAILED:`encoder_restore_failed`,DECODE_FAILED:`decode_failed`,ENCODE_FAILED:`encode_failed`,INVALID_CLIENT_ID:`invalid_client_id`,INVALID_TOKEN:`invalid_token`,UNKNOWN_KEY:`unknown_key`,POOL_EXHAUSTED:`pool_exhausted`,INVALID_FRAME:`invalid_frame`,EOF_BEFORE_END:`eof_before_end`,FRAME_VERSION_UNSUPPORTED:`frame_version_unsupported`,REPLAY_REJECTED:`replay_rejected`,NO_DOMAIN_FOR_HOST:`no_domain_for_host`,FRAME_TOO_LARGE:`frame_too_large`,BODY_TOO_LARGE:`body_too_large`,MESSAGE_TOO_LARGE:`message_too_large`,METADATA_INVALID:`metadata_invalid`,HEADER_MISMATCH:`header_mismatch`,TARGET_FORBIDDEN:`target_forbidden`,PORT_OUT_OF_RANGE:`port_out_of_range`,AUTHZ_REVOKED:`authz_revoked`,UPSTREAM_CAPACITY:`upstream_capacity`,PAIR_BUSY:`pair_busy`,NOT_OWNER:`not_owner`,REKEY_OVERDUE:`rekey_overdue`,CONNECTION_LIMIT:`connection_limit`,RATE_LIMITED:`rate_limited`,TARGET_RESET:`target_reset`,INVALID_REQUEST:`invalid_request`,PAIR_EXISTS:`pair_exists`,PAIR_LIMIT:`pair_limit`,PROFILE_MISMATCH:`profile_mismatch`,INTERNAL:`internal`,CONFIGURATION:`configuration`,UPSTREAM_CONNECT_FAILED:`upstream_connect_failed`,UPSTREAM_RESPONSE_FAILED:`upstream_response_failed`,STATE_STORE_UNAVAILABLE:`state_store_unavailable`,STATE_STORE_WRITE_FAILED:`state_store_write_failed`},ae=new Map([[w.PAIR_NOT_FOUND,[T.PAIR_NOT_FOUND]],[w.DECODER_RESTORE_FAILED,[T.DECODER_RESTORE_FAILED]],[w.ENCODER_RESTORE_FAILED,[T.ENCODER_RESTORE_FAILED]],[w.DECODE_FAILED,[T.DECODE_FAILED]],[w.ENCODE_FAILED,[T.ENCODE_FAILED]],[w.INVALID_CLIENT_ID,[T.INVALID_CLIENT_ID,T.INVALID_TOKEN,T.UNKNOWN_KEY]],[w.POOL_EXHAUSTED,[T.POOL_EXHAUSTED]],[w.INVALID_FRAME,[T.INVALID_FRAME,T.EOF_BEFORE_END]],[w.FRAME_VERSION_UNSUPPORTED,[T.FRAME_VERSION_UNSUPPORTED]],[w.REPLAY_REJECTED,[T.REPLAY_REJECTED]],[w.NO_DOMAIN_FOR_HOST,[T.NO_DOMAIN_FOR_HOST]],[w.FRAME_TOO_LARGE,[T.FRAME_TOO_LARGE,T.BODY_TOO_LARGE,T.MESSAGE_TOO_LARGE]],[w.METADATA_INVALID,[T.METADATA_INVALID]],[w.HEADER_MISMATCH,[T.HEADER_MISMATCH]],[w.TARGET_POLICY,[T.TARGET_FORBIDDEN,T.PORT_OUT_OF_RANGE,T.AUTHZ_REVOKED]],[w.UPSTREAM_CAPACITY,[T.UPSTREAM_CAPACITY]],[w.PAIR_BUSY,[T.PAIR_BUSY,T.NOT_OWNER]],[w.REKEY_OVERDUE,[T.REKEY_OVERDUE]],[w.LIMIT,[T.CONNECTION_LIMIT,T.RATE_LIMITED]],[w.TARGET_RESET,[T.TARGET_RESET]],[w.INVALID_REQUEST,[T.INVALID_REQUEST,T.PAIR_EXISTS,T.PAIR_LIMIT,T.PROFILE_MISMATCH]],[w.INTERNAL,[T.INTERNAL,T.CONFIGURATION]],[w.UPSTREAM,[T.UPSTREAM_CONNECT_FAILED,T.UPSTREAM_RESPONSE_FAILED]],[w.STATE_STORE,[T.STATE_STORE_UNAVAILABLE,T.STATE_STORE_WRITE_FAILED]]]),oe=new Map([[559,`pair not found`],[560,`decoder restore failed`],[561,`encoder restore failed`],[562,`decode failed`],[563,`encode failed`],[564,`invalid client id`],[565,`state pool exhausted`],[566,`invalid request format`],[567,`internal relay error`],[568,`configuration error`],[569,`reserved`]]);function se(e){return ae.has(e)}function ce(e){return oe.has(e)}function le(e){return oe.get(e)}function ue(e){return fe(e)<=64&&/^[a-z][a-z0-9_]*$/.test(e)}var de=new TextEncoder;function fe(e){return de.encode(e).length}function pe(e,t){switch(e){case w.PAIR_NOT_FOUND:case w.DECODER_RESTORE_FAILED:case w.ENCODER_RESTORE_FAILED:case w.DECODE_FAILED:case w.ENCODE_FAILED:return`replace_pair`;case w.INVALID_CLIENT_ID:return t===T.UNKNOWN_KEY?`stop`:`full_repair`;case w.POOL_EXHAUSTED:case w.UPSTREAM_CAPACITY:case w.LIMIT:return`back_off`;case w.INVALID_FRAME:return t===T.EOF_BEFORE_END?`replace_pair`:`surface`;case w.FRAME_TOO_LARGE:return t===T.MESSAGE_TOO_LARGE?`replace_pair`:`surface`;case w.REPLAY_REJECTED:case w.HEADER_MISMATCH:return`surface_security`;case w.TARGET_POLICY:return t===T.PORT_OUT_OF_RANGE?`surface`:`stop`;case w.PAIR_BUSY:return t===T.NOT_OWNER?`back_off_not_owner`:`retry_once_then_replace`;case w.REKEY_OVERDUE:return`reconnect`;case w.STATE_STORE:return t===T.STATE_STORE_WRITE_FAILED?`replace_pair`:`retry_same`;default:return`surface`}}var me=new TextEncoder;function E(e){throw new l(`payload`,e)}function he(e){return me.encode(e).length}function ge(e,t){try{return x(e)}catch(e){return E(`${t}: ${e instanceof Error?e.message:e}`)}}function D(e,t){if(!e.has(t))return;let n=e.get(t);return typeof n!=`string`&&E(`${t} is not a string`),n}function _e(e,t){if(!e.has(t))return;let n=e.get(t);(!(n instanceof _)||!/^-?\d+$/.test(n.raw))&&E(`${t} is not an integer`);let r=Number(n.raw);return Number.isSafeInteger(r)||E(`${t} is out of range`),r}function ve(e,t){(!Number.isInteger(e)||e<0||e>65535)&&E(`${t} ${e} does not fit a uint16`)}function ye(e){ve(e.code,`error code`),ue(e.reason)||E(`error reason ${JSON.stringify(e.reason)}`);let t=e.message??``;(he(t)>4096||!C(t))&&E(`error message`);let n=e.cause;n&&(ve(n.code,`cause code`),ue(n.reason)||E(`cause reason ${JSON.stringify(n.reason)}`),(!Number.isInteger(n.hop)||n.hop<0)&&E(`cause hop ${n.hop}`))}function be(e){e.length<2&&E(`error payload ${e.length} bytes, need at least 2`);let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1),n=ge(e.subarray(2),`error json`),r={code:t,reason:D(n,`reason`)??``,message:D(n,`message`)??``},i=n.get(`cause`);return i!==void 0&&(i instanceof Map||E(`cause is not an object`),r.cause={code:_e(i,`code`)??0,hop:_e(i,`hop`)??0,reason:D(i,`reason`)??``}),ye(r),r}var O={GET:0,POST:1,PUT:2,PATCH:3,DELETE:4,HEAD:5,OPTIONS:6,TRACE:7,CONNECT:8},xe=Object.keys(O).length-1;function Se(e){if(Object.prototype.hasOwnProperty.call(O,e))return O[e]}function Ce(e){return Number.isInteger(e)?e>=0&&e<=xe||e===255:!1}var we="!#$%&'*+-.^_`|~";function k(e){if(e.length===0||e.length>32)return!1;for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(!(n>=97&&n<=122||n>=65&&n<=90||n>=48&&n<=57)&&!we.includes(e.charAt(t)))return!1}return!0}var Te=16384,Ee={MKE:61439,MTE:7168},De=new Set([`connection`,`content-length`,`host`,`keep-alive`,`proxy-authenticate`,`proxy-authorization`,`proxy-connection`,`te`,`trailer`,`transfer-encoding`,`upgrade`]);function A(e){return De.has(e)}function j(e){throw new l(`metadata`,e)}var Oe=/^[!#$%&'*+\-.^_`|~0-9a-z]+$/;function M(e){let t=0;for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);r<128?t+=1:r<2048?t+=2:r>=55296&&r<=56319&&(e.charCodeAt(n+1)&64512)==56320?(t+=4,n+=1):t+=3}return t}function ke(e){return e.length>=1&&e.length<=256&&Oe.test(e)}function Ae(e){return M(e)<=8192&&C(e)}var je=/^-?(0|[1-9][0-9]*)$/,Me=/^(0|[1-9][0-9]*)$/;function Ne(e,t){(!(e instanceof _)||!je.test(e.raw))&&j(`metadata ${t} is not an integer`);let n=Number(e.raw);return Number.isSafeInteger(n)||j(`metadata ${t} is out of range`),n}function Pe(e,t){return typeof e!=`string`&&j(`metadata ${t} is not a string`),e}function Fe(e){let t=x(e),n={v:0},r;for(let[e,i]of t)switch(e){case`v`:{let e=Ne(i,`v`);(e<1||e>255)&&j(`metadata v ${e} is outside 1 to 255`),n.v=e;break}case`method`:{let e=Pe(i,`method`);k(e)||j(`metadata method is not a token`),n.method=e;break}case`status`:{let e=Ne(i,`status`);(e<100||e>599)&&j(`metadata status ${e} is outside 100 to 599`),n.status=e;break}case`path`:{let e=Pe(i,`path`);M(e)>16384&&j(`metadata path is too long`),C(e)||j(`metadata path carries CR, LF, or NUL`),n.path=e;break}case`target`:{let e=Pe(i,`target`);M(e)>256&&j(`metadata target is too long`),C(e)||j(`metadata target carries CR, LF, or NUL`),n.target=e;break}case`port`:{let e=Ne(i,`port`);(e<1||e>65535)&&j(`metadata port ${e} is outside 1 to 65535`),n.port=e;break}case`id`:{(!(i instanceof _)||!Me.test(i.raw))&&j(`metadata id is not an unsigned integer`);let e=BigInt(i.raw);e>18446744073709551615n&&j(`metadata id does not fit an unsigned 64 bit integer`),n.id=e;break}case`headers`:n.headers=Ie(i);break;default:e.startsWith(`x-`)&&(r===void 0&&(r=new Map),r.set(e,i))}return n.v===0&&j(`metadata is missing v`),r!==void 0&&(n.extra=r),n}function Ie(e){if(e===null)return;e instanceof Map||j(`metadata headers is not an object`),e.size>256&&j(`metadata carries ${e.size} header names`);let t=new Map;for(let[n,r]of e){ke(n)||j(`header name ${JSON.stringify(n)} is not a lowercase token`);let e;Array.isArray(r)?(r.length===0&&j(`header ${n} carries an empty array`),e=r.map(e=>(typeof e!=`string`&&j(`header ${n} carries an array element that is not a string`),e))):typeof r==`string`?e=[r]:j(`header ${n} is not a string or an array of strings`),e.length>64&&j(`header ${n} carries ${e.length} values`);for(let t of e)Ae(t)||j(`header ${n} carries an invalid value`);A(n)||t.set(n,e)}return t}function Le(e,t=2){e.v!==t&&j(`metadata v ${e.v} does not match the envelope version ${t}`)}function Re(e,t=0){let n=new Map,r=e.v?e.v:2;if((!Number.isInteger(r)||r<1||r>255)&&j(`metadata v ${r} is outside 1 to 255`),n.set(`v`,new _(String(r))),e.method&&(k(e.method)||j(`metadata method ${JSON.stringify(e.method)} is not a token`),n.set(`method`,e.method)),e.status&&((!Number.isInteger(e.status)||e.status<100||e.status>599)&&j(`metadata status ${e.status} is outside 100 to 599`),n.set(`status`,new _(String(e.status)))),e.path&&(He(e.path),n.set(`path`,e.path)),e.target&&(M(e.target)>256&&j(`metadata target is too long`),C(e.target)||j(`metadata target carries CR, LF, or NUL`),n.set(`target`,e.target)),e.port!==void 0&&((!Number.isInteger(e.port)||e.port<1||e.port>65535)&&j(`metadata port ${e.port} is outside 1 to 65535`),n.set(`port`,new _(String(e.port)))),e.id!==void 0&&((e.id<0n||e.id>18446744073709551615n)&&j(`metadata id does not fit an unsigned 64 bit integer`),n.set(`id`,new _(e.id.toString()))),e.headers!==void 0&&e.headers.size>0){let t=ze(e.headers);t.size>0&&n.set(`headers`,t)}if(e.extra!==void 0)for(let[t,r]of e.extra)(!t.startsWith(`x-`)||!ke(t))&&j(`vendor member ${JSON.stringify(t)} must be a lowercase token starting with x-`),n.set(t,r);let i=ie(n);if(t>0&&i.length>t)throw new l(`metadata`,`metadata is ${i.length} bytes and the bound is ${t}`,{seen:i.length,max:t});return i}function ze(e){let t=new Map;for(let[n,r]of e){let e=n.toLowerCase();if(ke(e)||j(`header name ${JSON.stringify(n)} is not a token`),!A(e)&&r.length!==0){r.length>64&&j(`header ${e} carries ${r.length} values`);for(let t of r)Ae(t)||j(`header ${e} carries an invalid value`);t.has(e)&&j(`header ${e} appears under two casings`),t.set(e,r.length===1?r[0]:[...r])}}return t.size>256&&j(`metadata carries ${t.size} header names`),t}function Be(e){let t=new Headers;for(let n of[...e.keys()].sort(re))if(!A(n))for(let r of e.get(n))t.append(n,r);return t}function Ve(e){let t=`${e.pathname}${e.search}`,n=t.startsWith(`/`)?t.slice(1):t,r=M(n);return r>16384&&j(`path is ${r} bytes and the bound is ${Te}`),n}function He(e){let t=M(e);t>16384&&j(`path is ${t} bytes and the bound is ${Te}`),C(e)||j(`metadata path carries CR, LF, or NUL`),e.startsWith(`/`)&&j(`metadata path carries a leading slash`)}var Ue={MTE:0,MKE:1},We=1,Ge=2,Ke=Ge+16,qe=Ke+2,Je=4;function Ye(e){let{mteType:t,method:n,pairId:r,token:i,metadata:a}=e;if(!Number.isInteger(t)||t<0||t>Ue.MKE)throw new l(`payload`,`mte type ${t}`,{seen:t});if(!Ce(n))throw new l(`payload`,`method byte ${n}`,{seen:n});if(r.length!==16)throw new l(`payload`,`pair id ${r.length} bytes, want 16`,{seen:r.length});if(i.length!==0&&i.length!==40)throw new l(`payload`,`token length ${i.length}, want 0 or 40`,{seen:i.length});if(a.length===0)throw new l(`payload`,`empty metadata`);if(a.length>4294967295)throw new l(`payload`,`metadata length ${a.length} exceeds uint32`,{seen:a.length})}function Xe(e){Ye(e);let{token:t,metadata:n}=e,r=new Uint8Array(24+t.length+n.length);r[0]=e.mteType,r[We]=e.method,r.set(e.pairId,Ge),r.set(t,qe),r.set(n,qe+t.length+Je);let i=new DataView(r.buffer);return i.setUint16(Ke,t.length,!1),i.setUint32(qe+t.length,n.length,!1),r}var Ze=2;function Qe(e){let{status:t,metadata:n}=e;if(!Number.isInteger(t)||t<100||t>599)throw new l(`payload`,`status ${t}`,{seen:t});if(n.length===0)throw new l(`payload`,`empty metadata`);if(n.length>4294967295)throw new l(`payload`,`metadata length ${n.length} exceeds uint32`,{seen:n.length})}function $e(e){if(e.length<6)throw new l(`payload`,`response payload ${e.length} bytes, need at least 6`,{seen:e.length});let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32(Ze,!1);if(n===0)throw new l(`payload`,`empty metadata`);let r=e.length-6;if(r!==n)throw new l(`payload`,`metadata length ${n}, ${r} bytes follow`,{seen:r});let i={status:t.getUint16(0,!1),metadata:e.subarray(6)};return Qe(i),i}var et=new Set([`content-type`,`x-mte-relay-route`]),tt=/^[!#$%&'*+\-.^_`|~0-9a-z]+$/;function N(e,t){throw Error(`MTE relay configuration field ${e} ${t}`)}function nt(e,t){if(e===void 0)return{all:!1,names:new Set};Array.isArray(e)||N(t,`must be an array of header names. Received: ${typeof e}.`);let n=new Set,r=!1;for(let i of e){typeof i!=`string`&&N(t,`must contain only strings.`);let e=i.trim().toLowerCase();if(e===``&&N(t,`must not contain empty names.`),e===`*`){r=!0;continue}n.add(e)}if(r)return n.size>0&&N(t,`"*" must be the only entry.`),{all:!0,names:new Set};for(let e of n)tt.test(e)||N(t,`contains an invalid header name: ${e}.`),et.has(e)&&N(t,`must not list ${e}; it is always encrypted.`);return{all:!1,names:n}}function rt(e,t){let n={},r={};return e.forEach((e,i)=>{if(et.has(i)){n[i]=e;return}if(t.all||t.names.has(i)){r[i]=e;return}n[i]=e}),{encrypted:n,plain:r}}var it=4,at=1,ot=8,st=`MKE`,ct=-63,lt=1e3,ut=3e4,dt=3e5,ft=6e4,pt=6e5,mt=48,ht=512,gt=65535,_t=`include`,vt=!0;function yt(e){if(e!==`MTE`&&e!==`MKE`)throw Error(`MTE relay configuration field defaultEncodeType must be \"MTE\" or \"MKE\". Received: ${String(e)}.`)}function bt(e){if(e!==`include`&&e!==`same-origin`&&e!==`omit`)throw Error(`MTE relay configuration field credentials must be "include", "same-origin", or "omit". Received: ${String(e)}.`)}function P(e,t,n){if(!Number.isFinite(t)||!Number.isInteger(t))throw Error(`MTE relay configuration field ${e} must be a finite integer. Received: ${t}.`);if(n?.min!==void 0&&t<n.min)throw Error(`MTE relay configuration field ${e} must be >= ${n.min}. Received: ${t}.`);if(n?.max!==void 0&&t>n.max)throw Error(`MTE relay configuration field ${e} must be <= ${n.max}. Received: ${t}.`)}function xt(e){if(e===void 0||e===!1)return null;if(e===!0)return{enabled:!0,maxPreviewBytes:mt,console:!0};let t=e.maxPreviewBytes??mt;if(P(`streamDiagnostics.maxPreviewBytes`,t,{min:1,max:ht}),e.console!==void 0&&typeof e.console!=`boolean`)throw Error(`MTE relay configuration field streamDiagnostics.console must be a boolean. Received: ${String(e.console)}.`);return{enabled:!0,maxPreviewBytes:t,console:e.console??e.onEvent===void 0,onEvent:e.onEvent}}function St(e){let t=e.minPairs??it;P(`minPairs`,t,{min:1});let n=e.maxPairs??ot;P(`maxPairs`,n,{min:t});let r=e.initialPairs??at;P(`initialPairs`,r,{min:1,max:n});let i=e.defaultEncodeType??st;yt(i);let a=e.sequenceWindow!==void 0,o=e.sequenceWindow??ct;P(`sequenceWindow`,o,{min:-63,max:gt});let s=e.timeWindow??lt;P(`timeWindow`,s,{min:0});let c=e.httpTimeoutMs??ut;P(`httpTimeoutMs`,c,{min:1});let l=e.keepAliveIntervalMs!==void 0,u=e.keepAliveIntervalMs??dt;P(`keepAliveIntervalMs`,u,{min:ft,max:pt});let d=xt(e.streamDiagnostics),f=e.onPoolEvent??null,p=nt(e.unencryptedHeaders,`unencryptedHeaders`),m=e.credentials??_t;bt(m);let h=e.warnings??vt;if(typeof h!=`boolean`)throw Error(`MTE relay configuration field warnings must be a boolean. Received: ${String(h)}.`);return{minPairs:t,initialPairs:r,maxPairs:n,defaultEncodeType:i,sequenceWindow:o,timeWindow:s,httpTimeoutMs:c,keepAliveIntervalMs:u,streamDiagnostics:d,onPoolEvent:f,unencryptedHeaders:p,credentials:m,warnings:h,hasExplicitSequenceWindow:a,hasExplicitKeepAliveInterval:l}}function Ct(e){return e.toString(16).padStart(2,`0`)}function wt(e){switch(e){case 9:return`\\t`;case 10:return`\\n`;case 13:return`\\r`;case 34:return`\\"`;case 92:return`\\\\`;default:return e>=32&&e<=126?String.fromCharCode(e):`\\x${Ct(e)}`}}function Tt(e,t){let n=e.byteLength>t,r=n?e.subarray(0,t):e;return{byteLength:e.byteLength,hexPreview:Array.from(r,Ct).join(` `),escapedPreview:Array.from(r,wt).join(``)+(n?`...`:``),truncated:n}}function Et(e,t=4){return e.length<=t*2?`*** (len=${e.length})`:`${e.slice(0,t)}...${e.slice(-t)} (len=${e.length})`}function Dt(e){return e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:{value:String(e)}}function F(e){return{companyName:e.companyName,licenseKey:Et(e.licenseKey)}}function Ot(e){return{kyberStrength:e.kyberStrength}}function I(e,t,n,r=`error`){let i={...t,timestamp:new Date().toISOString()};n!==void 0&&(i.error=Dt(n)),(r===`info`?console.log:console.error)(`[mte-relay] ${e}`,i)}function kt(e,t){if(!e?.enabled)return;let n={...t,...Tt(t.bytes??new Uint8Array,e.maxPreviewBytes)};e.onEvent?.(n),e.console&&I(`stream ${n.channel} ${n.stage}`,{relayOrigin:n.relayOrigin,encodeType:n.encodeType,pairId:n.pairId,contentType:n.contentType,chunkIndex:n.chunkIndex,source:n.source,byteLength:n.byteLength,truncated:n.truncated,hexPreview:n.hexPreview,escapedPreview:n.escapedPreview,details:n.details},void 0,`info`)}var L=4294967295,At=new Uint8Array,jt=32,Mt=class{maxFrameBytes;transport;chunks;head;offset;available;want;terminated;ended;failure;scratch;constructor(e={}){let t=e.maxFrameBytes??0;this.maxFrameBytes=t>0?Math.min(t,L):L,this.transport=e.transport??`http`,this.chunks=[],this.head=0,this.offset=0,this.available=0,this.want=null,this.terminated=!1,this.ended=!1,this.failure=null,this.scratch=new Uint8Array(12)}get buffered(){return this.available}get done(){return this.terminated}push(e){if(this.failure)throw this.failure;if(this.ended)throw Error(`FrameReader: push after end`);if(e.length!==0){if(this.terminated)throw this.fail(new l(`trailing_after_end`,`${e.length} bytes after the frame that ended the stream`));this.chunks.push(e),this.available+=e.length}}next(){if(this.failure)throw this.failure;if(this.terminated){if(this.available>0)throw this.fail(new l(`trailing_after_end`,`${this.available} bytes after the frame that ended the stream`));return null}if(this.want===null){if(this.available<12)return null;let e;try{e=d(this.peekHeader())}catch(e){throw this.fail(e)}if(e.length>this.maxFrameBytes)throw this.fail(new l(`too_large`,`frame length ${e.length} is over the ${this.maxFrameBytes} byte bound`,{seen:e.length,max:this.maxFrameBytes}));try{m(e,this.transport)}catch(e){throw this.fail(e)}this.skip(12),this.want=e}let e=this.want;if(this.available<e.length)return null;let t=this.take(e.length);return this.want=null,((e.flags&c.END)!==0||e.kind===a.ERROR)&&(this.terminated=!0),{header:e,payload:t}}end(){if(this.failure)throw this.failure;if(!this.ended){if(this.ended=!0,this.terminated){if(this.available>0)throw this.fail(new l(`trailing_after_end`,`${this.available} bytes after the frame that ended the stream`));return}if(this.want!==null||this.available>0){let e=this.want===null?12-this.available:this.want.length-this.available;throw this.fail(new l(`truncated`,`stream ended inside a frame, ${e} bytes short`))}throw this.fail(new l(`eof_before_end`,`stream ended before a frame carrying END`))}}fail(e){return this.failure=e,e}peekHeader(){let e=this.chunks[this.head];if(e.length-this.offset>=12)return e.subarray(this.offset,this.offset+12);let t=0,n=this.head,r=this.offset;for(;t<12;){let e=this.chunks[n],i=Math.min(12-t,e.length-r);this.scratch.set(e.subarray(r,r+i),t),t+=i,n+=1,r=0}return this.scratch}take(e){if(e===0)return At;let t=this.chunks[this.head];if(t.length-this.offset>=e){let n=t.subarray(this.offset,this.offset+e);return this.skip(e),n}let n=new Uint8Array(e),r=0;for(;r<e;){let t=this.chunks[this.head],i=Math.min(e-r,t.length-this.offset);n.set(t.subarray(this.offset,this.offset+i),r),r+=i,this.skip(i)}return n}skip(e){this.available-=e;let t=e;for(;t>0;){let e=this.chunks[this.head].length-this.offset;if(e>t){this.offset+=t;return}t-=e,this.chunks[this.head]=At,this.head+=1,this.offset=0}this.head===this.chunks.length?(this.chunks.length=0,this.head=0):this.head>jt&&(this.chunks=this.chunks.slice(this.head),this.head=0)}};function Nt(e,t){let n=t>0?Math.min(t,L):L,r=d(e);if(r.length>n)throw new l(`too_large`,`frame length ${r.length} is over the ${n} byte bound`,{seen:r.length,max:n});if(e.length!==12+r.length)throw new l(`message_length`,`message is ${e.length} bytes, expected ${12+r.length}`,{seen:e.length});return m(r,`ws`),{header:r,payload:e.subarray(12)}}var Pt=`X-MTE-Relay-Error`,R=`X-MTE-Relay-Request-Id`,Ft=`X-MTE-Relay-Route`,It=`application/octet-stream`;function Lt(e){return se(e)}var z=class extends Error{name=`MteRelayError`;requestId;code;reason;relayMessage;relayCause;retryAfterMs;action;pairId;repaired;pairReplaced;constructor(e,t,n={}){let r=n.message??``;super(`MTE relay error ${e} ${t}${r?`: ${r}`:``}`,n.cause===void 0?void 0:{cause:n.cause}),this.code=e,this.requestId=n.requestId??null,this.reason=t,this.relayMessage=r,this.relayCause=n.cause,this.retryAfterMs=n.retryAfterMs??0,this.action=pe(e,t),this.pairId=n.pairId??null,this.repaired=n.repaired??!1,this.pairReplaced=n.pairReplaced??!1}get statusCode(){return this.code}get responseText(){return this.relayMessage}},B=class extends Error{name=`MteRelayTransportError`;requestId;status;detail;pairReplaced;repaired;constructor(e,t={}){super(`MTE relay transport error (HTTP ${t.status??0}): ${e}`,t.cause===void 0?void 0:{cause:t.cause}),this.status=t.status??0,this.requestId=t.requestId??null,this.detail=e,this.pairReplaced=t.pairReplaced??!1,this.repaired=t.repaired??!1}get statusCode(){return this.status}},V=class extends Error{name=`MteRelaySetupError`;constructor(e,t){super(e,t)}},H=class extends Error{type=`request-too-large`;size;limit;constructor(e,t){super(`MTE relay request body is ${e} bytes; the relay accepts at most ${t} bytes. Nothing was sent.`),this.name=`MteRelayRequestTooLargeError`,this.size=e,this.limit=t}},Rt=class extends Error{type=`capacity-exhausted`;maxPairs;constructor(e){super(`MTE relay pair pool exhausted (maxPairs=${e}). No encoder or decoder is available.`),this.name=`MteRelayCapacityError`,this.maxPairs=e}};function zt(e){let t=e.get(`Retry-After`);if(t===null)return 0;let n=Number.parseInt(t.trim(),10);return Number.isFinite(n)&&n>0?n*1e3:0}function Bt(e,t,n){if(!se(e))return null;let r=zt(t),i=t.get(R);if(n!==null&&n.length>=12)try{let t=Nt(n,0);if(t.header.kind===a.ERROR){let n=be(t.payload);if(n.code===e)return new z(e,n.reason,{message:n.message,cause:n.cause,retryAfterMs:r,requestId:i})}}catch{}let o=t.get(Pt);if(o!==null){let t=/^\s*(\d{3})\s+([a-z][a-z0-9_]*)\s*$/.exec(o);if(t!==null&&Number.parseInt(t[1],10)===e&&ue(t[2]))return new z(e,t[2],{message:`body stripped; reason from header`,retryAfterMs:r,requestId:i})}return null}function Vt(e){return ce(e)?`HTTP ${e} is a generation 5 relay error (${le(e)}). This client speaks frame version 2 and needs a generation 6 relay.`:null}var Ht=500,Ut=5e3;function Wt(e=0){let t=e>0?e:Ht;t>Ut&&(t=Ut);let n=new Uint8Array(1);return crypto.getRandomValues(n),t+Math.floor(t*n[0]/512)}function U(e){return new Promise(t=>{setTimeout(t,e)})}var Gt={HTTP:`http`,KEEPALIVE:`keepalive`,PLAIN_HEADERS:`plain-headers`,BROWSER_COOKIES:`browser-cookies`,PASS_THROUGH:`pass-through`,RELAY_ERROR_HEADER:`relay-error-header`,OWNER_MODE:`owner-mode`,WS:`ws`};function Kt(e,t){return e.features?.includes(t)??!1}function qt(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function W(e){let t=qt(e);return t!==void 0&&Number.isInteger(t)&&t>=0?t:void 0}function Jt(e){return typeof e==`boolean`?e:void 0}function G(e){return typeof e==`string`?e:void 0}function K(e){if(Array.isArray(e))return e.filter(e=>typeof e==`string`)}function Yt(e){if(Array.isArray(e))return e.filter(e=>typeof e==`number`&&Number.isInteger(e))}function Xt(e){if(typeof e!=`object`||!e)return{};let t=e,n={},r=(e,t)=>{t!==void 0&&(n[e]=t)};r(`discoverySchema`,W(t.discoverySchema)),r(`buildVersion`,G(t.buildVersion)),r(`frameVersions`,Yt(t.frameVersions)),r(`deprecatedFrameVersions`,Yt(t.deprecatedFrameVersions)),r(`features`,K(t.features)),r(`mteProfile`,G(t.mteProfile));let i=qt(t.kyberStrength);(i===512||i===768||i===1024)&&(n.kyberStrength=i);let a=qt(t.sequenceWindow);a!==void 0&&Number.isInteger(a)&&(n.sequenceWindow=a);let o=W(t.timeWindow);o!==void 0&&o>0&&(n.timeWindow=o),r(`maxFrameBytes`,W(t.maxFrameBytes)),r(`maxMessageBytes`,W(t.maxMessageBytes));let s=t.maxMetadataBytes;if(typeof s==`object`&&s){let e=s,t=W(e.MKE),r=W(e.MTE);(t!==void 0||r!==void 0)&&(n.maxMetadataBytes={MKE:t,MTE:r})}return r(`maxPairsPerBatch`,W(t.maxPairsPerBatch)),r(`maxPairsPerClient`,W(t.maxPairsPerClient)),r(`maxPairBytes`,W(t.maxPairBytes)),r(`maxPairSeconds`,W(t.maxPairSeconds)),r(`sessionTimeoutSeconds`,W(t.sessionTimeoutSeconds)),r(`tokenMaxAgeSeconds`,W(t.tokenMaxAgeSeconds)),r(`ownerSeconds`,W(t.ownerSeconds)),r(`maxRequestBodyBytes`,W(t.maxRequestBodyBytes)),r(`transports`,K(t.transports)),r(`stateMode`,G(t.stateMode)),r(`routeHeader`,G(t.routeHeader)),r(`passThroughRoutes`,K(t.passThroughRoutes)),r(`forwardPlainHeaders`,K(t.forwardPlainHeaders)),r(`forwardBrowserCookies`,Jt(t.forwardBrowserCookies)),n}function Zt(e){let t=new Map;for(let n of e.split(`;`)){let e=n.indexOf(`=`);if(e===-1){t.set(`mte`,n);continue}t.set(n.slice(0,e),n.slice(e+1))}return t}var Qt=[`mte`,`tok`,`drbg`,`cipher`,`hash`,`verifiers`,`kyber`];function $t(e,t){let n=Zt(e),r=Zt(t),i=[];for(let e of Qt){let t=n.get(e),a=r.get(e);t===void 0||a===void 0||t!==a&&i.push(e)}let a=n.get(`probe`)??``,o=r.get(`probe`)??``;return{mismatched:i,probeDiffers:a!==o,serverProbe:a,clientProbe:o}}function en(e,t,n){let r=[],i=e.frameVersions??[];if(!i.includes(2))throw new V(`The relay does not speak frame version 2. It advertises [${i.join(`, `)}]; this client speaks [2]. Upgrade the relay to generation 6 (mte-relay 6.0 or later).`);if(e.deprecatedFrameVersions?.includes(2)&&r.push({key:`frame-version-deprecated`,message:`The relay lists frame version 2 as deprecated. Plan an engine upgrade.`}),e.mteProfile!==void 0&&e.mteProfile!==``){let n=$t(e.mteProfile,t);if(n.mismatched.length>0)throw new V(`mteProfile mismatch on ${n.mismatched.join(`, `)}. The relay reports "${e.mteProfile}" and this client is "${t}"; the two MTE library builds cannot interoperate.`);n.probeDiffers&&r.push({key:`mte-profile-probe`,message:`The relay's mteProfile probe is ${n.serverProbe} and this client's is ${n.clientProbe}. Every settings field agrees, so pairing proceeds: a browser links the MTE client build and a relay serving browsers links the server build, and those two produce different probe bytes by design.`})}if(e.kyberStrength!==void 0&&e.kyberStrength!==n)throw new V(`kyberStrength mismatch: the relay reports ${e.kyberStrength} and this client uses ${n}.`);if(e.sequenceWindow!==void 0){let t=e.sequenceWindow;if(t<-63||t>65535)throw new V(`The relay's sequenceWindow ${t} is outside the range the MTE library accepts (-63 to ${gt}).`)}return{warnings:r}}function tn(e){return{sequenceWindow:e.sequenceWindow,timeWindow:e.timeWindow,maxFrameBytes:1048576,maxMetadataBytes:{...Ee},maxPairsPerBatch:100,maxPairsPerClient:200,sessionTimeoutSeconds:7200,tokenMaxAgeSeconds:86400,maxRequestBodyBytes:0,ownerSeconds:0}}function nn(e,t){let n=tn(e);return t.sequenceWindow!==void 0&&(n.sequenceWindow=t.sequenceWindow),t.timeWindow!==void 0&&t.timeWindow>0&&(n.timeWindow=t.timeWindow),t.maxFrameBytes!==void 0&&t.maxFrameBytes>=4096&&(n.maxFrameBytes=t.maxFrameBytes),t.maxMetadataBytes?.MKE&&(n.maxMetadataBytes.MKE=t.maxMetadataBytes.MKE),t.maxMetadataBytes?.MTE&&(n.maxMetadataBytes.MTE=t.maxMetadataBytes.MTE),t.maxPairsPerBatch&&(n.maxPairsPerBatch=t.maxPairsPerBatch),t.maxPairsPerClient&&(n.maxPairsPerClient=t.maxPairsPerClient),t.sessionTimeoutSeconds&&(n.sessionTimeoutSeconds=t.sessionTimeoutSeconds),t.tokenMaxAgeSeconds&&(n.tokenMaxAgeSeconds=t.tokenMaxAgeSeconds),t.maxRequestBodyBytes!==void 0&&(n.maxRequestBodyBytes=t.maxRequestBodyBytes),t.ownerSeconds&&(n.ownerSeconds=t.ownerSeconds),n}function rn(e,t){let n=[];return t.sequenceWindow!==void 0&&t.sequenceWindow!==e.sequenceWindow&&n.push(`sequenceWindow`),t.timeWindow!==void 0&&t.timeWindow>0&&t.timeWindow!==e.timeWindow&&n.push(`timeWindow`),t.maxFrameBytes!==void 0&&t.maxFrameBytes>=4096&&t.maxFrameBytes!==e.maxFrameBytes&&n.push(`maxFrameBytes`),t.maxMetadataBytes?.MKE&&t.maxMetadataBytes.MKE!==e.maxMetadataBytes.MKE&&n.push(`maxMetadataBytes.MKE`),t.maxMetadataBytes?.MTE&&t.maxMetadataBytes.MTE!==e.maxMetadataBytes.MTE&&n.push(`maxMetadataBytes.MTE`),n}function an(e,t,n){return Math.min(Math.max(e,t),n)}function on(e,t){let n=[],r=e.maxPairs;t.maxPairsPerClient>0&&r>t.maxPairsPerClient&&(n.push({key:`max-pairs-clamped`,message:`maxPairs ${r} is above the relay's maxPairsPerClient ${t.maxPairsPerClient}; the pool is clamped to ${t.maxPairsPerClient}.`}),r=t.maxPairsPerClient);let i=Math.min(e.minPairs,r),a=an(e.initialPairs,1,r),o=e.keepAliveIntervalMs;!e.hasExplicitKeepAliveInterval&&t.sessionTimeoutSeconds>0&&(o=an(Math.floor(t.sessionTimeoutSeconds*1e3/3),ft,pt));let s=e.sequenceWindow;return e.hasExplicitSequenceWindow&&t.sequenceWindow!==s&&n.push({key:`sequence-window-adopted`,message:`The relay's sequenceWindow is ${t.sequenceWindow} and the configured value is ${s}. Both sides must agree, so the relay's value is used.`}),s=t.sequenceWindow,{tuning:{minPairs:i,initialPairs:a,maxPairs:r,sequenceWindow:s,keepAliveIntervalMs:o},warnings:n}}function sn(e,t){if(t===void 0||t.length===0)return!1;for(let n of t)if(n!==``){if(n.endsWith(`*`)){if(e.startsWith(n.slice(0,-1)))return!0;continue}if(e===n)return!0}return!1}function cn(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function ln(e){if(e===void 0)return null;let t=new Set,n=[];for(let r of e){let e=r.trim().toLowerCase();if(e!==``){if(e===`*`)return()=>!0;if(e.includes(`*`)){n.push(RegExp(`^${e.split(`*`).map(cn).join(`.*`)}$`));continue}t.add(e)}}return e=>{let r=e.toLowerCase();return t.has(r)?!0:n.some(e=>e.test(r))}}function un(e){if(e===null)return{all:!1,names:new Set};let t=new Set;for(let n of e.split(`,`)){let e=n.trim().toLowerCase();if(e===`*`)return{all:!0,names:new Set};e!==``&&t.add(e)}return{all:!1,names:t}}var dn=n.MteKyberStrength.K1024,fn=new Map,q=null;function pn(e){if(!e.companyName.trim())throw Error(`MTE bootstrap requires companyName.`);if(!e.licenseKey.trim())throw Error(`MTE bootstrap requires licenseKey.`)}function mn(e){return JSON.stringify({companyName:e.companyName,licenseKey:e.licenseKey,kyberStrength:dn})}function hn(e){pn(e);let t=mn(e);if(q!==null&&q!==t)throw Error(`MTE bootstrap options conflict with existing initialized context. Use one consistent bootstrap configuration per runtime instance.`);let r=fn.get(t);if(r)return r;let i=(async()=>{let t=new n.MteWasm;try{await t.instantiate()}catch(t){throw I(`WASM instantiate failed`,{bootstrap:F(e)},t),t}let r=new n.MteBase(t),i;try{i=r.initLicense(e.companyName,e.licenseKey)}catch(t){throw I(`MTE license initialization threw`,{bootstrap:F(e)},t),t}finally{r.destructBase()}if(!i)throw I(`MTE license initialization returned false`,{bootstrap:F(e)}),Error(`MTE license initialization failed. Verify companyName and licenseKey values.`);let a={wasm:t,kyberStrength:dn};return I(`MTE bootstrap initialized`,{bootstrap:F(e),context:Ot(a)},void 0,`info`),a})().catch(e=>{throw fn.delete(t),q=null,e});return q=t,fn.set(t,i),i}var gn=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,_n=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,vn=61,J=class extends Error{constructor(e){super(e),this.name=`Base64Error`}};function yn(e){let t=new Int8Array(128).fill(-1);for(let n=0;n<e.length;n+=1)t[e.charCodeAt(n)]=n;return t}var bn=yn(gn),xn=yn(_n);function Sn(e,t,n){let r=e.length-e.length%3,i=``;for(let n=0;n<r;n+=3){let r=e[n]<<16|e[n+1]<<8|e[n+2];i+=t[r>>>18&63]+t[r>>>12&63]+t[r>>>6&63]+t[r&63]}let a=e.length-r;if(a===1){let a=e[r]<<16;i+=t[a>>>18&63]+t[a>>>12&63],n&&(i+=`==`)}else if(a===2){let a=e[r]<<16|e[r+1]<<8;i+=t[a>>>18&63]+t[a>>>12&63]+t[a>>>6&63],n&&(i+=`=`)}return i}function Y(e,t,n,r){let i=e.charCodeAt(t),a=i<128?n[i]:-1;if(a<0)throw new J(`${r}: character ${JSON.stringify(e[t])} at offset ${t} is not in the alphabet`);return a}function Cn(e,t,n){let r=e.length;if(r>0&&e.charCodeAt(r-1)===vn&&(--r,r>0&&e.charCodeAt(r-1)===vn&&--r,e.length%4!=0))throw new J(`${n}: padded text is ${e.length} characters, which is not a multiple of 4`);let i=r%4;if(i===1)throw new J(`${n}: ${r} characters cannot end a base64 group`);let a=new Uint8Array((r-i)/4*3+(i===0?0:i-1)),o=0,s=0;for(;s+4<=r;s+=4){let r=Y(e,s,t,n),i=Y(e,s+1,t,n),c=Y(e,s+2,t,n),l=Y(e,s+3,t,n);a[o]=r<<2|i>>>4,a[o+1]=(i&15)<<4|c>>>2,a[o+2]=(c&3)<<6|l,o+=3}if(i===2){let r=Y(e,s,t,n),i=Y(e,s+1,t,n);if(i&15)throw new J(`${n}: unused bits at offset ${s+1} are not zero`);a[o]=r<<2|i>>>4}else if(i===3){let r=Y(e,s,t,n),i=Y(e,s+1,t,n),c=Y(e,s+2,t,n);if(c&3)throw new J(`${n}: unused bits at offset ${s+2} are not zero`);a[o]=r<<2|i>>>4,a[o+1]=(i&15)<<4|c>>>2}return a}function wn(e){return Sn(e,_n,!1)}function Tn(e){return Cn(e,xn,`base64url`)}function En(e){return Sn(e,gn,!0)}function Dn(e){return Cn(e,bn,`base64`)}BigInt(2**53-1);var On=`0123456789abcdef`,kn=class extends Error{constructor(e){super(e),this.name=`TokenError`}};function An(e){if(e.length!==40)throw new kn(`client token is ${e.length} bytes, expected 40`)}function jn(e){let t;try{t=Tn(e)}catch(e){throw e instanceof J?new kn(`client token is not base64url: ${e.message}`):e}return An(t),t}function Mn(e){An(e);let t=``;for(let n=0;n<16;n+=1)t+=On[e[n]>>>4]+On[e[n]&15];return t}function Nn(e,t,n){let r=new AbortController,i=setTimeout(()=>{r.abort(Error(t))},e),a=()=>{clearTimeout(i)};return n?typeof AbortSignal.any==`function`?{signal:AbortSignal.any([r.signal,n]),clear:a}:(n.aborted?r.abort(n.reason):n.addEventListener(`abort`,()=>{r.abort(n.reason)},{once:!0}),{signal:r.signal,clear:a}):{signal:r.signal,clear:a}}var Pn=65536;function Fn(e){let t=new Headers;return e&&t.set(Ft,e),t}async function In(e,t){let n=await e.arrayBuffer(),r=new Uint8Array(n);return r.length>t?r.subarray(0,t):r}async function Ln(e,t){let n=null;try{n=await In(e,Pn)}catch{n=null}let r=Bt(e.status,e.headers,n);return r===null?new B(Vt(e.status)??`${t} answered ${e.status} with a body that is not an ERROR frame`,{status:e.status,requestId:e.headers.get(R)}):r}async function Rn(e){let t=new URL(e.path,e.relayOrigin);for(let[n,r]of Object.entries(e.query??{}))t.searchParams.set(n,r);let n=Nn(e.timeoutMs,`${e.path} timed out.`,e.signal),r=await fetch(t.toString(),{method:`GET`,headers:Fn(e.clientIdHex),credentials:e.credentials,signal:n.signal}).finally(()=>{n.clear()});if(!r.ok)throw await Ln(r,e.path);return{status:r.status,headers:r.headers,body:await r.json()}}async function zn(e){let t=new URL(e.path,e.relayOrigin),n=Fn(e.clientIdHex);n.set(`Content-Type`,`application/json`);let r=Nn(e.timeoutMs,`${e.path} timed out.`,e.signal),i=await fetch(t.toString(),{method:`POST`,headers:n,credentials:e.credentials,body:JSON.stringify(e.payload),signal:r.signal}).finally(()=>{r.clear()});if(!i.ok)throw await Ln(i,e.path);let a=await i.text();return{status:i.status,headers:i.headers,body:a.length>0?JSON.parse(a):null}}function Bn(e){let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}async function Vn(e){let t=new URL(`/`,e.relayOrigin).toString(),n=new Headers(e.plainHeaders??{});n.set(`Content-Type`,It),n.set(Ft,e.clientIdHex);let r=Nn(e.timeoutMs,`Relay request timed out.`,e.signal);return fetch(t,{method:`POST`,headers:n,credentials:e.credentials,body:e.frames instanceof Uint8Array?Bn(e.frames):e.frames,signal:r.signal}).finally(()=>{r.clear()})}var Hn=class{reader;frames;closed=!1;constructor(e,t){this.reader=e.getReader(),this.frames=new Mt({maxFrameBytes:t,transport:`http`})}get done(){return this.frames.done}async next(){for(;;){let e=this.frames.next();if(e!==null)return e;if(this.frames.done)return null;let{value:t,done:n}=await this.reader.read();if(n)return this.closed=!0,this.frames.end(),null;t!==void 0&&t.length>0&&this.frames.push(t)}}async cancel(e){if(!this.closed){this.closed=!0;try{await this.reader.cancel(e)}catch{}}}};async function Un(e){try{return await In(e,Pn)}catch{return null}}async function Wn(e){let t={frameVersions:`2`},n=e.existingClientId?.trim();n&&(t.clientId=n);let r=(await Rn({relayOrigin:e.relayOrigin,path:`/api/mte-relay`,timeoutMs:e.timeoutMs,credentials:e.credentials,clientIdHex:e.clientIdHex,signal:e.signal,query:t})).body??{};if(typeof r.clientId!=`string`||r.clientId.length===0)throw new V(`The relay's auth response is missing a clientId token.`);let i;try{i=jn(r.clientId)}catch(e){throw new V(`The relay's auth response carries a token this client cannot read: ${e instanceof Error?e.message:String(e)}`,{cause:e})}return{clientId:r.clientId,token:i,clientIdHex:Mn(i),relay:Xt(r.relay)}}function Gn(e){return typeof e==`number`&&Number.isFinite(e)?e:null}async function Kn(e){let t={clientId:e.clientId};e.drop.length>0&&(t.drop=e.drop);try{let n=await zn({relayOrigin:e.relayOrigin,path:`/api/mte-keepalive`,timeoutMs:e.timeoutMs,credentials:e.credentials,clientIdHex:e.clientIdHex,signal:e.signal,payload:t});return{result:`ok`,statusCode:n.status,reason:null,touched:Gn(n.body?.touched),dropped:Gn(n.body?.dropped),droppedIds:e.drop,detail:null}}catch(e){return e instanceof z?{result:e.code===475?`invalid-client`:`transient-failure`,statusCode:e.code,reason:e.reason,touched:null,dropped:null,droppedIds:[],detail:e.relayMessage}:{result:`transient-failure`,statusCode:null,reason:null,touched:null,dropped:null,droppedIds:[],detail:e instanceof Error?e.message:String(e)}}}var qn=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Jn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);function X(e,t){return e>>>t|e<<32-t}function Yn(e){let t=e.length*8,n=new Uint8Array((e.length+8>>6)*64+64);n.set(e),n[e.length]=128;let r=new DataView(n.buffer);r.setUint32(n.length-8,Math.floor(t/4294967296),!1),r.setUint32(n.length-4,t>>>0,!1);let i=Jn.slice(),a=new Uint32Array(64),o=new DataView(n.buffer);for(let e=0;e<n.length;e+=64){for(let t=0;t<16;t+=1)a[t]=o.getUint32(e+t*4,!1);for(let e=16;e<64;e+=1){let t=X(a[e-15],7)^X(a[e-15],18)^a[e-15]>>>3,n=X(a[e-2],17)^X(a[e-2],19)^a[e-2]>>>10;a[e]=a[e-16]+t+a[e-7]+n>>>0}let[t,n,r,s,c,l,u,d]=i;for(let e=0;e<64;e+=1){let i=X(c,6)^X(c,11)^X(c,25),o=c&l^~c&u,f=d+i+o+qn[e]+a[e]>>>0,p=(X(t,2)^X(t,13)^X(t,22))+(t&n^t&r^n&r)>>>0;d=u,u=l,l=c,c=s+f>>>0,s=r,r=n,n=t,t=f+p>>>0}i[0]=i[0]+t>>>0,i[1]=i[1]+n>>>0,i[2]=i[2]+r>>>0,i[3]=i[3]+s>>>0,i[4]=i[4]+c>>>0,i[5]=i[5]+l>>>0,i[6]=i[6]+u>>>0,i[7]=i[7]+d>>>0}let s=new Uint8Array(32),c=new DataView(s.buffer);for(let e=0;e<8;e+=1)c.setUint32(e*4,i[e],!1);return s}function Xn(e){return Array.from(Yn(e),e=>e.toString(16).padStart(2,`0`)).join(``)}function Zn(e,t=8){return Xn(e).slice(0,t*2)}var Qn=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]),$n=`1`,er=`mte-relay/2/probe`,tr=new TextEncoder().encode(`mte-relay/2/probe`),nr=2,rr=`error`,ir=new WeakMap;function ar(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function or(e){let t=null;try{if(t=n.MteMkeEnc.fromdefault(e),t.setEntropyArr(Qn.slice()),t.setNonce($n),t.instantiate(er)!==n.MteStatus.mte_status_success)return rr;let r=[];for(let e=0;e<nr;e+=1){let e=t.encode(tr);if(e.status!==n.MteStatus.mte_status_success||e.arr===null)return rr;r.push(e.arr)}return Zn(ar(r))}catch{return rr}finally{if(t!==null){try{t.uninstantiate()}catch{}t.destruct()}}}function sr(e,t){let r=ir.get(e);r===void 0&&(r=new Map,ir.set(e,r));let i=r.get(t);if(i!==void 0)return i;let a=new n.MteBase(e),o;try{o=[`mte/${a.getVersion()}`,`tok=${a.getDefaultTokBytes()}`,`drbg=${a.getDrbgsName(a.getDefaultDrbg())}`,`cipher=${a.getCiphersName(a.getDefaultCipher())}`,`hash=${a.getHashesName(a.getDefaultHash())}`,`verifiers=${a.getVerifiersName(a.getDefaultVerifiers())}`,`kyber=${t}`,`probe=${or(e)}`].join(`;`)}finally{a.destructBase()}return r.set(t,o),o}var cr=1024;function lr(e){return`mte-relay/2/${e}/`}var ur=16;function dr(e,t){let n=new Uint8Array(ur);crypto.getRandomValues(n);let r=fr(n),i=lr(e);return pr(t?`${i}${r}/${t}`:`${i}${r}`,cr)}function fr(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function pr(e,t){if(M(e)<=t)return e;let n=0,r=``;for(let i of e){let e=M(i);if(n+e>t)break;n+=e,r+=i}return r}var mr=`http`;lr(mr);var hr=`0123456789abcdef`;function gr(e){let t=``;for(let n of e)t+=hr[n>>>4]+hr[n&15];return t}function _r(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function vr(e){return dr(mr,e)}function yr(e){return e===0?`success`:`status=${e}`}function br(e,t){if(e!==n.MteStatus.mte_status_success)throw Error(`${t} failed with ${yr(e)}.`)}function Z(e,t){if(e!==n.MteKyberStatus.success)throw Error(`${t} failed with ${yr(e)}.`)}function xr(e){if(!/^\d+$/.test(e))throw Error(`Nonce must be an unsigned integer string. Received: ${e}.`);if(BigInt(e)>9223372036854775807n)throw Error(`Nonce exceeds the spec's signed 64 bit range (${e.length} digits); the server must clear the MSB at generation.`);return e}function Sr(e,t){return t===`MKE`?n.MteMkeEnc.fromdefault(e.wasm):n.MteEnc.fromdefault(e.wasm)}function Cr(e,t,r,i){return t===`MKE`?n.MteMkeDec.fromdefault(e.wasm,i,r):n.MteDec.fromdefault(e.wasm,0,r)}function wr(e,t,r,i){let a=[],o=new Map;for(let s=0;s<i;s+=1){let i=_r(16),c=wn(i),l=gr(i),u=vr(t),d=vr(t),f=new n.MteKyber(e.wasm,e.kyberStrength),p=new n.MteKyber(e.wasm,e.kyberStrength),m=f.createKeypair(),h=p.createKeypair();if(Z(m.status,`Kyber encoder keypair ${s}`),Z(h.status,`Kyber decoder keypair ${s}`),m.result1===null||h.result1===null)throw Error(`Kyber keypair results missing for pair ${s}.`);a.push({pairId:c,encoderPublicKey:En(m.result1),encoderPersonalizationStr:u,decoderPublicKey:En(h.result1),decoderPersonalizationStr:d,mteProfile:r,kyberStrength:e.kyberStrength,frameVersion:2}),o.set(c,{raw:i,pairIdB64:c,pairIdHex:l,encoderPersonalizationStr:u,decoderPersonalizationStr:d,encoderKyber:f,decoderKyber:p})}return{items:a,seeds:o}}function Tr(e){for(let t of e.values())t.encoderKyber.destruct(),t.decoderKyber.destruct()}function Er(e,t){if(typeof e!=`object`||!e)throw Error(`Pairing response item at index ${t} must be an object.`);let n=e;for(let e of[`pairId`,`encoderNonce`,`encoderSecret`,`decoderNonce`,`decoderSecret`])if(typeof n[e]!=`string`||n[e]===``)throw Error(`Pairing response item at index ${t} has invalid ${e}.`);return{pairId:n.pairId,encoderNonce:n.encoderNonce,encoderSecret:n.encoderSecret,decoderNonce:n.decoderNonce,decoderSecret:n.decoderSecret}}async function Dr(e,t){let n=e.clientId;for(let r=0;;r+=1){let i={clientId:n,pairs:t};try{let t=await zn({relayOrigin:e.relayOrigin,path:`/api/mte-pair`,timeoutMs:e.config.httpTimeoutMs,credentials:e.config.credentials,clientIdHex:e.clientIdHex,signal:e.signal,payload:i});if(!Array.isArray(t.body))throw Error(`Pairing response must be an array.`);return t.body.map(Er)}catch(t){if(!(t instanceof z)||r>=2)throw t;if(t.code===w.INVALID_REQUEST&&t.reason===T.PROFILE_MISMATCH)throw new V(`The relay refused this client's mteProfile: ${t.relayMessage||`profile_mismatch`}. The MTE library builds differ on a settings field.`,{cause:t});if(t.code===w.FRAME_VERSION_UNSUPPORTED||t.code===w.INVALID_REQUEST&&(t.reason===T.PAIR_EXISTS||t.reason===T.INVALID_REQUEST))throw t;if(t.code===w.LIMIT){await e.backOff?.(t.retryAfterMs);continue}if(t.code===w.INVALID_CLIENT_ID&&t.reason===T.INVALID_TOKEN&&e.refreshToken!==void 0){n=await e.refreshToken();continue}if(t.code===w.INVALID_REQUEST&&t.reason===T.PAIR_LIMIT&&r===0&&e.flushDropList!==void 0){await e.flushDropList();continue}throw t}}}async function Or(e){let t=new URL(e.relayOrigin).host,{items:r,seeds:i}=wr(e.bootstrap,t,e.profile,e.count);try{let t=await Dr(e,r);if(t.length!==r.length)throw Error(`Pairing response count mismatch. Expected ${r.length}, got ${t.length}.`);let a=[],o=new Set;for(let r of t){if(o.has(r.pairId))throw Error(`Pairing response contains duplicate pairId ${r.pairId}.`);o.add(r.pairId);let t=i.get(r.pairId);if(t===void 0)throw Error(`Pairing response contains unknown pairId ${r.pairId}.`);let s=t.encoderKyber.decryptSecret(Dn(r.decoderSecret)),c=t.decoderKyber.decryptSecret(Dn(r.encoderSecret));if(Z(s.status,`Decrypt decoderSecret for pair ${t.pairIdHex}`),Z(c.status,`Decrypt encoderSecret for pair ${t.pairIdHex}`),s.result1===null||c.result1===null)throw Error(`Pair ${t.pairIdHex} decryption returned empty entropy.`);let l=xr(r.decoderNonce),u=xr(r.encoderNonce),d=Sr(e.bootstrap,e.encodeType),f=Cr(e.bootstrap,e.encodeType,e.sequenceWindow,e.timeWindow);try{d.setEntropyArr(s.result1),d.setNonce(l),br(d.instantiate(t.encoderPersonalizationStr),`Instantiate ${e.encodeType} encoder for pair ${t.pairIdHex}`),f.setEntropyArr(c.result1),f.setNonce(u),br(f.instantiate(t.decoderPersonalizationStr),`Instantiate ${e.encodeType} decoder for pair ${t.pairIdHex}`)}catch(n){throw d.destruct(),f.destruct(),I(`Pair instantiation failed`,{pairId:t.pairIdHex,encodeType:e.encodeType,sequenceWindow:e.sequenceWindow,encoderPersonalizationLength:t.encoderPersonalizationStr.length,decoderPersonalizationLength:t.decoderPersonalizationStr.length},n),n}n.MteKyber.zeroize(s.result1),n.MteKyber.zeroize(c.result1),a.push({pairId:t.pairIdHex,pairIdB64:t.pairIdB64,raw:t.raw,encoder:d,decoder:f,encodeType:e.encodeType,replays:0,retired:!1})}return a}finally{Tr(i)}}var kr=250,Ar=3e4,jr=.9;function Mr(e,t){let r=e.decode(t);if(r.status!==n.MteStatus.mte_status_success||r.arr===null)throw Error(`MTE decode failed with status ${r.status}.`);return r.arr}function Nr(e,t){let r=e.encode(t);if(r.status!==n.MteStatus.mte_status_success||r.arr===null)throw Error(`MTE encode failed with status ${r.status}.`);return r.arr}function Pr(e){for(let t of[e.encoder,e.decoder]){try{t.uninstantiate()}catch{}try{t.destruct()}catch{}}}var Fr=class{relayOrigin;encodeType;config;bootstrap;discovery={};bounds;tuning;profile=``;tokenText=null;tokenRaw=null;clientIdHexValue=``;boundsAdopted=!1;pairs=new Map;reserved=new Set;order=[];cursor=0;pendingCreations=0;waiters=[];droppedIds=[];setupPromise=null;ready=!1;repairPromise=null;lastRepairAt=0;refillPromise=null;keepAliveTimer=null;requestCounter=0;closed=!1;onWarning;onPoolEvent;constructor(e){this.relayOrigin=e.relayOrigin,this.encodeType=e.encodeType,this.config=e.config,this.bootstrap=e.bootstrap,this.onWarning=e.onWarning,this.onPoolEvent=e.onPoolEvent,this.bounds=tn(e.config),this.tuning=on(e.config,this.bounds).tuning}get clientIdHex(){return this.clientIdHexValue}get token(){if(this.tokenRaw===null)throw new V(`This relay session is not authenticated.`);return this.tokenRaw}get isReady(){return this.ready}snapshot(){return{initialized:this.ready&&this.pairs.size>0,clientId:this.tokenText,pairCount:this.pairs.size,requestCounter:this.requestCounter}}countRequest(){this.requestCounter+=1}noteStream(e){this.emit(e)}emit(e){if(this.onPoolEvent!==null)try{this.onPoolEvent({type:e,relayOrigin:this.relayOrigin,encodeType:this.encodeType,totalPairs:this.pairs.size,idlePairs:this.pairs.size-this.reserved.size,reservedPairs:this.reserved.size,maxPairs:this.tuning.maxPairs,minPairs:this.tuning.minPairs})}catch{}}async ensureReady(){this.repairPromise!==null&&await this.repairPromise,!this.ready&&(this.setupPromise===null&&(this.setupPromise=this.setup().finally(()=>{this.setupPromise=null})),await this.setupPromise)}async setup(){if(this.profile=sr(this.bootstrap.wasm,this.bootstrap.kyberStrength),this.profile.endsWith(`;probe=error`))throw new V(`The MTE library could not run the profile probe. Check that the license initialized before the client was created.`);await this.runAuth();let e=Math.max(1,Math.min(this.tuning.initialPairs,this.tuning.maxPairs));await this.growBy(e),this.ready=!0,this.startKeepAlive(),this.scheduleRefill()}async runAuth(){let e=this.clientIdHexValue,t=await Wn({relayOrigin:this.relayOrigin,timeoutMs:this.config.httpTimeoutMs,credentials:this.config.credentials,existingClientId:this.tokenText,clientIdHex:this.clientIdHexValue||null}),n=en(t.relay,this.profile,this.bootstrap.kyberStrength);for(let e of n.warnings)this.onWarning(e);if(this.discovery=t.relay,this.boundsAdopted){let e=rn(this.bounds,t.relay);e.length>0&&this.onWarning({key:`discovery-drift`,message:`The relay reported different bounds (${e.join(`, `)}) than the ones adopted at the first auth. In flight requests read the adopted values, so the new ones are ignored until the client is rebuilt.`})}else{this.bounds=nn(this.config,t.relay),this.boundsAdopted=!0;let e=on(this.config,this.bounds);this.tuning=e.tuning;for(let t of e.warnings)this.onWarning(t)}this.tokenText=t.clientId,this.tokenRaw=t.token,this.clientIdHexValue=t.clientIdHex,e!==``&&e!==t.clientIdHex&&(this.onWarning({key:`pool-orphaned`,message:`The relay issued a new client id (${e} became ${t.clientIdHex}); every pair under the old id was discarded.`}),this.dropAllPairs())}async acquire(){for(let e=0;e<2;e+=1){let e=this.takeIdle();if(e!==null)return e;if(this.pairs.size+this.pendingCreations<this.tuning.maxPairs){await this.growBy(1);continue}if(!await this.waitForRelease(kr))break}let e=this.takeIdle();if(e!==null)return e;throw this.emit(`capacity-exhausted`),new Rt(this.tuning.maxPairs)}takeIdle(){let e=this.order.length;for(let t=0;t<e;t+=1){let n=this.order[(this.cursor+t)%e],r=this.pairs.get(n);if(!(r===void 0||r.retired||this.reserved.has(n)))return this.cursor=(this.cursor+t+1)%e,this.reserved.add(n),r}return null}waitForRelease(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,this.waiters=this.waiters.filter(e=>e!==i),t(e))},i=()=>{clearTimeout(a),r(!0)},a=setTimeout(()=>{r(!1)},e);this.waiters.push(i)})}notifyRelease(){let e=this.waiters;this.waiters=[];for(let t of e)t()}release(e){if(this.reserved.delete(e.pairId)){if(!e.retired&&this.shouldRetire(e)){e.retired=!0,this.onWarning({key:`pair-retired`,message:`Pair ${e.pairId} reached ${jr*100} percent of the DRBG reseed interval and is being replaced.`}),this.dropAndReplace(e.pairId);return}this.notifyRelease(),this.scheduleRefill()}}shouldRetire(e){try{let t=e.encoder.getDrbgsReseedInterval(e.encoder.getDefaultDrbg());if(!Number.isFinite(t)||t<=0)return!1;let n=e.encoder.getReseedCounter()/t,r=e.decoder.getReseedCounter()/t;return Math.max(n,r)>=jr}catch{return!1}}async growBy(e){let t=this.tuning.maxPairs-this.pairs.size-this.pendingCreations,n=Math.min(e,t,this.bounds.maxPairsPerBatch);if(!(n<=0)){this.pendingCreations+=n;try{let e=await Or({config:this.config,bootstrap:this.bootstrap,relayOrigin:this.relayOrigin,clientId:this.tokenText??``,clientIdHex:this.clientIdHexValue,encodeType:this.encodeType,sequenceWindow:this.tuning.sequenceWindow,timeWindow:this.bounds.timeWindow,count:n,profile:this.profile,refreshToken:async()=>(await this.runAuth(),this.tokenText??``),flushDropList:async()=>{await this.runKeepAliveTick()},backOff:async e=>{await U(Wt(e))}});for(let t of e)this.pairs.set(t.pairId,t),this.order.push(t.pairId),this.emit(`pair-appended`);this.notifyRelease()}finally{this.pendingCreations-=n}}}scheduleRefill(){if(this.closed||!this.ready||this.refillPromise!==null)return;let e=this.pairs.size-this.reserved.size;if(this.pairs.size>=this.tuning.minPairs&&e>0||this.pairs.size>=this.tuning.maxPairs)return;this.emit(`refill-triggered`);let t=Math.max(1,this.tuning.minPairs-this.pairs.size);this.refillPromise=this.growBy(t).catch(e=>{this.onWarning({key:`refill-failed`,message:`Filling the pair pool toward minPairs failed: ${e instanceof Error?e.message:String(e)}`})}).finally(()=>{this.refillPromise=null})}dropPair(e){let t=this.pairs.get(e);return t===void 0?null:(this.pairs.delete(e),this.order=this.order.filter(t=>t!==e),this.cursor=0,this.reserved.delete(e),this.droppedIds.push(t.pairIdB64),Pr(t),this.emit(`pair-removed`),this.notifyRelease(),t)}async dropAndReplace(e){if(this.dropPair(e)!==null){this.emit(`pair-replaced`);try{await this.growBy(1)}catch(t){this.onWarning({key:`pair-replace-failed`,message:`Replacing pair ${e} failed: ${t instanceof Error?t.message:String(t)}`})}}}replaceInBackground(e){this.dropAndReplace(e)}dropAllPairs(){for(let e of this.pairs.values())this.droppedIds.push(e.pairIdB64),Pr(e);this.pairs.clear(),this.order=[],this.reserved.clear(),this.cursor=0,this.notifyRelease()}async fullRepair(){if(this.repairPromise!==null){await this.repairPromise;return}let e=Date.now()-this.lastRepairAt;if(this.lastRepairAt!==0&&e<Ar)throw new V(`Full repair refused: the last one was ${Math.round(e/1e3)} seconds ago and the minimum interval is ${Ar/1e3} seconds.`);this.lastRepairAt=Date.now(),this.repairPromise=(async()=>{this.ready=!1,this.dropAllPairs(),this.tokenText=null,this.tokenRaw=null,this.clientIdHexValue=``,await this.runAuth(),await this.growBy(Math.max(1,this.tuning.initialPairs)),this.ready=!0})().finally(()=>{this.repairPromise=null}),await this.repairPromise}async refreshToken(){await this.runAuth()}startKeepAlive(){this.keepAliveTimer===null&&(this.tuning.keepAliveIntervalMs<=0||(this.keepAliveTimer=setInterval(()=>{this.runKeepAliveTick()},this.tuning.keepAliveIntervalMs)))}async runKeepAliveTick(){if(this.closed||this.tokenText===null)return;let e=this.droppedIds.slice(0,this.bounds.maxPairsPerClient),t=await Kn({relayOrigin:this.relayOrigin,clientId:this.tokenText,clientIdHex:this.clientIdHexValue,drop:e,timeoutMs:this.config.httpTimeoutMs,credentials:this.config.credentials});if(t.result===`ok`){let e=new Set(t.droppedIds);this.droppedIds=this.droppedIds.filter(t=>!e.has(t));return}if(t.result===`invalid-client`){if(t.reason===`invalid_token`){try{await this.runAuth()}catch(e){this.onWarning({key:`keepalive-refresh-failed`,message:`The keepalive found the token aged and the refresh failed: ${e instanceof Error?e.message:String(e)}`})}return}this.onWarning({key:`keepalive-rejected`,message:`The relay rejected this client's token on keepalive (475 ${t.reason??`unknown`}); the pool was dropped and the next request re authenticates.`}),this.dropAllPairs(),this.tokenText=null,this.tokenRaw=null,this.ready=!1;return}this.onWarning({key:`keepalive-transient`,message:`The keepalive tick failed (${t.statusCode??`no status`}); every pair is kept and the next tick retries.`})}close(){this.closed=!0,this.keepAliveTimer!==null&&(clearInterval(this.keepAliveTimer),this.keepAliveTimer=null),this.dropAllPairs(),this.ready=!1}},Ir=33554432;function Lr(e){return e===null?0:e instanceof Uint8Array?e.byteLength:e.size}function Rr(e){return e===204||e===205||e===304}function zr(e,t){return e===`MTE`?Math.floor((t-16)/8):t-1024}function Br(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function Vr(e){let t=new Uint8Array(e.length);return t.set(e),t}function Hr(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n.toLowerCase(),[r]);return t}function Ur(e,t){let n=t.status??200;return new Response(Rr(n)?null:e,t)}var Wr=class{config;bootstrapOptions;sessions=new Map;bootstrapPromise=null;bootstrapContext=null;visibilityHandler=null;warned=new Set;constructor(e){this.config=St(e.config),this.bootstrapOptions=e.bootstrap,this.attachVisibilityHandler(),this.config.streamDiagnostics?.console===!0&&I(`Stream diagnostics enabled`,{maxPreviewBytes:this.config.streamDiagnostics.maxPreviewBytes,emitsConsoleLogs:!0,emitsCallbackEvents:this.config.streamDiagnostics.onEvent!==void 0},void 0,`info`)}async init(){await this.ensureBootstrap()}getStateSnapshot(){if(this.sessions.size===0)return{initialized:!1,clientId:null,pairCount:0,requestCounter:0};let e=0,t=0,n=!0,r=null;for(let i of this.sessions.values()){let a=i.snapshot();e+=a.pairCount,t+=a.requestCounter,n&&=a.initialized,this.sessions.size===1&&(r=a.clientId)}return{initialized:n,clientId:r,pairCount:e,requestCounter:t}}async repair(e){let t=e===void 0?null:new URL(e).origin;for(let e of this.sessions.values())t!==null&&e.relayOrigin!==t||await e.fullRepair()}close(){for(let e of this.sessions.values())e.close();this.sessions.clear(),this.visibilityHandler!==null&&(globalThis.document?.removeEventListener?.(`visibilitychange`,this.visibilityHandler),this.visibilityHandler=null)}async fetch(e,t,n){let r=n?.unencryptedHeaders===void 0?this.config.unencryptedHeaders:nt(n.unencryptedHeaders,`unencryptedHeaders`);await this.ensureBootstrap();let i=new Request(e,t),a=new URL(i.url,typeof window>`u`?void 0:window.location.href),o=n?.encodeType??this.config.defaultEncodeType,s=this.getOrCreateSession(a.origin,o);if(await s.ensureReady(),Kt(s.discovery,Gt.PASS_THROUGH)&&sn(a.pathname,s.discovery.passThroughRoutes))return fetch(new Request(i,{credentials:t?.credentials??this.config.credentials}));let c=i.method;if(!k(c))throw new V(`"${c}" is not an RFC 9110 method token, so it cannot travel in the metadata.`);let{encrypted:l,plain:u}=this.splitRequestHeaders(s,i.headers,r),d=await i.blob();this.checkBodySize(s,d.size);let f=d.size===0?null:d.size>Ir?d:new Uint8Array(await d.arrayBuffer());return s.countRequest(),this.send({session:s,method:c,url:a,encrypted:l,plain:u,body:f,encodeType:o,signal:i.signal})}async send(e){for(let t=0;;t+=1){let n=await this.attempt(e,t);if(n.kind===`response`)return n.response;if(n.kind===`retry`&&t===0){await U(n.delayMs);continue}throw n.error}}async attempt(e,t){let{session:n}=e,r=await n.acquire(),i=!1,o=()=>{i||(i=!0,n.release(r))},s;try{s=await this.buildFrames(n,r,e)}catch(e){return o(),e instanceof z||e instanceof V||e instanceof H?{kind:`error`,error:e}:(await n.dropAndReplace(r.pairId),{kind:`error`,error:new B(`building the request frames failed: ${e instanceof Error?e.message:String(e)}`,{pairReplaced:!0,cause:e})})}let l;try{l=await Vn({relayOrigin:n.relayOrigin,frames:s,timeoutMs:this.config.httpTimeoutMs,signal:e.signal,plainHeaders:e.plain,credentials:this.config.credentials,clientIdHex:n.clientIdHex})}catch(e){return o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:e}}if(Lt(l.status)){let e=await Un(l);o();let i=Bt(l.status,l.headers,e);return i===null?(await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(l,`a relay status arrived with a body that is not an ERROR frame; an intermediary replaced it`)}):await this.applyAction(n,r,i,t)}if(l.body===null)return o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(l,`the relay answered with no body at all`)};let u=new Hn(l.body,n.bounds.maxFrameBytes),d;try{d=await u.next()}catch(e){return await u.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(l,`the response body is not a frame: ${e instanceof Error?e.message:String(e)}`,e)}}if(d===null)return await u.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(l,`the response body carried no frames`)};if(d.header.kind===a.ERROR){await u.cancel(),o();let e=this.parseErrorFrame(d,l.headers.get(R));return e===null?(await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(l,`a malformed ERROR frame opened the body`)}):await this.applyAction(n,r,e,t)}if(d.header.kind!==a.RESPONSE)return await u.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(l,`the first frame is ${d.header.kind}, not a RESPONSE`)};let f,p;try{let t=$e(d.payload),i=Fe(Mr(r.decoder,t.metadata));if(Le(i),i.status!==t.status)throw I(`Security event: header_mismatch`,{pairId:r.pairId,envelopeStatus:t.status,metadataStatus:i.status??null}),Error(`the response metadata status ${i.status??`absent`} does not match the plaintext status ${t.status}`);f=t.status,p=Be(i.headers??new Map),this.checkPlainForwarded(n,p,e.plain)}catch(e){return await u.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(l,e instanceof Error?e.message:String(e),e)}}r.replays=0;let m=p.get(`content-type`),h=(d.header.flags&c.END)!==0;return this.emitFrameDiagnostic({session:n,pair:r,outbound:!1,stage:`response`,source:`response`,bytes:d.payload,contentType:m,details:{kind:`RESPONSE`,flags:d.header.flags,end:h,frameBytes:d.payload.length+12,status:f,headerNames:[...p.keys()].join(`, `)}}),h?(await u.cancel(),o(),this.emitFrameDiagnostic({session:n,pair:r,outbound:!1,stage:`end`,source:`response`,contentType:m,details:{reason:`RESPONSE carried END; the body is empty`}}),{kind:`response`,response:Ur(null,{status:f,headers:p})}):(n.noteStream(`stream-reserved`),{kind:`response`,response:Ur(this.bodyStream(n,r,u,o,m,l.headers.get(R)),{status:f,headers:p})})}emitFrameDiagnostic(e){this.config.streamDiagnostics!==null&&kt(this.config.streamDiagnostics,{channel:e.outbound?`request-frames`:`response-frames`,stage:e.stage,source:e.source,relayOrigin:e.session.relayOrigin,encodeType:e.session.encodeType,pairId:e.pair.pairId,contentType:e.contentType??null,chunkIndex:e.chunkIndex??null,bytes:e.bytes,details:e.details})}async buildFrames(e,t,n){n.signal.throwIfAborted();let r={v:0,method:n.method,path:Ve(n.url),headers:Hr(n.encrypted)},i=Re(r,n.encodeType===`MKE`?e.bounds.maxMetadataBytes.MKE:e.bounds.maxMetadataBytes.MTE),o=n.encodeType===`MKE`?Ue.MKE:Ue.MTE,s=n.body,l=Lr(s),u=l>0,d=s!==null&&!(s instanceof Uint8Array),f=Nr(t.encoder,i),m=Xe({mteType:o,method:Se(n.method)??255,pairId:t.raw,token:e.token,metadata:f}),g=[],_=[],v=()=>{_.push(new Blob(g)),g.length=0};if(m.length>e.bounds.maxFrameBytes)throw new H(m.length,e.bounds.maxFrameBytes);let y=u?0:c.END,b=p(a.REQUEST,y,m);if(g.push(b),this.emitFrameDiagnostic({session:e,pair:t,outbound:!0,stage:`request-frame`,source:`request`,bytes:m,details:{kind:`REQUEST`,flags:y,end:y===c.END,frameBytes:b.length,method:n.method,path:r.path??``,metadataPlaintextBytes:i.length}}),s!==null&&u){let r=Math.min(zr(n.encodeType,e.bounds.maxFrameBytes),d?8388608:1/0),i=r*Math.max(1,Math.floor(8388608/r)),o=new Uint8Array,u=0,f=0;for(let d=0;d<l;d+=r){n.signal.throwIfAborted();let m=Math.min(d+r,l),_=m===l,y;s instanceof Uint8Array?y=s.subarray(d,m):(d>=u+o.byteLength&&(g.length>0&&v(),await U(0),n.signal.throwIfAborted(),u=d,o=new Uint8Array(await s.slice(d,d+i).arrayBuffer())),y=o.subarray(d-u,m-u));let b=_?c.END:0,ee=Nr(t.encoder,h(b,y)),x=p(a.DATA,b,ee);g.push(x),this.emitFrameDiagnostic({session:e,pair:t,outbound:!0,stage:`request-frame`,source:`data`,bytes:ee,chunkIndex:f++,details:{kind:`DATA`,flags:b,end:_,frameBytes:x.length,plaintextBytes:m-d}})}}return d?(g.length>0&&v(),new Blob(_,{type:`application/octet-stream`})):Br(g)}bodyStream(e,t,n,r,i,o){let l=!1,u=0,d=(n,r,a,o,s)=>{this.emitFrameDiagnostic({session:e,pair:t,outbound:!1,stage:n,source:r,bytes:a,chunkIndex:o,contentType:i,details:s})},f=(n,i)=>{l||(l=!0,r(),e.noteStream(`stream-released`),d(`end`,`data`,void 0,null,{reason:i,pairReplaced:n}),n&&e.replaceInBackground(t.pairId))};return new ReadableStream({pull:async e=>{for(;;){let r;try{r=await n.next()}catch(t){let n=new B(`the response body ended before END: ${t instanceof Error?t.message:String(t)}`,{status:200,pairReplaced:!0,cause:t,requestId:o});f(!0,`the response body ended before END`),e.error(n);return}if(r===null){f(!1,`the stream ended`),e.close();return}if(r.header.kind===a.ERROR){let t=this.parseErrorFrame(r,o)??new B(`a malformed ERROR frame ended the body`,{status:200,requestId:o}),n=t instanceof z?t.action===`replace_pair`:!0;d(`data-frame`,`error`,r.payload,null,{kind:`ERROR`,flags:r.header.flags,end:!1,frameBytes:r.payload.length+12,code:t instanceof z?t.code:null,reason:t instanceof z?t.reason:null}),f(n,`an ERROR frame ended the body`),e.error(t);return}if(r.header.kind!==a.DATA){let t=new B(`an unexpected frame of kind ${r.header.kind} arrived in a response body`,{status:200,pairReplaced:!0,requestId:o});f(!0,`an unexpected ${s(r.header.kind)} frame arrived`),e.error(t);return}let i=u;if(u+=1,d(`data-frame`,`data`,r.payload,i,{kind:`DATA`,flags:r.header.flags,end:(r.header.flags&c.END)!==0,frameBytes:r.header.length+12,operation:r.header.length>0}),r.header.length===0)continue;let l;try{l=g(Mr(t.decoder,r.payload),r.header.flags)}catch(t){let n=new B(`a response DATA frame failed to decode: ${t instanceof Error?t.message:String(t)}`,{status:200,pairReplaced:!0,cause:t,requestId:o});f(!0,`a response DATA frame failed to decode`),e.error(n);return}let p=(r.header.flags&c.END)!==0;if(d(`decoded-chunk`,`data`,l,i,{kind:`DATA`,flags:r.header.flags,end:p,plaintextBytes:l.length}),l.length>0&&e.enqueue(Vr(l)),p){f(!1,`a DATA frame carried END`),e.close();return}if(l.length>0)return}},cancel:async e=>{await n.cancel(e),f(!0,`the caller cancelled the body before END`)}})}parseErrorFrame(e,t){try{let n=be(e.payload);return new z(n.code,n.reason,{message:n.message,cause:n.cause,requestId:t})}catch{return null}}async applyAction(e,t,n,r){switch(n.action){case`replace_pair`:return await e.dropAndReplace(t.pairId),n.pairReplaced=!0,{kind:`error`,error:n};case`full_repair`:try{await e.fullRepair(),n.repaired=!0}catch(e){I(`Full repair failed`,{code:n.code},e)}return{kind:`error`,error:n};case`back_off`:case`back_off_not_owner`:return await U(Wt(n.retryAfterMs)),{kind:`error`,error:n};case`retry_once_then_replace`:return r===0?{kind:`retry`,delayMs:n.retryAfterMs>0?n.retryAfterMs:100,error:n}:(await e.dropAndReplace(t.pairId),n.pairReplaced=!0,{kind:`error`,error:n});case`retry_same`:return r===0?{kind:`retry`,delayMs:n.retryAfterMs>0?n.retryAfterMs:1e3,error:n}:{kind:`error`,error:n};case`surface_security`:return I(`Security event: relay_${n.reason}`,{pairId:t.pairId,code:n.code}),n.code===w.REPLAY_REJECTED&&(t.replays+=1,t.replays>=2&&(t.replays=0,await e.dropAndReplace(t.pairId),n.pairReplaced=!0)),{kind:`error`,error:n};default:return{kind:`error`,error:n}}}transportError(e,t,n){return new B(Vt(e.status)??t,{status:e.status,requestId:e.headers.get(R),pairReplaced:!0,cause:n})}splitRequestHeaders(e,t,n){let r=rt(t,n),i=Object.keys(r.plain);if(i.length===0)return r;if(!Kt(e.discovery,Gt.PLAIN_HEADERS))return this.warnOnce(`plain-headers:${e.relayOrigin}`,`The relay does not advertise the "plain-headers" feature, so ${i.join(`, `)} would not reach the origin as plain headers. They are encrypted in the metadata instead.`),{encrypted:{...r.encrypted,...r.plain},plain:{}};let a=ln(e.discovery.forwardPlainHeaders);if(a!==null){let t=i.filter(e=>!a(e));t.length>0&&this.warnOnce(`plain-forward:${e.relayOrigin}:${t.join(`,`)}`,`The relay's forwardPlainHeaders list does not cover ${t.join(`, `)}, so the origin will not see them.`)}return r}checkPlainForwarded(e,t,n){let r=Object.keys(n);if(r.length===0)return;let i=un(t.get(`x-mte-plain-forwarded`));if(i.all)return;let a=r.filter(e=>!i.names.has(e));a.length!==0&&this.warnOnce(`plain-not-forwarded:${e.relayOrigin}:${a.join(`,`)}`,`The relay reported that it did not forward ${a.join(`, `)} to the origin.`)}checkBodySize(e,t){let n=e.bounds.maxRequestBodyBytes;if(n>0&&t>n)throw new H(t,n);t>Ir&&this.warnOnce(`large-body`,`A ${Math.round(t/1048576)} MB request is staged as blobs and encrypted in bounded batches before upload. Browser blob storage and available resources still limit large uploads.`)}getOrCreateSession(e,t){let n=`${e}|${t}`,r=this.sessions.get(n);if(r!==void 0)return r;if(this.bootstrapContext===null)throw new V(`The MTE runtime has not been initialized.`);let i=new Fr({relayOrigin:e,encodeType:t,config:this.config,bootstrap:this.bootstrapContext,onWarning:e=>{this.warnOnce(`${n}:${e.key}`,e.message)},onPoolEvent:this.config.onPoolEvent});return this.sessions.set(n,i),i}async ensureBootstrap(){return this.bootstrapContext===null?(this.bootstrapPromise===null&&(this.bootstrapPromise=hn(this.bootstrapOptions).catch(e=>{throw this.bootstrapPromise=null,e})),this.bootstrapContext=await this.bootstrapPromise,this.bootstrapContext):this.bootstrapContext}warnOnce(e,t){this.config.warnings&&(this.warned.has(e)||(this.warned.add(e),console.warn(`[mte-relay] ${t}`)))}attachVisibilityHandler(){let e=globalThis.document;e===void 0||typeof e.addEventListener!=`function`||(this.visibilityHandler=()=>{if(e.visibilityState===`visible`)for(let e of this.sessions.values())e.isReady&&e.runKeepAliveTick()},e.addEventListener(`visibilitychange`,this.visibilityHandler))}},Q=null,$=null;async function Gr(e){Q?.close();let t=new Wr({config:{minPairs:e.minPairs,initialPairs:e.initialPairs,maxPairs:e.maxPairs,defaultEncodeType:e.defaultEncodeType,sequenceWindow:e.sequenceWindow,timeWindow:e.timeWindow,httpTimeoutMs:e.httpTimeoutMs,keepAliveIntervalMs:e.keepAliveIntervalMs,streamDiagnostics:e.streamDiagnostics,onPoolEvent:e.onPoolEvent,unencryptedHeaders:e.unencryptedHeaders,credentials:e.credentials,warnings:e.warnings},bootstrap:{companyName:e.companyName,licenseKey:e.licenseKey}});Q=t,$=t.init().finally(()=>{$=null}),await $}async function Kr(e,t,n){if(Q===null)throw Error(`MTE relay client is not initialized. Call initMteRelayClient(...) before mteFetch(...).`);return $!==null&&await $,Q.fetch(e,t,n)}var qr={companyName:`Eclypses Inc`,licenseKey:`+ANh061NxNxBxphOu2fUzruw`};function Jr(e={}){return Gr({...qr,...e})}Jr().catch(()=>{}),exports.MteRelayCapacityError=Rt,exports.MteRelayRequestTooLargeError=H,exports.configureMteRelay=Jr,exports.mteFetch=Kr;
3
+ `;case`r`:return`\r`;case`t`:return` `;case`u`:{let e=this.src.slice(this.i,this.i+4);return/^[0-9a-fA-F]{4}$/.test(e)||b(`bad \\u escape at offset ${this.i}`),this.i+=4,String.fromCharCode(Number.parseInt(e,16))}default:return b(`bad escape \\${e} at offset ${this.i-1}`)}}parseNumber(){let e=this.i;if(this.src[this.i]===`-`&&(this.i+=1),this.src[this.i]===`0`)this.i+=1;else for(this.isDigit(this.src[this.i])||b(`bad number at offset ${e}`);this.isDigit(this.src[this.i]);)this.i+=1;if(this.src[this.i]===`.`)for(this.i+=1,this.isDigit(this.src[this.i])||b(`bad number at offset ${e}`);this.isDigit(this.src[this.i]);)this.i+=1;let t=this.src[this.i];if(t===`e`||t===`E`){this.i+=1;let t=this.src[this.i];for((t===`+`||t===`-`)&&(this.i+=1),this.isDigit(this.src[this.i])||b(`bad number at offset ${e}`);this.isDigit(this.src[this.i]);)this.i+=1}return new _(this.src.slice(e,this.i))}isDigit(e){return e!==void 0&&e>=`0`&&e<=`9`}};function x(e){let t;try{t=v.decode(e)}catch{return b(`metadata is not valid UTF-8`)}return new ee(t).parseTopLevelObject()}var te={8:`\\b`,9:`\\t`,10:`\\n`,12:`\\f`,13:`\\r`,34:`\\"`,92:`\\\\`};function ne(e){let t=`"`;for(let n of e){let e=n.codePointAt(0),r=te[e];if(r!==void 0){t+=r;continue}if(e<32){t+=`\\u${e.toString(16).padStart(4,`0`)}`;continue}t+=n}return t+`"`}function re(e,t){let n=y.encode(e),r=y.encode(t),i=Math.min(n.length,r.length);for(let e=0;e<i;e+=1)if(n[e]!==r[e])return n[e]-r[e];return n.length-r.length}function ie(e){return e===null?`null`:typeof e==`boolean`?e?`true`:`false`:typeof e==`string`?ne(e):e instanceof _?e.raw:Array.isArray(e)?`[${e.map(ie).join(`,`)}]`:`{${[...e.keys()].sort(re).map(t=>`${ne(t)}:${ie(e.get(t))}`).join(`,`)}}`}function ae(e){return y.encode(ie(e))}function S(e){for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n===0||n===10||n===13)return!1}return!0}var C={PAIR_NOT_FOUND:470,DECODER_RESTORE_FAILED:471,ENCODER_RESTORE_FAILED:472,DECODE_FAILED:473,ENCODE_FAILED:474,INVALID_CLIENT_ID:475,POOL_EXHAUSTED:476,INVALID_FRAME:477,FRAME_VERSION_UNSUPPORTED:478,REPLAY_REJECTED:479,NO_DOMAIN_FOR_HOST:480,FRAME_TOO_LARGE:481,METADATA_INVALID:482,HEADER_MISMATCH:483,TARGET_POLICY:484,UPSTREAM_CAPACITY:485,PAIR_BUSY:486,REKEY_OVERDUE:487,LIMIT:488,TARGET_RESET:489,INVALID_REQUEST:490,INTERNAL:500,UPSTREAM:502,STATE_STORE:503},w={PAIR_NOT_FOUND:`pair_not_found`,DECODER_RESTORE_FAILED:`decoder_restore_failed`,ENCODER_RESTORE_FAILED:`encoder_restore_failed`,DECODE_FAILED:`decode_failed`,ENCODE_FAILED:`encode_failed`,INVALID_CLIENT_ID:`invalid_client_id`,INVALID_TOKEN:`invalid_token`,UNKNOWN_KEY:`unknown_key`,POOL_EXHAUSTED:`pool_exhausted`,INVALID_FRAME:`invalid_frame`,EOF_BEFORE_END:`eof_before_end`,FRAME_VERSION_UNSUPPORTED:`frame_version_unsupported`,REPLAY_REJECTED:`replay_rejected`,NO_DOMAIN_FOR_HOST:`no_domain_for_host`,FRAME_TOO_LARGE:`frame_too_large`,BODY_TOO_LARGE:`body_too_large`,MESSAGE_TOO_LARGE:`message_too_large`,METADATA_INVALID:`metadata_invalid`,HEADER_MISMATCH:`header_mismatch`,TARGET_FORBIDDEN:`target_forbidden`,PORT_OUT_OF_RANGE:`port_out_of_range`,AUTHZ_REVOKED:`authz_revoked`,UPSTREAM_CAPACITY:`upstream_capacity`,PAIR_BUSY:`pair_busy`,NOT_OWNER:`not_owner`,REKEY_OVERDUE:`rekey_overdue`,CONNECTION_LIMIT:`connection_limit`,RATE_LIMITED:`rate_limited`,TARGET_RESET:`target_reset`,INVALID_REQUEST:`invalid_request`,PAIR_EXISTS:`pair_exists`,PAIR_LIMIT:`pair_limit`,PROFILE_MISMATCH:`profile_mismatch`,INTERNAL:`internal`,CONFIGURATION:`configuration`,UPSTREAM_CONNECT_FAILED:`upstream_connect_failed`,UPSTREAM_RESPONSE_FAILED:`upstream_response_failed`,STATE_STORE_UNAVAILABLE:`state_store_unavailable`,STATE_STORE_WRITE_FAILED:`state_store_write_failed`},oe=new Map([[C.PAIR_NOT_FOUND,[w.PAIR_NOT_FOUND]],[C.DECODER_RESTORE_FAILED,[w.DECODER_RESTORE_FAILED]],[C.ENCODER_RESTORE_FAILED,[w.ENCODER_RESTORE_FAILED]],[C.DECODE_FAILED,[w.DECODE_FAILED]],[C.ENCODE_FAILED,[w.ENCODE_FAILED]],[C.INVALID_CLIENT_ID,[w.INVALID_CLIENT_ID,w.INVALID_TOKEN,w.UNKNOWN_KEY]],[C.POOL_EXHAUSTED,[w.POOL_EXHAUSTED]],[C.INVALID_FRAME,[w.INVALID_FRAME,w.EOF_BEFORE_END]],[C.FRAME_VERSION_UNSUPPORTED,[w.FRAME_VERSION_UNSUPPORTED]],[C.REPLAY_REJECTED,[w.REPLAY_REJECTED]],[C.NO_DOMAIN_FOR_HOST,[w.NO_DOMAIN_FOR_HOST]],[C.FRAME_TOO_LARGE,[w.FRAME_TOO_LARGE,w.BODY_TOO_LARGE,w.MESSAGE_TOO_LARGE]],[C.METADATA_INVALID,[w.METADATA_INVALID]],[C.HEADER_MISMATCH,[w.HEADER_MISMATCH]],[C.TARGET_POLICY,[w.TARGET_FORBIDDEN,w.PORT_OUT_OF_RANGE,w.AUTHZ_REVOKED]],[C.UPSTREAM_CAPACITY,[w.UPSTREAM_CAPACITY]],[C.PAIR_BUSY,[w.PAIR_BUSY,w.NOT_OWNER]],[C.REKEY_OVERDUE,[w.REKEY_OVERDUE]],[C.LIMIT,[w.CONNECTION_LIMIT,w.RATE_LIMITED]],[C.TARGET_RESET,[w.TARGET_RESET]],[C.INVALID_REQUEST,[w.INVALID_REQUEST,w.PAIR_EXISTS,w.PAIR_LIMIT,w.PROFILE_MISMATCH]],[C.INTERNAL,[w.INTERNAL,w.CONFIGURATION]],[C.UPSTREAM,[w.UPSTREAM_CONNECT_FAILED,w.UPSTREAM_RESPONSE_FAILED]],[C.STATE_STORE,[w.STATE_STORE_UNAVAILABLE,w.STATE_STORE_WRITE_FAILED]]]),se=new Map([[559,`pair not found`],[560,`decoder restore failed`],[561,`encoder restore failed`],[562,`decode failed`],[563,`encode failed`],[564,`invalid client id`],[565,`state pool exhausted`],[566,`invalid request format`],[567,`internal relay error`],[568,`configuration error`],[569,`reserved`]]);function ce(e){return oe.has(e)}function le(e){return se.has(e)}function ue(e){return se.get(e)}function de(e){return pe(e)<=64&&/^[a-z][a-z0-9_]*$/.test(e)}var fe=new TextEncoder;function pe(e){return fe.encode(e).length}function T(e,t){switch(e){case C.PAIR_NOT_FOUND:case C.DECODER_RESTORE_FAILED:case C.ENCODER_RESTORE_FAILED:case C.DECODE_FAILED:case C.ENCODE_FAILED:return`replace_pair`;case C.INVALID_CLIENT_ID:return t===w.UNKNOWN_KEY?`stop`:`full_repair`;case C.POOL_EXHAUSTED:case C.UPSTREAM_CAPACITY:case C.LIMIT:return`back_off`;case C.INVALID_FRAME:return t===w.EOF_BEFORE_END?`replace_pair`:`surface`;case C.FRAME_TOO_LARGE:return t===w.MESSAGE_TOO_LARGE?`replace_pair`:`surface`;case C.REPLAY_REJECTED:case C.HEADER_MISMATCH:return`surface_security`;case C.TARGET_POLICY:return t===w.PORT_OUT_OF_RANGE?`surface`:`stop`;case C.PAIR_BUSY:return t===w.NOT_OWNER?`back_off_not_owner`:`retry_once_then_replace`;case C.REKEY_OVERDUE:return`reconnect`;case C.STATE_STORE:return t===w.STATE_STORE_WRITE_FAILED?`replace_pair`:`retry_same`;default:return`surface`}}var me=new TextEncoder;function E(e){throw new l(`payload`,e)}function he(e){return me.encode(e).length}function ge(e,t){try{return x(e)}catch(e){return E(`${t}: ${e instanceof Error?e.message:e}`)}}function D(e,t){if(!e.has(t))return;let n=e.get(t);return typeof n!=`string`&&E(`${t} is not a string`),n}function _e(e,t){if(!e.has(t))return;let n=e.get(t);(!(n instanceof _)||!/^-?\d+$/.test(n.raw))&&E(`${t} is not an integer`);let r=Number(n.raw);return Number.isSafeInteger(r)||E(`${t} is out of range`),r}function ve(e,t){(!Number.isInteger(e)||e<0||e>65535)&&E(`${t} ${e} does not fit a uint16`)}function ye(e){ve(e.code,`error code`),de(e.reason)||E(`error reason ${JSON.stringify(e.reason)}`);let t=e.message??``;(he(t)>4096||!S(t))&&E(`error message`);let n=e.cause;n&&(ve(n.code,`cause code`),de(n.reason)||E(`cause reason ${JSON.stringify(n.reason)}`),(!Number.isInteger(n.hop)||n.hop<0)&&E(`cause hop ${n.hop}`))}function be(e){e.length<2&&E(`error payload ${e.length} bytes, need at least 2`);let t=new DataView(e.buffer,e.byteOffset,e.byteLength).getUint16(0,!1),n=ge(e.subarray(2),`error json`),r={code:t,reason:D(n,`reason`)??``,message:D(n,`message`)??``},i=n.get(`cause`);return i!==void 0&&(i instanceof Map||E(`cause is not an object`),r.cause={code:_e(i,`code`)??0,hop:_e(i,`hop`)??0,reason:D(i,`reason`)??``}),ye(r),r}var O={GET:0,POST:1,PUT:2,PATCH:3,DELETE:4,HEAD:5,OPTIONS:6,TRACE:7,CONNECT:8},xe=Object.keys(O).length-1;function Se(e){if(Object.prototype.hasOwnProperty.call(O,e))return O[e]}function Ce(e){return Number.isInteger(e)?e>=0&&e<=xe||e===255:!1}var we="!#$%&'*+-.^_`|~";function Te(e){if(e.length===0||e.length>32)return!1;for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(!(n>=97&&n<=122||n>=65&&n<=90||n>=48&&n<=57)&&!we.includes(e.charAt(t)))return!1}return!0}var Ee=16384,De={MKE:61439,MTE:7168},Oe=new Set([`connection`,`content-length`,`host`,`keep-alive`,`proxy-authenticate`,`proxy-authorization`,`proxy-connection`,`te`,`trailer`,`transfer-encoding`,`upgrade`]);function ke(e){return Oe.has(e)}function k(e){throw new l(`metadata`,e)}var Ae=/^[!#$%&'*+\-.^_`|~0-9a-z]+$/;function A(e){let t=0;for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);r<128?t+=1:r<2048?t+=2:r>=55296&&r<=56319&&(e.charCodeAt(n+1)&64512)==56320?(t+=4,n+=1):t+=3}return t}function je(e){return e.length>=1&&e.length<=256&&Ae.test(e)}function Me(e){return A(e)<=8192&&S(e)}var Ne=/^-?(0|[1-9][0-9]*)$/,Pe=/^(0|[1-9][0-9]*)$/;function Fe(e,t){(!(e instanceof _)||!Ne.test(e.raw))&&k(`metadata ${t} is not an integer`);let n=Number(e.raw);return Number.isSafeInteger(n)||k(`metadata ${t} is out of range`),n}function Ie(e,t){return typeof e!=`string`&&k(`metadata ${t} is not a string`),e}function Le(e){let t=x(e),n={v:0},r;for(let[e,i]of t)switch(e){case`v`:{let e=Fe(i,`v`);(e<1||e>255)&&k(`metadata v ${e} is outside 1 to 255`),n.v=e;break}case`method`:{let e=Ie(i,`method`);Te(e)||k(`metadata method is not a token`),n.method=e;break}case`status`:{let e=Fe(i,`status`);(e<100||e>599)&&k(`metadata status ${e} is outside 100 to 599`),n.status=e;break}case`path`:{let e=Ie(i,`path`);A(e)>16384&&k(`metadata path is too long`),S(e)||k(`metadata path carries CR, LF, or NUL`),n.path=e;break}case`target`:{let e=Ie(i,`target`);A(e)>256&&k(`metadata target is too long`),S(e)||k(`metadata target carries CR, LF, or NUL`),n.target=e;break}case`port`:{let e=Fe(i,`port`);(e<1||e>65535)&&k(`metadata port ${e} is outside 1 to 65535`),n.port=e;break}case`id`:{(!(i instanceof _)||!Pe.test(i.raw))&&k(`metadata id is not an unsigned integer`);let e=BigInt(i.raw);e>18446744073709551615n&&k(`metadata id does not fit an unsigned 64 bit integer`),n.id=e;break}case`headers`:n.headers=Re(i);break;default:e.startsWith(`x-`)&&(r===void 0&&(r=new Map),r.set(e,i))}return n.v===0&&k(`metadata is missing v`),r!==void 0&&(n.extra=r),n}function Re(e){if(e===null)return;e instanceof Map||k(`metadata headers is not an object`),e.size>256&&k(`metadata carries ${e.size} header names`);let t=new Map;for(let[n,r]of e){je(n)||k(`header name ${JSON.stringify(n)} is not a lowercase token`);let e;Array.isArray(r)?(r.length===0&&k(`header ${n} carries an empty array`),e=r.map(e=>(typeof e!=`string`&&k(`header ${n} carries an array element that is not a string`),e))):typeof r==`string`?e=[r]:k(`header ${n} is not a string or an array of strings`),e.length>64&&k(`header ${n} carries ${e.length} values`);for(let t of e)Me(t)||k(`header ${n} carries an invalid value`);ke(n)||t.set(n,e)}return t}function ze(e,t=2){e.v!==t&&k(`metadata v ${e.v} does not match the envelope version ${t}`)}function Be(e,t=0){let n=new Map,r=e.v?e.v:2;if((!Number.isInteger(r)||r<1||r>255)&&k(`metadata v ${r} is outside 1 to 255`),n.set(`v`,new _(String(r))),e.method&&(Te(e.method)||k(`metadata method ${JSON.stringify(e.method)} is not a token`),n.set(`method`,e.method)),e.status&&((!Number.isInteger(e.status)||e.status<100||e.status>599)&&k(`metadata status ${e.status} is outside 100 to 599`),n.set(`status`,new _(String(e.status)))),e.path&&(We(e.path),n.set(`path`,e.path)),e.target&&(A(e.target)>256&&k(`metadata target is too long`),S(e.target)||k(`metadata target carries CR, LF, or NUL`),n.set(`target`,e.target)),e.port!==void 0&&((!Number.isInteger(e.port)||e.port<1||e.port>65535)&&k(`metadata port ${e.port} is outside 1 to 65535`),n.set(`port`,new _(String(e.port)))),e.id!==void 0&&((e.id<0n||e.id>18446744073709551615n)&&k(`metadata id does not fit an unsigned 64 bit integer`),n.set(`id`,new _(e.id.toString()))),e.headers!==void 0&&e.headers.size>0){let t=Ve(e.headers);t.size>0&&n.set(`headers`,t)}if(e.extra!==void 0)for(let[t,r]of e.extra)(!t.startsWith(`x-`)||!je(t))&&k(`vendor member ${JSON.stringify(t)} must be a lowercase token starting with x-`),n.set(t,r);let i=ae(n);if(t>0&&i.length>t)throw new l(`metadata`,`metadata is ${i.length} bytes and the bound is ${t}`,{seen:i.length,max:t});return i}function Ve(e){let t=new Map;for(let[n,r]of e){let e=n.toLowerCase();if(je(e)||k(`header name ${JSON.stringify(n)} is not a token`),!ke(e)&&r.length!==0){r.length>64&&k(`header ${e} carries ${r.length} values`);for(let t of r)Me(t)||k(`header ${e} carries an invalid value`);t.has(e)&&k(`header ${e} appears under two casings`),t.set(e,r.length===1?r[0]:[...r])}}return t.size>256&&k(`metadata carries ${t.size} header names`),t}function He(e){let t=new Headers;for(let n of[...e.keys()].sort(re))if(!ke(n))for(let r of e.get(n))t.append(n,r);return t}function Ue(e){let t=`${e.pathname}${e.search}`,n=t.startsWith(`/`)?t.slice(1):t,r=A(n);return r>16384&&k(`path is ${r} bytes and the bound is ${Ee}`),n}function We(e){let t=A(e);t>16384&&k(`path is ${t} bytes and the bound is ${Ee}`),S(e)||k(`metadata path carries CR, LF, or NUL`),e.startsWith(`/`)&&k(`metadata path carries a leading slash`)}var Ge={MTE:0,MKE:1},Ke=1,qe=2,Je=qe+16,Ye=Je+2,Xe=4;function Ze(e){let{mteType:t,method:n,pairId:r,token:i,metadata:a}=e;if(!Number.isInteger(t)||t<0||t>Ge.MKE)throw new l(`payload`,`mte type ${t}`,{seen:t});if(!Ce(n))throw new l(`payload`,`method byte ${n}`,{seen:n});if(r.length!==16)throw new l(`payload`,`pair id ${r.length} bytes, want 16`,{seen:r.length});if(i.length!==0&&i.length!==40)throw new l(`payload`,`token length ${i.length}, want 0 or 40`,{seen:i.length});if(a.length===0)throw new l(`payload`,`empty metadata`);if(a.length>4294967295)throw new l(`payload`,`metadata length ${a.length} exceeds uint32`,{seen:a.length})}function Qe(e){Ze(e);let{token:t,metadata:n}=e,r=new Uint8Array(24+t.length+n.length);r[0]=e.mteType,r[Ke]=e.method,r.set(e.pairId,qe),r.set(t,Ye),r.set(n,Ye+t.length+Xe);let i=new DataView(r.buffer);return i.setUint16(Je,t.length,!1),i.setUint32(Ye+t.length,n.length,!1),r}var $e=2;function et(e){let{status:t,metadata:n}=e;if(!Number.isInteger(t)||t<100||t>599)throw new l(`payload`,`status ${t}`,{seen:t});if(n.length===0)throw new l(`payload`,`empty metadata`);if(n.length>4294967295)throw new l(`payload`,`metadata length ${n.length} exceeds uint32`,{seen:n.length})}function tt(e){if(e.length<6)throw new l(`payload`,`response payload ${e.length} bytes, need at least 6`,{seen:e.length});let t=new DataView(e.buffer,e.byteOffset,e.byteLength),n=t.getUint32($e,!1);if(n===0)throw new l(`payload`,`empty metadata`);let r=e.length-6;if(r!==n)throw new l(`payload`,`metadata length ${n}, ${r} bytes follow`,{seen:r});let i={status:t.getUint16(0,!1),metadata:e.subarray(6)};return et(i),i}var nt=new Set([`content-type`,`x-mte-relay-route`]),rt=/^[!#$%&'*+\-.^_`|~0-9a-z]+$/;function j(e,t){throw Error(`MTE relay configuration field ${e} ${t}`)}function it(e,t){if(e===void 0)return{all:!1,names:new Set};Array.isArray(e)||j(t,`must be an array of header names. Received: ${typeof e}.`);let n=new Set,r=!1;for(let i of e){typeof i!=`string`&&j(t,`must contain only strings.`);let e=i.trim().toLowerCase();if(e===``&&j(t,`must not contain empty names.`),e===`*`){r=!0;continue}n.add(e)}if(r)return n.size>0&&j(t,`"*" must be the only entry.`),{all:!0,names:new Set};for(let e of n)rt.test(e)||j(t,`contains an invalid header name: ${e}.`),nt.has(e)&&j(t,`must not list ${e}; it is always encrypted.`);return{all:!1,names:n}}function at(e,t){let n={},r={};return e.forEach((e,i)=>{if(nt.has(i)){n[i]=e;return}if(t.all||t.names.has(i)){r[i]=e;return}n[i]=e}),{encrypted:n,plain:r}}var ot=4,st=1,ct=8,lt=`MKE`,ut=-63,dt=1e3,ft=3e4,pt=3e5,mt=6e4,ht=6e5,gt=48,_t=512,vt=65535,yt=`include`,bt=!0;function xt(e){if(e!==`MTE`&&e!==`MKE`)throw Error(`MTE relay configuration field defaultEncodeType must be \"MTE\" or \"MKE\". Received: ${String(e)}.`)}function St(e){if(e!==`include`&&e!==`same-origin`&&e!==`omit`)throw Error(`MTE relay configuration field credentials must be "include", "same-origin", or "omit". Received: ${String(e)}.`)}function M(e,t,n){if(!Number.isFinite(t)||!Number.isInteger(t))throw Error(`MTE relay configuration field ${e} must be a finite integer. Received: ${t}.`);if(n?.min!==void 0&&t<n.min)throw Error(`MTE relay configuration field ${e} must be >= ${n.min}. Received: ${t}.`);if(n?.max!==void 0&&t>n.max)throw Error(`MTE relay configuration field ${e} must be <= ${n.max}. Received: ${t}.`)}function Ct(e){if(e===void 0||e===!1)return null;if(e===!0)return{enabled:!0,maxPreviewBytes:gt,console:!0};let t=e.maxPreviewBytes??gt;if(M(`streamDiagnostics.maxPreviewBytes`,t,{min:1,max:_t}),e.console!==void 0&&typeof e.console!=`boolean`)throw Error(`MTE relay configuration field streamDiagnostics.console must be a boolean. Received: ${String(e.console)}.`);return{enabled:!0,maxPreviewBytes:t,console:e.console??e.onEvent===void 0,onEvent:e.onEvent}}function wt(e){if(e===void 0||e===!0)return{enabled:!0,minBytes:null};if(e===!1)return{enabled:!1,minBytes:null};if(typeof e!=`object`||!e)throw Error(`MTE relay configuration field requestStreaming must be a boolean or { minBytes }. Received: ${String(e)}.`);return e.minBytes===void 0?{enabled:!0,minBytes:null}:(M(`requestStreaming.minBytes`,e.minBytes,{min:0}),{enabled:!0,minBytes:e.minBytes})}function Tt(e){let t=e.minPairs??ot;M(`minPairs`,t,{min:1});let n=e.maxPairs??ct;M(`maxPairs`,n,{min:t});let r=e.initialPairs??st;M(`initialPairs`,r,{min:1,max:n});let i=e.defaultEncodeType??lt;xt(i);let a=e.sequenceWindow!==void 0,o=e.sequenceWindow??ut;M(`sequenceWindow`,o,{min:-63,max:vt});let s=e.timeWindow??dt;M(`timeWindow`,s,{min:0});let c=e.httpTimeoutMs??ft;M(`httpTimeoutMs`,c,{min:1});let l=e.keepAliveIntervalMs!==void 0,u=e.keepAliveIntervalMs??pt;M(`keepAliveIntervalMs`,u,{min:mt,max:ht});let d=Ct(e.streamDiagnostics),f=e.onPoolEvent??null,p=it(e.unencryptedHeaders,`unencryptedHeaders`),m=e.credentials??yt;St(m);let h=e.warnings??bt;if(typeof h!=`boolean`)throw Error(`MTE relay configuration field warnings must be a boolean. Received: ${String(h)}.`);return{minPairs:t,initialPairs:r,maxPairs:n,defaultEncodeType:i,sequenceWindow:o,timeWindow:s,httpTimeoutMs:c,keepAliveIntervalMs:u,streamDiagnostics:d,onPoolEvent:f,unencryptedHeaders:p,credentials:m,warnings:h,requestStreaming:wt(e.requestStreaming),hasExplicitSequenceWindow:a,hasExplicitKeepAliveInterval:l}}function Et(e){return e.toString(16).padStart(2,`0`)}function Dt(e){switch(e){case 9:return`\\t`;case 10:return`\\n`;case 13:return`\\r`;case 34:return`\\"`;case 92:return`\\\\`;default:return e>=32&&e<=126?String.fromCharCode(e):`\\x${Et(e)}`}}function Ot(e,t){let n=e.byteLength>t,r=n?e.subarray(0,t):e;return{byteLength:e.byteLength,hexPreview:Array.from(r,Et).join(` `),escapedPreview:Array.from(r,Dt).join(``)+(n?`...`:``),truncated:n}}function kt(e,t=4){return e.length<=t*2?`*** (len=${e.length})`:`${e.slice(0,t)}...${e.slice(-t)} (len=${e.length})`}function At(e){return e instanceof Error?{name:e.name,message:e.message,stack:e.stack}:{value:String(e)}}function N(e){return{companyName:e.companyName,licenseKey:kt(e.licenseKey)}}function jt(e){return{kyberStrength:e.kyberStrength}}function P(e,t,n,r=`error`){let i={...t,timestamp:new Date().toISOString()};n!==void 0&&(i.error=At(n)),(r===`info`?console.log:console.error)(`[mte-relay] ${e}`,i)}function Mt(e,t){if(!e?.enabled)return;let n={...t,...Ot(t.bytes??new Uint8Array,e.maxPreviewBytes)};e.onEvent?.(n),e.console&&P(`stream ${n.channel} ${n.stage}`,{relayOrigin:n.relayOrigin,encodeType:n.encodeType,pairId:n.pairId,contentType:n.contentType,chunkIndex:n.chunkIndex,source:n.source,byteLength:n.byteLength,truncated:n.truncated,hexPreview:n.hexPreview,escapedPreview:n.escapedPreview,details:n.details},void 0,`info`)}var F=4294967295,Nt=new Uint8Array,Pt=32,Ft=class{maxFrameBytes;transport;chunks;head;offset;available;want;terminated;ended;failure;scratch;constructor(e={}){let t=e.maxFrameBytes??0;this.maxFrameBytes=t>0?Math.min(t,F):F,this.transport=e.transport??`http`,this.chunks=[],this.head=0,this.offset=0,this.available=0,this.want=null,this.terminated=!1,this.ended=!1,this.failure=null,this.scratch=new Uint8Array(12)}get buffered(){return this.available}get done(){return this.terminated}push(e){if(this.failure)throw this.failure;if(this.ended)throw Error(`FrameReader: push after end`);if(e.length!==0){if(this.terminated)throw this.fail(new l(`trailing_after_end`,`${e.length} bytes after the frame that ended the stream`));this.chunks.push(e),this.available+=e.length}}next(){if(this.failure)throw this.failure;if(this.terminated){if(this.available>0)throw this.fail(new l(`trailing_after_end`,`${this.available} bytes after the frame that ended the stream`));return null}if(this.want===null){if(this.available<12)return null;let e;try{e=d(this.peekHeader())}catch(e){throw this.fail(e)}if(e.length>this.maxFrameBytes)throw this.fail(new l(`too_large`,`frame length ${e.length} is over the ${this.maxFrameBytes} byte bound`,{seen:e.length,max:this.maxFrameBytes}));try{m(e,this.transport)}catch(e){throw this.fail(e)}this.skip(12),this.want=e}let e=this.want;if(this.available<e.length)return null;let t=this.take(e.length);return this.want=null,((e.flags&c.END)!==0||e.kind===a.ERROR)&&(this.terminated=!0),{header:e,payload:t}}end(){if(this.failure)throw this.failure;if(!this.ended){if(this.ended=!0,this.terminated){if(this.available>0)throw this.fail(new l(`trailing_after_end`,`${this.available} bytes after the frame that ended the stream`));return}if(this.want!==null||this.available>0){let e=this.want===null?12-this.available:this.want.length-this.available;throw this.fail(new l(`truncated`,`stream ended inside a frame, ${e} bytes short`))}throw this.fail(new l(`eof_before_end`,`stream ended before a frame carrying END`))}}fail(e){return this.failure=e,e}peekHeader(){let e=this.chunks[this.head];if(e.length-this.offset>=12)return e.subarray(this.offset,this.offset+12);let t=0,n=this.head,r=this.offset;for(;t<12;){let e=this.chunks[n],i=Math.min(12-t,e.length-r);this.scratch.set(e.subarray(r,r+i),t),t+=i,n+=1,r=0}return this.scratch}take(e){if(e===0)return Nt;let t=this.chunks[this.head];if(t.length-this.offset>=e){let n=t.subarray(this.offset,this.offset+e);return this.skip(e),n}let n=new Uint8Array(e),r=0;for(;r<e;){let t=this.chunks[this.head],i=Math.min(e-r,t.length-this.offset);n.set(t.subarray(this.offset,this.offset+i),r),r+=i,this.skip(i)}return n}skip(e){this.available-=e;let t=e;for(;t>0;){let e=this.chunks[this.head].length-this.offset;if(e>t){this.offset+=t;return}t-=e,this.chunks[this.head]=Nt,this.head+=1,this.offset=0}this.head===this.chunks.length?(this.chunks.length=0,this.head=0):this.head>Pt&&(this.chunks=this.chunks.slice(this.head),this.head=0)}};function It(e,t){let n=t>0?Math.min(t,F):F,r=d(e);if(r.length>n)throw new l(`too_large`,`frame length ${r.length} is over the ${n} byte bound`,{seen:r.length,max:n});if(e.length!==12+r.length)throw new l(`message_length`,`message is ${e.length} bytes, expected ${12+r.length}`,{seen:e.length});return m(r,`ws`),{header:r,payload:e.subarray(12)}}var Lt=`X-MTE-Relay-Error`,I=`X-MTE-Relay-Request-Id`,Rt=`X-MTE-Relay-Route`,zt=`application/octet-stream`;function Bt(e){return ce(e)}var Vt={surface:`passthrough`,surface_security:`passthrough`,replace_pair:`replace-pair`,full_repair:`full-repair`,back_off:`backoff`,back_off_not_owner:`backoff`,retry_once_then_replace:`retry`,retry_same:`retry`,reconnect:`replace-pair`,stop:`stop`};function Ht(e,t=``){return T(e,t)}function Ut(e,t=``){return Vt[T(e,t)]}function Wt(e,t=``){return T(e,t)===`full_repair`}var L=class extends Error{name=`MteRelayError`;requestId;code;reason;relayMessage;relayCause;retryAfterMs;action;pairId;repaired;pairReplaced;constructor(e,t,n={}){let r=n.message??``;super(`MTE relay error ${e} ${t}${r?`: ${r}`:``}`,n.cause===void 0?void 0:{cause:n.cause}),this.code=e,this.requestId=n.requestId??null,this.reason=t,this.relayMessage=r,this.relayCause=n.cause,this.retryAfterMs=n.retryAfterMs??0,this.action=T(e,t),this.pairId=n.pairId??null,this.repaired=n.repaired??!1,this.pairReplaced=n.pairReplaced??!1}get statusCode(){return this.code}get responseText(){return this.relayMessage}},Gt=L,R=class extends Error{name=`MteRelayTransportError`;requestId;status;detail;pairReplaced;repaired;constructor(e,t={}){super(`MTE relay transport error (HTTP ${t.status??0}): ${e}`,t.cause===void 0?void 0:{cause:t.cause}),this.status=t.status??0,this.requestId=t.requestId??null,this.detail=e,this.pairReplaced=t.pairReplaced??!1,this.repaired=t.repaired??!1}get statusCode(){return this.status}},Kt=R,z=class extends Error{name=`MteRelaySetupError`;constructor(e,t){super(e,t)}},B=class extends Error{type=`request-too-large`;size;limit;constructor(e,t){super(`MTE relay request body is ${e} bytes; the relay accepts at most ${t} bytes. Nothing was sent.`),this.name=`MteRelayRequestTooLargeError`,this.size=e,this.limit=t}},qt=class extends Error{type=`capacity-exhausted`;maxPairs;constructor(e){super(`MTE relay pair pool exhausted (maxPairs=${e}). No encoder or decoder is available.`),this.name=`MteRelayCapacityError`,this.maxPairs=e}};function Jt(e){let t=e.get(`Retry-After`);if(t===null)return 0;let n=Number.parseInt(t.trim(),10);return Number.isFinite(n)&&n>0?n*1e3:0}function Yt(e,t,n){if(!ce(e))return null;let r=Jt(t),i=t.get(I);if(n!==null&&n.length>=12)try{let t=It(n,0);if(t.header.kind===a.ERROR){let n=be(t.payload);if(n.code===e)return new L(e,n.reason,{message:n.message,cause:n.cause,retryAfterMs:r,requestId:i})}}catch{}let o=t.get(Lt);if(o!==null){let t=/^\s*(\d{3})\s+([a-z][a-z0-9_]*)\s*$/.exec(o);if(t!==null&&Number.parseInt(t[1],10)===e&&de(t[2]))return new L(e,t[2],{message:`body stripped; reason from header`,retryAfterMs:r,requestId:i})}return null}function Xt(e){return le(e)?`HTTP ${e} is a generation 5 relay error (${ue(e)}). This client speaks frame version 2 and needs a generation 6 relay.`:null}var Zt=500,Qt=5e3;function $t(e=0){let t=e>0?e:Zt;t>Qt&&(t=Qt);let n=new Uint8Array(1);return crypto.getRandomValues(n),t+Math.floor(t*n[0]/512)}function V(e){return new Promise(t=>{setTimeout(t,e)})}var en={HTTP:`http`,KEEPALIVE:`keepalive`,PLAIN_HEADERS:`plain-headers`,BROWSER_COOKIES:`browser-cookies`,PASS_THROUGH:`pass-through`,RELAY_ERROR_HEADER:`relay-error-header`,OWNER_MODE:`owner-mode`,WS:`ws`};function tn(e,t){return e.features?.includes(t)??!1}function nn(e){return typeof e==`number`&&Number.isFinite(e)?e:void 0}function H(e){let t=nn(e);return t!==void 0&&Number.isInteger(t)&&t>=0?t:void 0}function rn(e){return typeof e==`boolean`?e:void 0}function U(e){return typeof e==`string`?e:void 0}function W(e){if(Array.isArray(e))return e.filter(e=>typeof e==`string`)}function an(e){if(Array.isArray(e))return e.filter(e=>typeof e==`number`&&Number.isInteger(e))}function on(e){if(typeof e!=`object`||!e)return{};let t=e,n={},r=(e,t)=>{t!==void 0&&(n[e]=t)};r(`discoverySchema`,H(t.discoverySchema)),r(`buildVersion`,U(t.buildVersion)),r(`frameVersions`,an(t.frameVersions)),r(`deprecatedFrameVersions`,an(t.deprecatedFrameVersions)),r(`features`,W(t.features)),r(`mteProfile`,U(t.mteProfile));let i=nn(t.kyberStrength);(i===512||i===768||i===1024)&&(n.kyberStrength=i);let a=nn(t.sequenceWindow);a!==void 0&&Number.isInteger(a)&&(n.sequenceWindow=a);let o=H(t.timeWindow);o!==void 0&&o>0&&(n.timeWindow=o),r(`maxFrameBytes`,H(t.maxFrameBytes)),r(`maxMessageBytes`,H(t.maxMessageBytes));let s=t.maxMetadataBytes;if(typeof s==`object`&&s){let e=s,t=H(e.MKE),r=H(e.MTE);(t!==void 0||r!==void 0)&&(n.maxMetadataBytes={MKE:t,MTE:r})}return r(`maxPairsPerBatch`,H(t.maxPairsPerBatch)),r(`maxPairsPerClient`,H(t.maxPairsPerClient)),r(`maxPairBytes`,H(t.maxPairBytes)),r(`maxPairSeconds`,H(t.maxPairSeconds)),r(`sessionTimeoutSeconds`,H(t.sessionTimeoutSeconds)),r(`tokenMaxAgeSeconds`,H(t.tokenMaxAgeSeconds)),r(`ownerSeconds`,H(t.ownerSeconds)),r(`maxRequestBodyBytes`,H(t.maxRequestBodyBytes)),r(`transports`,W(t.transports)),r(`stateMode`,U(t.stateMode)),r(`routeHeader`,U(t.routeHeader)),r(`passThroughRoutes`,W(t.passThroughRoutes)),r(`forwardPlainHeaders`,W(t.forwardPlainHeaders)),r(`forwardBrowserCookies`,rn(t.forwardBrowserCookies)),n}function sn(e){let t=new Map;for(let n of e.split(`;`)){let e=n.indexOf(`=`);if(e===-1){t.set(`mte`,n);continue}t.set(n.slice(0,e),n.slice(e+1))}return t}var cn=[`mte`,`tok`,`drbg`,`cipher`,`hash`,`verifiers`,`kyber`];function ln(e,t){let n=sn(e),r=sn(t),i=[];for(let e of cn){let t=n.get(e),a=r.get(e);t===void 0||a===void 0||t!==a&&i.push(e)}let a=n.get(`probe`)??``,o=r.get(`probe`)??``;return{mismatched:i,probeDiffers:a!==o,serverProbe:a,clientProbe:o}}function un(e,t,n){let r=[],i=e.frameVersions??[];if(!i.includes(2))throw new z(`The relay does not speak frame version 2. It advertises [${i.join(`, `)}]; this client speaks [2]. Upgrade the relay to generation 6 (mte-relay 6.0 or later).`);if(e.deprecatedFrameVersions?.includes(2)&&r.push({key:`frame-version-deprecated`,message:`The relay lists frame version 2 as deprecated. Plan an engine upgrade.`}),e.mteProfile!==void 0&&e.mteProfile!==``){let n=ln(e.mteProfile,t);if(n.mismatched.length>0)throw new z(`mteProfile mismatch on ${n.mismatched.join(`, `)}. The relay reports "${e.mteProfile}" and this client is "${t}"; the two MTE library builds cannot interoperate.`);n.probeDiffers&&r.push({key:`mte-profile-probe`,message:`The relay's mteProfile probe is ${n.serverProbe} and this client's is ${n.clientProbe}. Every settings field agrees, so pairing proceeds: a browser links the MTE client build and a relay serving browsers links the server build, and those two produce different probe bytes by design.`})}if(e.kyberStrength!==void 0&&e.kyberStrength!==n)throw new z(`kyberStrength mismatch: the relay reports ${e.kyberStrength} and this client uses ${n}.`);if(e.sequenceWindow!==void 0){let t=e.sequenceWindow;if(t<-63||t>65535)throw new z(`The relay's sequenceWindow ${t} is outside the range the MTE library accepts (-63 to ${vt}).`)}return{warnings:r}}function dn(e){return{sequenceWindow:e.sequenceWindow,timeWindow:e.timeWindow,maxFrameBytes:1048576,maxMetadataBytes:{...De},maxPairsPerBatch:100,maxPairsPerClient:200,sessionTimeoutSeconds:7200,tokenMaxAgeSeconds:86400,maxRequestBodyBytes:0,ownerSeconds:0}}function fn(e,t){let n=dn(e);return t.sequenceWindow!==void 0&&(n.sequenceWindow=t.sequenceWindow),t.timeWindow!==void 0&&t.timeWindow>0&&(n.timeWindow=t.timeWindow),t.maxFrameBytes!==void 0&&t.maxFrameBytes>=4096&&(n.maxFrameBytes=t.maxFrameBytes),t.maxMetadataBytes?.MKE&&(n.maxMetadataBytes.MKE=t.maxMetadataBytes.MKE),t.maxMetadataBytes?.MTE&&(n.maxMetadataBytes.MTE=t.maxMetadataBytes.MTE),t.maxPairsPerBatch&&(n.maxPairsPerBatch=t.maxPairsPerBatch),t.maxPairsPerClient&&(n.maxPairsPerClient=t.maxPairsPerClient),t.sessionTimeoutSeconds&&(n.sessionTimeoutSeconds=t.sessionTimeoutSeconds),t.tokenMaxAgeSeconds&&(n.tokenMaxAgeSeconds=t.tokenMaxAgeSeconds),t.maxRequestBodyBytes!==void 0&&(n.maxRequestBodyBytes=t.maxRequestBodyBytes),t.ownerSeconds&&(n.ownerSeconds=t.ownerSeconds),n}function pn(e,t){let n=[];return t.sequenceWindow!==void 0&&t.sequenceWindow!==e.sequenceWindow&&n.push(`sequenceWindow`),t.timeWindow!==void 0&&t.timeWindow>0&&t.timeWindow!==e.timeWindow&&n.push(`timeWindow`),t.maxFrameBytes!==void 0&&t.maxFrameBytes>=4096&&t.maxFrameBytes!==e.maxFrameBytes&&n.push(`maxFrameBytes`),t.maxMetadataBytes?.MKE&&t.maxMetadataBytes.MKE!==e.maxMetadataBytes.MKE&&n.push(`maxMetadataBytes.MKE`),t.maxMetadataBytes?.MTE&&t.maxMetadataBytes.MTE!==e.maxMetadataBytes.MTE&&n.push(`maxMetadataBytes.MTE`),n}function mn(e,t,n){return Math.min(Math.max(e,t),n)}function hn(e,t){let n=[],r=e.maxPairs;t.maxPairsPerClient>0&&r>t.maxPairsPerClient&&(n.push({key:`max-pairs-clamped`,message:`maxPairs ${r} is above the relay's maxPairsPerClient ${t.maxPairsPerClient}; the pool is clamped to ${t.maxPairsPerClient}.`}),r=t.maxPairsPerClient);let i=Math.min(e.minPairs,r),a=mn(e.initialPairs,1,r),o=e.keepAliveIntervalMs;!e.hasExplicitKeepAliveInterval&&t.sessionTimeoutSeconds>0&&(o=mn(Math.floor(t.sessionTimeoutSeconds*1e3/3),mt,ht));let s=e.sequenceWindow;return e.hasExplicitSequenceWindow&&t.sequenceWindow!==s&&n.push({key:`sequence-window-adopted`,message:`The relay's sequenceWindow is ${t.sequenceWindow} and the configured value is ${s}. Both sides must agree, so the relay's value is used.`}),s=t.sequenceWindow,{tuning:{minPairs:i,initialPairs:a,maxPairs:r,sequenceWindow:s,keepAliveIntervalMs:o},warnings:n}}function gn(e,t){if(t===void 0||t.length===0)return!1;for(let n of t)if(n!==``){if(n.endsWith(`*`)){if(e.startsWith(n.slice(0,-1)))return!0;continue}if(e===n)return!0}return!1}function _n(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function vn(e){if(e===void 0)return null;let t=new Set,n=[];for(let r of e){let e=r.trim().toLowerCase();if(e!==``){if(e===`*`)return()=>!0;if(e.includes(`*`)){n.push(RegExp(`^${e.split(`*`).map(_n).join(`.*`)}$`));continue}t.add(e)}}return e=>{let r=e.toLowerCase();return t.has(r)?!0:n.some(e=>e.test(r))}}function yn(e){if(e===null)return{all:!1,names:new Set};let t=new Set;for(let n of e.split(`,`)){let e=n.trim().toLowerCase();if(e===`*`)return{all:!0,names:new Set};e!==``&&t.add(e)}return{all:!1,names:t}}var bn=n.MteKyberStrength.K1024,xn=new Map,G=null;function Sn(e){if(!e.companyName.trim())throw Error(`MTE bootstrap requires companyName.`);if(!e.licenseKey.trim())throw Error(`MTE bootstrap requires licenseKey.`)}function Cn(e){return JSON.stringify({companyName:e.companyName,licenseKey:e.licenseKey,kyberStrength:bn})}function wn(e){Sn(e);let t=Cn(e);if(G!==null&&G!==t)throw Error(`MTE bootstrap options conflict with existing initialized context. Use one consistent bootstrap configuration per runtime instance.`);let r=xn.get(t);if(r)return r;let i=(async()=>{let t=new n.MteWasm;try{await t.instantiate()}catch(t){throw P(`WASM instantiate failed`,{bootstrap:N(e)},t),t}let r=new n.MteBase(t),i;try{i=r.initLicense(e.companyName,e.licenseKey)}catch(t){throw P(`MTE license initialization threw`,{bootstrap:N(e)},t),t}finally{r.destructBase()}if(!i)throw P(`MTE license initialization returned false`,{bootstrap:N(e)}),Error(`MTE license initialization failed. Verify companyName and licenseKey values.`);let a={wasm:t,kyberStrength:bn};return P(`MTE bootstrap initialized`,{bootstrap:N(e),context:jt(a)},void 0,`info`),a})().catch(e=>{throw xn.delete(t),G=null,e});return G=t,xn.set(t,i),i}var Tn=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,En=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_`,Dn=61,K=class extends Error{constructor(e){super(e),this.name=`Base64Error`}};function On(e){let t=new Int8Array(128).fill(-1);for(let n=0;n<e.length;n+=1)t[e.charCodeAt(n)]=n;return t}var kn=On(Tn),An=On(En);function jn(e,t,n){let r=e.length-e.length%3,i=``;for(let n=0;n<r;n+=3){let r=e[n]<<16|e[n+1]<<8|e[n+2];i+=t[r>>>18&63]+t[r>>>12&63]+t[r>>>6&63]+t[r&63]}let a=e.length-r;if(a===1){let a=e[r]<<16;i+=t[a>>>18&63]+t[a>>>12&63],n&&(i+=`==`)}else if(a===2){let a=e[r]<<16|e[r+1]<<8;i+=t[a>>>18&63]+t[a>>>12&63]+t[a>>>6&63],n&&(i+=`=`)}return i}function q(e,t,n,r){let i=e.charCodeAt(t),a=i<128?n[i]:-1;if(a<0)throw new K(`${r}: character ${JSON.stringify(e[t])} at offset ${t} is not in the alphabet`);return a}function Mn(e,t,n){let r=e.length;if(r>0&&e.charCodeAt(r-1)===Dn&&(--r,r>0&&e.charCodeAt(r-1)===Dn&&--r,e.length%4!=0))throw new K(`${n}: padded text is ${e.length} characters, which is not a multiple of 4`);let i=r%4;if(i===1)throw new K(`${n}: ${r} characters cannot end a base64 group`);let a=new Uint8Array((r-i)/4*3+(i===0?0:i-1)),o=0,s=0;for(;s+4<=r;s+=4){let r=q(e,s,t,n),i=q(e,s+1,t,n),c=q(e,s+2,t,n),l=q(e,s+3,t,n);a[o]=r<<2|i>>>4,a[o+1]=(i&15)<<4|c>>>2,a[o+2]=(c&3)<<6|l,o+=3}if(i===2){let r=q(e,s,t,n),i=q(e,s+1,t,n);if(i&15)throw new K(`${n}: unused bits at offset ${s+1} are not zero`);a[o]=r<<2|i>>>4}else if(i===3){let r=q(e,s,t,n),i=q(e,s+1,t,n),c=q(e,s+2,t,n);if(c&3)throw new K(`${n}: unused bits at offset ${s+2} are not zero`);a[o]=r<<2|i>>>4,a[o+1]=(i&15)<<4|c>>>2}return a}function Nn(e){return jn(e,En,!1)}function Pn(e){return Mn(e,An,`base64url`)}function Fn(e){return jn(e,Tn,!0)}function In(e){return Mn(e,kn,`base64`)}BigInt(2**53-1);var Ln=`0123456789abcdef`,Rn=class extends Error{constructor(e){super(e),this.name=`TokenError`}};function zn(e){if(e.length!==40)throw new Rn(`client token is ${e.length} bytes, expected 40`)}function Bn(e){let t;try{t=Pn(e)}catch(e){throw e instanceof K?new Rn(`client token is not base64url: ${e.message}`):e}return zn(t),t}function Vn(e){zn(e);let t=``;for(let n=0;n<16;n+=1)t+=Ln[e[n]>>>4]+Ln[e[n]&15];return t}function J(e,t,n){let r=new AbortController,i=setTimeout(()=>{r.abort(Error(t))},e),a=()=>{clearTimeout(i)};return n?typeof AbortSignal.any==`function`?{signal:AbortSignal.any([r.signal,n]),clear:a}:(n.aborted?r.abort(n.reason):n.addEventListener(`abort`,()=>{r.abort(n.reason)},{once:!0}),{signal:r.signal,clear:a}):{signal:r.signal,clear:a}}var Hn=65536;function Un(e){let t=new Headers;return e&&t.set(Rt,e),t}async function Wn(e,t){let n=await e.arrayBuffer(),r=new Uint8Array(n);return r.length>t?r.subarray(0,t):r}async function Gn(e,t){let n=null;try{n=await Wn(e,Hn)}catch{n=null}let r=Yt(e.status,e.headers,n);return r===null?new R(Xt(e.status)??`${t} answered ${e.status} with a body that is not an ERROR frame`,{status:e.status,requestId:e.headers.get(I)}):r}async function Kn(e){let t=new URL(e.path,e.relayOrigin);for(let[n,r]of Object.entries(e.query??{}))t.searchParams.set(n,r);let n=J(e.timeoutMs,`${e.path} timed out.`,e.signal),r=await fetch(t.toString(),{method:`GET`,headers:Un(e.clientIdHex),credentials:e.credentials,signal:n.signal}).finally(()=>{n.clear()});if(!r.ok)throw await Gn(r,e.path);return{status:r.status,headers:r.headers,body:await r.json()}}async function qn(e){let t=new URL(e.path,e.relayOrigin),n=Un(e.clientIdHex);n.set(`Content-Type`,`application/json`);let r=J(e.timeoutMs,`${e.path} timed out.`,e.signal),i=await fetch(t.toString(),{method:`POST`,headers:n,credentials:e.credentials,body:JSON.stringify(e.payload),signal:r.signal}).finally(()=>{r.clear()});if(!i.ok)throw await Gn(i,e.path);let a=await i.text();return{status:i.status,headers:i.headers,body:a.length>0?JSON.parse(a):null}}function Jn(e){let t=new Uint8Array(e.byteLength);return t.set(e),t.buffer}async function Yn(e){let t=new URL(`/`,e.relayOrigin).toString(),n=new Headers(e.plainHeaders??{});n.set(`Content-Type`,zt),n.set(Rt,e.clientIdHex);let r=J(e.timeoutMs,`Relay request timed out.`,e.signal),{frames:i}=e,a={method:`POST`,headers:n,credentials:e.credentials,body:i instanceof Uint8Array?Jn(i):i,signal:r.signal};return Xn(i)&&(a.duplex=`half`),fetch(t,a).finally(()=>{r.clear()})}function Xn(e){return typeof ReadableStream==`function`&&e instanceof ReadableStream}var Zn=class{reader;frames;closed=!1;constructor(e,t){this.reader=e.getReader(),this.frames=new Ft({maxFrameBytes:t,transport:`http`})}get done(){return this.frames.done}async next(){for(;;){let e=this.frames.next();if(e!==null)return e;if(this.frames.done)return null;let{value:t,done:n}=await this.reader.read();if(n)return this.closed=!0,this.frames.end(),null;t!==void 0&&t.length>0&&this.frames.push(t)}}async cancel(e){if(!this.closed){this.closed=!0;try{await this.reader.cancel(e)}catch{}}}};async function Qn(e){try{return await Wn(e,Hn)}catch{return null}}async function $n(e){let t={frameVersions:`2`},n=e.existingClientId?.trim();n&&(t.clientId=n);let r=(await Kn({relayOrigin:e.relayOrigin,path:`/api/mte-relay`,timeoutMs:e.timeoutMs,credentials:e.credentials,clientIdHex:e.clientIdHex,signal:e.signal,query:t})).body??{};if(typeof r.clientId!=`string`||r.clientId.length===0)throw new z(`The relay's auth response is missing a clientId token.`);let i;try{i=Bn(r.clientId)}catch(e){throw new z(`The relay's auth response carries a token this client cannot read: ${e instanceof Error?e.message:String(e)}`,{cause:e})}return{clientId:r.clientId,token:i,clientIdHex:Vn(i),relay:on(r.relay)}}function er(e){return typeof e==`number`&&Number.isFinite(e)?e:null}async function tr(e){let t={clientId:e.clientId};e.drop.length>0&&(t.drop=e.drop);try{let n=await qn({relayOrigin:e.relayOrigin,path:`/api/mte-keepalive`,timeoutMs:e.timeoutMs,credentials:e.credentials,clientIdHex:e.clientIdHex,signal:e.signal,payload:t});return{result:`ok`,statusCode:n.status,reason:null,touched:er(n.body?.touched),dropped:er(n.body?.dropped),droppedIds:e.drop,detail:null}}catch(e){return e instanceof L?{result:e.code===475?`invalid-client`:`transient-failure`,statusCode:e.code,reason:e.reason,touched:null,dropped:null,droppedIds:[],detail:e.relayMessage}:{result:`transient-failure`,statusCode:null,reason:null,touched:null,dropped:null,droppedIds:[],detail:e instanceof Error?e.message:String(e)}}}var nr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),rr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);function Y(e,t){return e>>>t|e<<32-t}function ir(e){let t=e.length*8,n=new Uint8Array((e.length+8>>6)*64+64);n.set(e),n[e.length]=128;let r=new DataView(n.buffer);r.setUint32(n.length-8,Math.floor(t/4294967296),!1),r.setUint32(n.length-4,t>>>0,!1);let i=rr.slice(),a=new Uint32Array(64),o=new DataView(n.buffer);for(let e=0;e<n.length;e+=64){for(let t=0;t<16;t+=1)a[t]=o.getUint32(e+t*4,!1);for(let e=16;e<64;e+=1){let t=Y(a[e-15],7)^Y(a[e-15],18)^a[e-15]>>>3,n=Y(a[e-2],17)^Y(a[e-2],19)^a[e-2]>>>10;a[e]=a[e-16]+t+a[e-7]+n>>>0}let[t,n,r,s,c,l,u,d]=i;for(let e=0;e<64;e+=1){let i=Y(c,6)^Y(c,11)^Y(c,25),o=c&l^~c&u,f=d+i+o+nr[e]+a[e]>>>0,p=(Y(t,2)^Y(t,13)^Y(t,22))+(t&n^t&r^n&r)>>>0;d=u,u=l,l=c,c=s+f>>>0,s=r,r=n,n=t,t=f+p>>>0}i[0]=i[0]+t>>>0,i[1]=i[1]+n>>>0,i[2]=i[2]+r>>>0,i[3]=i[3]+s>>>0,i[4]=i[4]+c>>>0,i[5]=i[5]+l>>>0,i[6]=i[6]+u>>>0,i[7]=i[7]+d>>>0}let s=new Uint8Array(32),c=new DataView(s.buffer);for(let e=0;e<8;e+=1)c.setUint32(e*4,i[e],!1);return s}function ar(e){return Array.from(ir(e),e=>e.toString(16).padStart(2,`0`)).join(``)}function or(e,t=8){return ar(e).slice(0,t*2)}var sr=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]),cr=`1`,lr=`mte-relay/2/probe`,ur=new TextEncoder().encode(`mte-relay/2/probe`),dr=2,fr=`error`,pr=new WeakMap;function mr(e){let t=e.reduce((e,t)=>e+t.length,0),n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function hr(e){let t=null;try{if(t=n.MteMkeEnc.fromdefault(e),t.setEntropyArr(sr.slice()),t.setNonce(cr),t.instantiate(lr)!==n.MteStatus.mte_status_success)return fr;let r=[];for(let e=0;e<dr;e+=1){let e=t.encode(ur);if(e.status!==n.MteStatus.mte_status_success||e.arr===null)return fr;r.push(e.arr)}return or(mr(r))}catch{return fr}finally{if(t!==null){try{t.uninstantiate()}catch{}t.destruct()}}}function gr(e,t){let r=pr.get(e);r===void 0&&(r=new Map,pr.set(e,r));let i=r.get(t);if(i!==void 0)return i;let a=new n.MteBase(e),o;try{o=[`mte/${a.getVersion()}`,`tok=${a.getDefaultTokBytes()}`,`drbg=${a.getDrbgsName(a.getDefaultDrbg())}`,`cipher=${a.getCiphersName(a.getDefaultCipher())}`,`hash=${a.getHashesName(a.getDefaultHash())}`,`verifiers=${a.getVerifiersName(a.getDefaultVerifiers())}`,`kyber=${t}`,`probe=${hr(e)}`].join(`;`)}finally{a.destructBase()}return r.set(t,o),o}var _r=1024;function vr(e){return`mte-relay/2/${e}/`}var yr=16;function br(e,t){let n=new Uint8Array(yr);crypto.getRandomValues(n);let r=xr(n),i=vr(e);return Sr(t?`${i}${r}/${t}`:`${i}${r}`,_r)}function xr(e){let t=``;for(let n of e)t+=String.fromCharCode(n);return btoa(t).replace(/\+/g,`-`).replace(/\//g,`_`).replace(/=+$/,``)}function Sr(e,t){if(A(e)<=t)return e;let n=0,r=``;for(let i of e){let e=A(i);if(n+e>t)break;n+=e,r+=i}return r}var Cr=`http`;vr(Cr);var wr=`0123456789abcdef`;function Tr(e){let t=``;for(let n of e)t+=wr[n>>>4]+wr[n&15];return t}function Er(e){let t=new Uint8Array(e);return crypto.getRandomValues(t),t}function Dr(e){return br(Cr,e)}function Or(e){return e===0?`success`:`status=${e}`}function kr(e,t){if(e!==n.MteStatus.mte_status_success)throw Error(`${t} failed with ${Or(e)}.`)}function X(e,t){if(e!==n.MteKyberStatus.success)throw Error(`${t} failed with ${Or(e)}.`)}function Ar(e){if(!/^\d+$/.test(e))throw Error(`Nonce must be an unsigned integer string. Received: ${e}.`);if(BigInt(e)>9223372036854775807n)throw Error(`Nonce exceeds the spec's signed 64 bit range (${e.length} digits); the server must clear the MSB at generation.`);return e}function jr(e,t){return t===`MKE`?n.MteMkeEnc.fromdefault(e.wasm):n.MteEnc.fromdefault(e.wasm)}function Mr(e,t,r,i){return t===`MKE`?n.MteMkeDec.fromdefault(e.wasm,i,r):n.MteDec.fromdefault(e.wasm,0,r)}function Nr(e,t,r,i){let a=[],o=new Map;for(let s=0;s<i;s+=1){let i=Er(16),c=Nn(i),l=Tr(i),u=Dr(t),d=Dr(t),f=new n.MteKyber(e.wasm,e.kyberStrength),p=new n.MteKyber(e.wasm,e.kyberStrength),m=f.createKeypair(),h=p.createKeypair();if(X(m.status,`Kyber encoder keypair ${s}`),X(h.status,`Kyber decoder keypair ${s}`),m.result1===null||h.result1===null)throw Error(`Kyber keypair results missing for pair ${s}.`);a.push({pairId:c,encoderPublicKey:Fn(m.result1),encoderPersonalizationStr:u,decoderPublicKey:Fn(h.result1),decoderPersonalizationStr:d,mteProfile:r,kyberStrength:e.kyberStrength,frameVersion:2}),o.set(c,{raw:i,pairIdB64:c,pairIdHex:l,encoderPersonalizationStr:u,decoderPersonalizationStr:d,encoderKyber:f,decoderKyber:p})}return{items:a,seeds:o}}function Pr(e){for(let t of e.values())t.encoderKyber.destruct(),t.decoderKyber.destruct()}function Fr(e,t){if(typeof e!=`object`||!e)throw Error(`Pairing response item at index ${t} must be an object.`);let n=e;for(let e of[`pairId`,`encoderNonce`,`encoderSecret`,`decoderNonce`,`decoderSecret`])if(typeof n[e]!=`string`||n[e]===``)throw Error(`Pairing response item at index ${t} has invalid ${e}.`);return{pairId:n.pairId,encoderNonce:n.encoderNonce,encoderSecret:n.encoderSecret,decoderNonce:n.decoderNonce,decoderSecret:n.decoderSecret}}async function Ir(e,t){let n=e.clientId;for(let r=0;;r+=1){let i={clientId:n,pairs:t};try{let t=await qn({relayOrigin:e.relayOrigin,path:`/api/mte-pair`,timeoutMs:e.config.httpTimeoutMs,credentials:e.config.credentials,clientIdHex:e.clientIdHex,signal:e.signal,payload:i});if(!Array.isArray(t.body))throw Error(`Pairing response must be an array.`);return t.body.map(Fr)}catch(t){if(!(t instanceof L)||r>=2)throw t;if(t.code===C.INVALID_REQUEST&&t.reason===w.PROFILE_MISMATCH)throw new z(`The relay refused this client's mteProfile: ${t.relayMessage||`profile_mismatch`}. The MTE library builds differ on a settings field.`,{cause:t});if(t.code===C.FRAME_VERSION_UNSUPPORTED||t.code===C.INVALID_REQUEST&&(t.reason===w.PAIR_EXISTS||t.reason===w.INVALID_REQUEST))throw t;if(t.code===C.LIMIT){await e.backOff?.(t.retryAfterMs);continue}if(t.code===C.INVALID_CLIENT_ID&&t.reason===w.INVALID_TOKEN&&e.refreshToken!==void 0){n=await e.refreshToken();continue}if(t.code===C.INVALID_REQUEST&&t.reason===w.PAIR_LIMIT&&r===0&&e.flushDropList!==void 0){await e.flushDropList();continue}throw t}}}async function Lr(e){let t=new URL(e.relayOrigin).host,{items:r,seeds:i}=Nr(e.bootstrap,t,e.profile,e.count);try{let t=await Ir(e,r);if(t.length!==r.length)throw Error(`Pairing response count mismatch. Expected ${r.length}, got ${t.length}.`);let a=[],o=new Set;for(let r of t){if(o.has(r.pairId))throw Error(`Pairing response contains duplicate pairId ${r.pairId}.`);o.add(r.pairId);let t=i.get(r.pairId);if(t===void 0)throw Error(`Pairing response contains unknown pairId ${r.pairId}.`);let s=t.encoderKyber.decryptSecret(In(r.decoderSecret)),c=t.decoderKyber.decryptSecret(In(r.encoderSecret));if(X(s.status,`Decrypt decoderSecret for pair ${t.pairIdHex}`),X(c.status,`Decrypt encoderSecret for pair ${t.pairIdHex}`),s.result1===null||c.result1===null)throw Error(`Pair ${t.pairIdHex} decryption returned empty entropy.`);let l=Ar(r.decoderNonce),u=Ar(r.encoderNonce),d=jr(e.bootstrap,e.encodeType),f=Mr(e.bootstrap,e.encodeType,e.sequenceWindow,e.timeWindow);try{d.setEntropyArr(s.result1),d.setNonce(l),kr(d.instantiate(t.encoderPersonalizationStr),`Instantiate ${e.encodeType} encoder for pair ${t.pairIdHex}`),f.setEntropyArr(c.result1),f.setNonce(u),kr(f.instantiate(t.decoderPersonalizationStr),`Instantiate ${e.encodeType} decoder for pair ${t.pairIdHex}`)}catch(n){throw d.destruct(),f.destruct(),P(`Pair instantiation failed`,{pairId:t.pairIdHex,encodeType:e.encodeType,sequenceWindow:e.sequenceWindow,encoderPersonalizationLength:t.encoderPersonalizationStr.length,decoderPersonalizationLength:t.decoderPersonalizationStr.length},n),n}n.MteKyber.zeroize(s.result1),n.MteKyber.zeroize(c.result1),a.push({pairId:t.pairIdHex,pairIdB64:t.pairIdB64,raw:t.raw,encoder:d,decoder:f,encodeType:e.encodeType,replays:0,retired:!1})}return a}finally{Pr(i)}}var Rr=250,zr=3e4,Br=.9;function Vr(e,t){let r=e.decode(t);if(r.status!==n.MteStatus.mte_status_success||r.arr===null)throw Error(`MTE decode failed with status ${r.status}.`);return r.arr}function Hr(e,t){let r=e.encode(t);if(r.status!==n.MteStatus.mte_status_success||r.arr===null)throw Error(`MTE encode failed with status ${r.status}.`);return r.arr}function Ur(e){for(let t of[e.encoder,e.decoder]){try{t.uninstantiate()}catch{}try{t.destruct()}catch{}}}var Wr=class{relayOrigin;encodeType;config;bootstrap;discovery={};bounds;tuning;profile=``;tokenText=null;tokenRaw=null;clientIdHexValue=``;boundsAdopted=!1;pairs=new Map;reserved=new Set;order=[];cursor=0;pendingCreations=0;waiters=[];droppedIds=[];setupPromise=null;ready=!1;repairPromise=null;lastRepairAt=0;refillPromise=null;keepAliveTimer=null;requestCounter=0;closed=!1;onWarning;onPoolEvent;constructor(e){this.relayOrigin=e.relayOrigin,this.encodeType=e.encodeType,this.config=e.config,this.bootstrap=e.bootstrap,this.onWarning=e.onWarning,this.onPoolEvent=e.onPoolEvent,this.bounds=dn(e.config),this.tuning=hn(e.config,this.bounds).tuning}get clientIdHex(){return this.clientIdHexValue}get token(){if(this.tokenRaw===null)throw new z(`This relay session is not authenticated.`);return this.tokenRaw}get isReady(){return this.ready}snapshot(){return{initialized:this.ready&&this.pairs.size>0,clientId:this.tokenText,pairCount:this.pairs.size,requestCounter:this.requestCounter}}countRequest(){this.requestCounter+=1}noteStream(e){this.emit(e)}emit(e){if(this.onPoolEvent!==null)try{this.onPoolEvent({type:e,relayOrigin:this.relayOrigin,encodeType:this.encodeType,totalPairs:this.pairs.size,idlePairs:this.pairs.size-this.reserved.size,reservedPairs:this.reserved.size,maxPairs:this.tuning.maxPairs,minPairs:this.tuning.minPairs})}catch{}}async ensureReady(){this.repairPromise!==null&&await this.repairPromise,!this.ready&&(this.setupPromise===null&&(this.setupPromise=this.setup().finally(()=>{this.setupPromise=null})),await this.setupPromise)}async setup(){if(this.profile=gr(this.bootstrap.wasm,this.bootstrap.kyberStrength),this.profile.endsWith(`;probe=error`))throw new z(`The MTE library could not run the profile probe. Check that the license initialized before the client was created.`);await this.runAuth();let e=Math.max(1,Math.min(this.tuning.initialPairs,this.tuning.maxPairs));await this.growBy(e),this.ready=!0,this.startKeepAlive(),this.scheduleRefill()}async runAuth(){let e=this.clientIdHexValue,t=await $n({relayOrigin:this.relayOrigin,timeoutMs:this.config.httpTimeoutMs,credentials:this.config.credentials,existingClientId:this.tokenText,clientIdHex:this.clientIdHexValue||null}),n=un(t.relay,this.profile,this.bootstrap.kyberStrength);for(let e of n.warnings)this.onWarning(e);if(this.discovery=t.relay,this.boundsAdopted){let e=pn(this.bounds,t.relay);e.length>0&&this.onWarning({key:`discovery-drift`,message:`The relay reported different bounds (${e.join(`, `)}) than the ones adopted at the first auth. In flight requests read the adopted values, so the new ones are ignored until the client is rebuilt.`})}else{this.bounds=fn(this.config,t.relay),this.boundsAdopted=!0;let e=hn(this.config,this.bounds);this.tuning=e.tuning;for(let t of e.warnings)this.onWarning(t)}this.tokenText=t.clientId,this.tokenRaw=t.token,this.clientIdHexValue=t.clientIdHex,e!==``&&e!==t.clientIdHex&&(this.onWarning({key:`pool-orphaned`,message:`The relay issued a new client id (${e} became ${t.clientIdHex}); every pair under the old id was discarded.`}),this.dropAllPairs())}async acquire(){for(let e=0;e<2;e+=1){let e=this.takeIdle();if(e!==null)return e;if(this.pairs.size+this.pendingCreations<this.tuning.maxPairs){await this.growBy(1);continue}if(!await this.waitForRelease(Rr))break}let e=this.takeIdle();if(e!==null)return e;throw this.emit(`capacity-exhausted`),new qt(this.tuning.maxPairs)}takeIdle(){let e=this.order.length;for(let t=0;t<e;t+=1){let n=this.order[(this.cursor+t)%e],r=this.pairs.get(n);if(!(r===void 0||r.retired||this.reserved.has(n)))return this.cursor=(this.cursor+t+1)%e,this.reserved.add(n),r}return null}waitForRelease(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,this.waiters=this.waiters.filter(e=>e!==i),t(e))},i=()=>{clearTimeout(a),r(!0)},a=setTimeout(()=>{r(!1)},e);this.waiters.push(i)})}notifyRelease(){let e=this.waiters;this.waiters=[];for(let t of e)t()}release(e){if(this.reserved.delete(e.pairId)){if(!e.retired&&this.shouldRetire(e)){e.retired=!0,this.onWarning({key:`pair-retired`,message:`Pair ${e.pairId} reached ${Br*100} percent of the DRBG reseed interval and is being replaced.`}),this.dropAndReplace(e.pairId);return}this.notifyRelease(),this.scheduleRefill()}}shouldRetire(e){try{let t=e.encoder.getDrbgsReseedInterval(e.encoder.getDefaultDrbg());if(!Number.isFinite(t)||t<=0)return!1;let n=e.encoder.getReseedCounter()/t,r=e.decoder.getReseedCounter()/t;return Math.max(n,r)>=Br}catch{return!1}}async growBy(e){let t=this.tuning.maxPairs-this.pairs.size-this.pendingCreations,n=Math.min(e,t,this.bounds.maxPairsPerBatch);if(!(n<=0)){this.pendingCreations+=n;try{let e=await Lr({config:this.config,bootstrap:this.bootstrap,relayOrigin:this.relayOrigin,clientId:this.tokenText??``,clientIdHex:this.clientIdHexValue,encodeType:this.encodeType,sequenceWindow:this.tuning.sequenceWindow,timeWindow:this.bounds.timeWindow,count:n,profile:this.profile,refreshToken:async()=>(await this.runAuth(),this.tokenText??``),flushDropList:async()=>{await this.runKeepAliveTick()},backOff:async e=>{await V($t(e))}});for(let t of e)this.pairs.set(t.pairId,t),this.order.push(t.pairId),this.emit(`pair-appended`);this.notifyRelease()}finally{this.pendingCreations-=n}}}scheduleRefill(){if(this.closed||!this.ready||this.refillPromise!==null)return;let e=this.pairs.size-this.reserved.size;if(this.pairs.size>=this.tuning.minPairs&&e>0||this.pairs.size>=this.tuning.maxPairs)return;this.emit(`refill-triggered`);let t=Math.max(1,this.tuning.minPairs-this.pairs.size);this.refillPromise=this.growBy(t).catch(e=>{this.onWarning({key:`refill-failed`,message:`Filling the pair pool toward minPairs failed: ${e instanceof Error?e.message:String(e)}`})}).finally(()=>{this.refillPromise=null})}dropPair(e){let t=this.pairs.get(e);return t===void 0?null:(this.pairs.delete(e),this.order=this.order.filter(t=>t!==e),this.cursor=0,this.reserved.delete(e),this.droppedIds.push(t.pairIdB64),Ur(t),this.emit(`pair-removed`),this.notifyRelease(),t)}async dropAndReplace(e){if(this.dropPair(e)!==null){this.emit(`pair-replaced`);try{await this.growBy(1)}catch(t){this.onWarning({key:`pair-replace-failed`,message:`Replacing pair ${e} failed: ${t instanceof Error?t.message:String(t)}`})}}}replaceInBackground(e){this.dropAndReplace(e)}dropAllPairs(){for(let e of this.pairs.values())this.droppedIds.push(e.pairIdB64),Ur(e);this.pairs.clear(),this.order=[],this.reserved.clear(),this.cursor=0,this.notifyRelease()}async fullRepair(){if(this.repairPromise!==null){await this.repairPromise;return}let e=Date.now()-this.lastRepairAt;if(this.lastRepairAt!==0&&e<zr)throw new z(`Full repair refused: the last one was ${Math.round(e/1e3)} seconds ago and the minimum interval is ${zr/1e3} seconds.`);this.lastRepairAt=Date.now(),this.repairPromise=(async()=>{this.ready=!1,this.dropAllPairs(),this.tokenText=null,this.tokenRaw=null,this.clientIdHexValue=``,await this.runAuth(),await this.growBy(Math.max(1,this.tuning.initialPairs)),this.ready=!0})().finally(()=>{this.repairPromise=null}),await this.repairPromise}async refreshToken(){await this.runAuth()}startKeepAlive(){this.keepAliveTimer===null&&(this.tuning.keepAliveIntervalMs<=0||(this.keepAliveTimer=setInterval(()=>{this.runKeepAliveTick()},this.tuning.keepAliveIntervalMs)))}async runKeepAliveTick(){if(this.closed||this.tokenText===null)return;let e=this.droppedIds.slice(0,this.bounds.maxPairsPerClient),t=await tr({relayOrigin:this.relayOrigin,clientId:this.tokenText,clientIdHex:this.clientIdHexValue,drop:e,timeoutMs:this.config.httpTimeoutMs,credentials:this.config.credentials});if(t.result===`ok`){let e=new Set(t.droppedIds);this.droppedIds=this.droppedIds.filter(t=>!e.has(t));return}if(t.result===`invalid-client`){if(t.reason===`invalid_token`){try{await this.runAuth()}catch(e){this.onWarning({key:`keepalive-refresh-failed`,message:`The keepalive found the token aged and the refresh failed: ${e instanceof Error?e.message:String(e)}`})}return}this.onWarning({key:`keepalive-rejected`,message:`The relay rejected this client's token on keepalive (475 ${t.reason??`unknown`}); the pool was dropped and the next request re authenticates.`}),this.dropAllPairs(),this.tokenText=null,this.tokenRaw=null,this.ready=!1;return}this.onWarning({key:`keepalive-transient`,message:`The keepalive tick failed (${t.statusCode??`no status`}); every pair is kept and the next tick retries.`})}close(){this.closed=!0,this.keepAliveTimer!==null&&(clearInterval(this.keepAliveTimer),this.keepAliveTimer=null),this.dropAllPairs(),this.ready=!1}},Gr=`/api/mte-echo`,Kr=Object.freeze([137,77,84]),qr=null;function Z(){return qr===null&&(qr=Jr()),qr}function Jr(){try{if(typeof Request!=`function`||typeof ReadableStream!=`function`)return!1;let e=!1,t={method:`POST`,body:new ReadableStream,get duplex(){return e=!0,`half`}},n=new Request(`https://example.com/`,t);return e&&!n.headers.has(`Content-Type`)}catch{return!1}}async function Yr(e,t,n){let r=new URL(Gr,e).toString(),i=new ReadableStream({start(e){e.enqueue(new Uint8Array(Kr)),e.close()}}),a=J(n,`The request streaming probe timed out.`);try{let e={method:`POST`,body:i,duplex:`half`,credentials:t,signal:a.signal},n=await fetch(r,e);try{await n.body?.cancel()}catch{}return`verified`}catch{return a.signal.aborted?`unverified`:`unsupported`}finally{a.clear()}}async function Xr(e,t){let n=e.getReader(),r=[];try{for(;;){t?.throwIfAborted();let{value:e,done:i}=await n.read();if(i)break;if(e!==void 0&&e.byteLength>0){let t=new Uint8Array(e.byteLength);t.set(e),r.push(t)}}}catch(e){try{await n.cancel(e)}catch{}throw e}finally{n.releaseLock()}return new Blob(r,{type:`application/octet-stream`})}var Zr=class{reader;chunkBytes;pending=[];pendingBytes=0;sourceDone=!1;finished=!1;constructor(e,t){if(!Number.isInteger(t)||t<=0)throw Error(`chunkBytes must be a positive integer, got ${t}`);this.reader=e,this.chunkBytes=t}async next(){if(this.finished)return null;for(;!this.sourceDone&&this.pendingBytes<=this.chunkBytes;){let{value:e,done:t}=await this.reader.read();if(t){this.sourceDone=!0;break}e!==void 0&&e.byteLength>0&&(this.pending.push(e),this.pendingBytes+=e.byteLength)}return this.pendingBytes>this.chunkBytes?{bytes:this.take(this.chunkBytes),last:!1}:(this.finished=!0,this.reader.releaseLock(),{bytes:this.take(this.pendingBytes),last:!0})}async cancel(e){if(!this.finished){this.finished=!0;try{await this.reader.cancel(e)}catch{}}}take(e){if(e===0)return new Uint8Array;if(this.pending.length===1&&this.pending[0].byteLength===e){let e=this.pending.pop();return this.pendingBytes=0,e}let t=new Uint8Array(e),n=0;for(;n<e;){let r=this.pending[0],i=e-n;r.byteLength<=i?(t.set(r,n),n+=r.byteLength,this.pending.shift()):(t.set(r.subarray(0,i),n),this.pending[0]=r.subarray(i),n+=i)}return this.pendingBytes-=e,t}},Qr=33554432,$r=1e4;function ei(e){return e===null?0:e instanceof Uint8Array?e.byteLength:e.size}function ti(e){let t=e?.body;return typeof ReadableStream==`function`&&t instanceof ReadableStream?t:null}function ni(e){return typeof e==`object`&&!!e&&typeof e.size==`number`&&typeof e.slice==`function`&&typeof e.stream==`function`}function ri(e){return e.transport===`buffer`||ni(e.source)}function ii(e){return e===204||e===205||e===304}function ai(e,t){return e===`MTE`?Math.floor((t-16)/8):t-1024}function oi(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}function si(e){let t=new Uint8Array(e.length);return t.set(e),t}function ci(e){let t=new Map;for(let[n,r]of Object.entries(e))t.set(n.toLowerCase(),[r]);return t}function li(e,t){let n=t.status??200;return new Response(ii(n)?null:e,t)}var ui=class{config;bootstrapOptions;sessions=new Map;bootstrapPromise=null;bootstrapContext=null;visibilityHandler=null;warned=new Set;streamingVerdicts=new Map;streamingProbes=new Map;constructor(e){this.config=Tt(e.config),this.bootstrapOptions=e.bootstrap,this.attachVisibilityHandler(),this.config.streamDiagnostics?.console===!0&&P(`Stream diagnostics enabled`,{maxPreviewBytes:this.config.streamDiagnostics.maxPreviewBytes,emitsConsoleLogs:!0,emitsCallbackEvents:this.config.streamDiagnostics.onEvent!==void 0},void 0,`info`)}async init(){await this.ensureBootstrap()}getStateSnapshot(){if(this.sessions.size===0)return{initialized:!1,clientId:null,pairCount:0,requestCounter:0};let e=0,t=0,n=!0,r=null;for(let i of this.sessions.values()){let a=i.snapshot();e+=a.pairCount,t+=a.requestCounter,n&&=a.initialized,this.sessions.size===1&&(r=a.clientId)}return{initialized:n,clientId:r,pairCount:e,requestCounter:t}}async repair(e){let t=e===void 0?null:new URL(e).origin;for(let e of this.sessions.values())t!==null&&e.relayOrigin!==t||await e.fullRepair()}close(){for(let e of this.sessions.values())e.close();this.sessions.clear(),this.visibilityHandler!==null&&(globalThis.document?.removeEventListener?.(`visibilitychange`,this.visibilityHandler),this.visibilityHandler=null)}async fetch(e,t,n){let r=n?.unencryptedHeaders===void 0?this.config.unencryptedHeaders:it(n.unencryptedHeaders,`unencryptedHeaders`);await this.ensureBootstrap();let i=ti(t),a=new Request(e,i===null?t:{...t,body:null}),o=new URL(a.url,typeof window>`u`?void 0:window.location.href),s=n?.encodeType??this.config.defaultEncodeType,c=this.getOrCreateSession(o.origin,s);if(await c.ensureReady(),tn(c.discovery,en.PASS_THROUGH)&&gn(o.pathname,c.discovery.passThroughRoutes))return fetch(new Request(a,{credentials:t?.credentials??this.config.credentials}));let l=a.method;if(!Te(l))throw new z(`"${l}" is not an RFC 9110 method token, so it cannot travel in the metadata.`);let{encrypted:u,plain:d}=this.splitRequestHeaders(c,a.headers,r),f=await this.planBody(c,a,i,s,n?.requestStreaming);return c.countRequest(),this.send({session:c,method:l,url:o,encrypted:u,plain:d,body:f,encodeType:s,signal:a.signal})}async planBody(e,t,n,r,i){let a=this.config.requestStreaming,o=i??a.enabled;if(n!==null){if(o&&await this.streamingAvailable(e.relayOrigin))return{transport:`stream`,source:n,size:null};let r=await Xr(n,t.signal);return this.checkBodyLimit(e,r.size),this.stagePlan(r)}let s=await t.blob();if(this.checkBodyLimit(e,s.size),s.size===0)return{transport:`buffer`,staged:null,size:0};let c=i===!0?!0:a.minBytes===null?s.size>ai(r,e.bounds.maxFrameBytes):s.size>=a.minBytes;return o&&c&&await this.streamingAvailable(e.relayOrigin)?{transport:`stream`,source:s,size:s.size}:this.stagePlan(s)}async stagePlan(e){return e.size===0?{transport:`buffer`,staged:null,size:0}:e.size>Qr?(this.warnOnce(`large-body`,`A ${Math.round(e.size/1048576)} MB request is staged as blobs and encrypted in bounded batches before upload. Browser blob storage and available resources still limit large uploads. A browser with streamed request bodies over HTTP/2 sends it as it is encrypted instead; see requestStreamingStatus().`),{transport:`buffer`,staged:e,size:e.size}):{transport:`buffer`,staged:new Uint8Array(await e.arrayBuffer()),size:e.size}}async send(e){for(let t=0;;t+=1){let n=await this.attempt(e,t);if(n.kind===`response`)return n.response;if(n.kind===`restage`){if(e.body.transport===`stream`&&ni(e.body.source)){e.body=await this.stagePlan(e.body.source);continue}throw n.error}if(n.kind===`retry`&&t===0&&ri(e.body)){await V(n.delayMs);continue}throw n.error}}async attempt(e,t){let{session:n}=e,r=await n.acquire(),i=!1,o=()=>{i||(i=!0,n.release(r))},s,l=()=>void 0;try{if(e.body.transport===`stream`){let t=this.buildFrameStream(n,r,e,e.body.source);s=t.stream,l=t.failure}else s=await this.buildFrames(n,r,e,e.body.staged)}catch(e){return o(),e instanceof L||e instanceof z||e instanceof B?{kind:`error`,error:e}:(await n.dropAndReplace(r.pairId),{kind:`error`,error:new R(`building the request frames failed: ${e instanceof Error?e.message:String(e)}`,{pairReplaced:!0,cause:e})})}let u;try{u=await Yn({relayOrigin:n.relayOrigin,frames:s,timeoutMs:this.config.httpTimeoutMs,signal:e.signal,plainHeaders:e.plain,credentials:this.config.credentials,clientIdHex:n.clientIdHex})}catch(e){o(),await n.dropAndReplace(r.pairId);let t=l();return{kind:`error`,error:t===void 0?e:t}}if(e.body.transport===`stream`&&u.status===411&&u.headers.get(`X-MTE-Relay-Error`)===null){try{await u.body?.cancel()}catch{}return o(),await n.dropAndReplace(r.pairId),this.recordStreamingVerdict(n.relayOrigin,`unsupported`,`response`),{kind:`restage`,error:this.transportError(u,`the path to the relay answered 411 to a streamed body; streamed uploads are off for this origin`)}}if(Bt(u.status)){let e=await Qn(u);o();let i=Yt(u.status,u.headers,e);return i===null?(await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(u,`a relay status arrived with a body that is not an ERROR frame; an intermediary replaced it`)}):await this.applyAction(n,r,i,t)}if(u.body===null)return o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(u,`the relay answered with no body at all`)};let d=new Zn(u.body,n.bounds.maxFrameBytes),f;try{f=await d.next()}catch(e){return await d.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(u,`the response body is not a frame: ${e instanceof Error?e.message:String(e)}`,e)}}if(f===null)return await d.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(u,`the response body carried no frames`)};if(f.header.kind===a.ERROR){await d.cancel(),o();let e=this.parseErrorFrame(f,u.headers.get(I));return e===null?(await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(u,`a malformed ERROR frame opened the body`)}):await this.applyAction(n,r,e,t)}if(f.header.kind!==a.RESPONSE)return await d.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(u,`the first frame is ${f.header.kind}, not a RESPONSE`)};let p,m;try{let t=tt(f.payload),i=Le(Vr(r.decoder,t.metadata));if(ze(i),i.status!==t.status)throw P(`Security event: header_mismatch`,{pairId:r.pairId,envelopeStatus:t.status,metadataStatus:i.status??null}),Error(`the response metadata status ${i.status??`absent`} does not match the plaintext status ${t.status}`);p=t.status,m=He(i.headers??new Map),this.checkPlainForwarded(n,m,e.plain)}catch(e){return await d.cancel(),o(),await n.dropAndReplace(r.pairId),{kind:`error`,error:this.transportError(u,e instanceof Error?e.message:String(e),e)}}r.replays=0;let h=m.get(`content-type`),g=(f.header.flags&c.END)!==0;return this.emitFrameDiagnostic({session:n,pair:r,outbound:!1,stage:`response`,source:`response`,bytes:f.payload,contentType:h,details:{kind:`RESPONSE`,flags:f.header.flags,end:g,frameBytes:f.payload.length+12,status:p,headerNames:[...m.keys()].join(`, `)}}),g?(await d.cancel(),o(),this.emitFrameDiagnostic({session:n,pair:r,outbound:!1,stage:`end`,source:`response`,contentType:h,details:{reason:`RESPONSE carried END; the body is empty`}}),{kind:`response`,response:li(null,{status:p,headers:m})}):(n.noteStream(`stream-reserved`),{kind:`response`,response:li(this.bodyStream(n,r,d,o,h,u.headers.get(I)),{status:p,headers:m})})}emitFrameDiagnostic(e){this.config.streamDiagnostics!==null&&Mt(this.config.streamDiagnostics,{channel:e.outbound?`request-frames`:`response-frames`,stage:e.stage,source:e.source,relayOrigin:e.session.relayOrigin,encodeType:e.session.encodeType,pairId:e.pair.pairId,contentType:e.contentType??null,chunkIndex:e.chunkIndex??null,bytes:e.bytes,details:e.details})}buildRequestFrame(e,t,n,r,i){n.signal.throwIfAborted();let o={v:0,method:n.method,path:Ue(n.url),headers:ci(n.encrypted)},s=Be(o,n.encodeType===`MKE`?e.bounds.maxMetadataBytes.MKE:e.bounds.maxMetadataBytes.MTE),l=n.encodeType===`MKE`?Ge.MKE:Ge.MTE,u=Hr(t.encoder,s),d=Qe({mteType:l,method:Se(n.method)??255,pairId:t.raw,token:e.token,metadata:u});if(d.length>e.bounds.maxFrameBytes)throw new B(d.length,e.bounds.maxFrameBytes);let f=r?0:c.END,m=p(a.REQUEST,f,d);return this.emitFrameDiagnostic({session:e,pair:t,outbound:!0,stage:`request-frame`,source:`request`,bytes:d,details:{kind:`REQUEST`,flags:f,end:f===c.END,frameBytes:m.length,method:n.method,path:o.path??``,metadataPlaintextBytes:s.length,transport:i}}),m}buildFrameStream(e,t,n,r){let i=this.buildRequestFrame(e,t,n,!0,`stream`),o=ai(n.encodeType,e.bounds.maxFrameBytes),s=null,l=null,u=!1,d=0,f,m=(e,t)=>{f=t,e.error(t)};return{stream:new ReadableStream({pull:async f=>{try{if(n.signal.throwIfAborted(),!u){u=!0,f.enqueue(i);return}l===null&&(s=ni(r)?r.stream():r,l=new Zr(s.getReader(),o));let m=await l.next();if(m===null){f.close();return}n.signal.throwIfAborted();let g=m.last?c.END:0,_=Hr(t.encoder,h(g,m.bytes)),v=p(a.DATA,g,_);this.emitFrameDiagnostic({session:e,pair:t,outbound:!0,stage:`request-frame`,source:`data`,bytes:_,chunkIndex:d++,details:{kind:`DATA`,flags:g,end:m.last,frameBytes:v.length,plaintextBytes:m.bytes.length,transport:`stream`}}),f.enqueue(v),m.last&&f.close()}catch(e){let t=n.signal.aborted?n.signal.reason:e;l!==null&&await l.cancel(t),m(f,t)}},cancel:async e=>{l===null?s!==null&&!s.locked&&await s.cancel(e).catch(()=>{}):await l.cancel(e)}}),failure:()=>f}}async buildFrames(e,t,n,r){let i=ei(r),o=i>0,s=r!==null&&!(r instanceof Uint8Array),l=[],u=[],d=()=>{u.push(new Blob(l)),l.length=0};if(l.push(this.buildRequestFrame(e,t,n,o,`buffer`)),r!==null&&o){let o=Math.min(ai(n.encodeType,e.bounds.maxFrameBytes),s?8388608:1/0),u=o*Math.max(1,Math.floor(8388608/o)),f=new Uint8Array,m=0,g=0;for(let s=0;s<i;s+=o){n.signal.throwIfAborted();let _=Math.min(s+o,i),v=_===i,y;r instanceof Uint8Array?y=r.subarray(s,_):(s>=m+f.byteLength&&(l.length>0&&d(),await V(0),n.signal.throwIfAborted(),m=s,f=new Uint8Array(await r.slice(s,s+u).arrayBuffer())),y=f.subarray(s-m,_-m));let b=v?c.END:0,ee=Hr(t.encoder,h(b,y)),x=p(a.DATA,b,ee);l.push(x),this.emitFrameDiagnostic({session:e,pair:t,outbound:!0,stage:`request-frame`,source:`data`,bytes:ee,chunkIndex:g++,details:{kind:`DATA`,flags:b,end:v,frameBytes:x.length,plaintextBytes:_-s,transport:`buffer`}})}}return s?(l.length>0&&d(),new Blob(u,{type:`application/octet-stream`})):oi(l)}bodyStream(e,t,n,r,i,o){let l=!1,u=0,d=(n,r,a,o,s)=>{this.emitFrameDiagnostic({session:e,pair:t,outbound:!1,stage:n,source:r,bytes:a,chunkIndex:o,contentType:i,details:s})},f=(n,i)=>{l||(l=!0,r(),e.noteStream(`stream-released`),d(`end`,`data`,void 0,null,{reason:i,pairReplaced:n}),n&&e.replaceInBackground(t.pairId))};return new ReadableStream({pull:async e=>{for(;;){let r;try{r=await n.next()}catch(t){let n=new R(`the response body ended before END: ${t instanceof Error?t.message:String(t)}`,{status:200,pairReplaced:!0,cause:t,requestId:o});f(!0,`the response body ended before END`),e.error(n);return}if(r===null){f(!1,`the stream ended`),e.close();return}if(r.header.kind===a.ERROR){let t=this.parseErrorFrame(r,o)??new R(`a malformed ERROR frame ended the body`,{status:200,requestId:o}),n=t instanceof L?t.action===`replace_pair`:!0;d(`data-frame`,`error`,r.payload,null,{kind:`ERROR`,flags:r.header.flags,end:!1,frameBytes:r.payload.length+12,code:t instanceof L?t.code:null,reason:t instanceof L?t.reason:null}),f(n,`an ERROR frame ended the body`),e.error(t);return}if(r.header.kind!==a.DATA){let t=new R(`an unexpected frame of kind ${r.header.kind} arrived in a response body`,{status:200,pairReplaced:!0,requestId:o});f(!0,`an unexpected ${s(r.header.kind)} frame arrived`),e.error(t);return}let i=u;if(u+=1,d(`data-frame`,`data`,r.payload,i,{kind:`DATA`,flags:r.header.flags,end:(r.header.flags&c.END)!==0,frameBytes:r.header.length+12,operation:r.header.length>0}),r.header.length===0)continue;let l;try{l=g(Vr(t.decoder,r.payload),r.header.flags)}catch(t){let n=new R(`a response DATA frame failed to decode: ${t instanceof Error?t.message:String(t)}`,{status:200,pairReplaced:!0,cause:t,requestId:o});f(!0,`a response DATA frame failed to decode`),e.error(n);return}let p=(r.header.flags&c.END)!==0;if(d(`decoded-chunk`,`data`,l,i,{kind:`DATA`,flags:r.header.flags,end:p,plaintextBytes:l.length}),l.length>0&&e.enqueue(si(l)),p){f(!1,`a DATA frame carried END`),e.close();return}if(l.length>0)return}},cancel:async e=>{await n.cancel(e),f(!0,`the caller cancelled the body before END`)}})}parseErrorFrame(e,t){try{let n=be(e.payload);return new L(n.code,n.reason,{message:n.message,cause:n.cause,requestId:t})}catch{return null}}async applyAction(e,t,n,r){switch(n.action){case`replace_pair`:return await e.dropAndReplace(t.pairId),n.pairReplaced=!0,{kind:`error`,error:n};case`full_repair`:try{await e.fullRepair(),n.repaired=!0}catch(e){P(`Full repair failed`,{code:n.code},e)}return{kind:`error`,error:n};case`back_off`:case`back_off_not_owner`:return await V($t(n.retryAfterMs)),{kind:`error`,error:n};case`retry_once_then_replace`:return r===0?{kind:`retry`,delayMs:n.retryAfterMs>0?n.retryAfterMs:100,error:n}:(await e.dropAndReplace(t.pairId),n.pairReplaced=!0,{kind:`error`,error:n});case`retry_same`:return r===0?{kind:`retry`,delayMs:n.retryAfterMs>0?n.retryAfterMs:1e3,error:n}:{kind:`error`,error:n};case`surface_security`:return P(`Security event: relay_${n.reason}`,{pairId:t.pairId,code:n.code}),n.code===C.REPLAY_REJECTED&&(t.replays+=1,t.replays>=2&&(t.replays=0,await e.dropAndReplace(t.pairId),n.pairReplaced=!0)),{kind:`error`,error:n};default:return{kind:`error`,error:n}}}transportError(e,t,n){return new R(Xt(e.status)??t,{status:e.status,requestId:e.headers.get(I),pairReplaced:!0,cause:n})}splitRequestHeaders(e,t,n){let r=at(t,n),i=Object.keys(r.plain);if(i.length===0)return r;if(!tn(e.discovery,en.PLAIN_HEADERS))return this.warnOnce(`plain-headers:${e.relayOrigin}`,`The relay does not advertise the "plain-headers" feature, so ${i.join(`, `)} would not reach the origin as plain headers. They are encrypted in the metadata instead.`),{encrypted:{...r.encrypted,...r.plain},plain:{}};let a=vn(e.discovery.forwardPlainHeaders);if(a!==null){let t=i.filter(e=>!a(e));t.length>0&&this.warnOnce(`plain-forward:${e.relayOrigin}:${t.join(`,`)}`,`The relay's forwardPlainHeaders list does not cover ${t.join(`, `)}, so the origin will not see them.`)}return r}checkPlainForwarded(e,t,n){let r=Object.keys(n);if(r.length===0)return;let i=yn(t.get(`x-mte-plain-forwarded`));if(i.all)return;let a=r.filter(e=>!i.names.has(e));a.length!==0&&this.warnOnce(`plain-not-forwarded:${e.relayOrigin}:${a.join(`,`)}`,`The relay reported that it did not forward ${a.join(`, `)} to the origin.`)}checkBodyLimit(e,t){let n=e.bounds.maxRequestBodyBytes;if(n>0&&t>n)throw new B(t,n)}requestStreamingStatus(e){let t=e===void 0?this.onlyKnownOrigin():new URL(e).origin,n=t===null?void 0:this.streamingVerdicts.get(t),r=Z(),i=this.config.requestStreaming.enabled,a=n?.state??`unverified`;return{supported:r,enabled:i,minBytes:this.config.requestStreaming.minBytes,endpoint:a,evidence:n?.evidence??`none`,active:r&&i&&a===`verified`}}async verifyRequestStreaming(e){let t=new URL(e).origin;return Z()&&await this.verifyStreamingEndpoint(t),this.requestStreamingStatus(t)}onlyKnownOrigin(){let e=new Set;for(let t of this.sessions.values())e.add(t.relayOrigin);for(let t of this.streamingVerdicts.keys())e.add(t);return e.size===1?e.values().next().value??null:null}async streamingAvailable(e){return Z()?await this.verifyStreamingEndpoint(e)===`verified`:!1}verifyStreamingEndpoint(e){let t=this.streamingVerdicts.get(e);if(t!==void 0)return Promise.resolve(t.state);let n=this.streamingProbes.get(e);return n===void 0&&(n=Yr(e,this.config.credentials,Math.min(this.config.httpTimeoutMs,$r)).then(t=>(t!==`unverified`&&this.recordStreamingVerdict(e,t,`probe`),t)).finally(()=>{this.streamingProbes.delete(e)}),this.streamingProbes.set(e,n)),n}recordStreamingVerdict(e,t,n){this.streamingVerdicts.set(e,{state:t,evidence:n}),this.config.streamDiagnostics?.console===!0&&P(`Request streaming ${t}`,{relayOrigin:e,evidence:n,supported:Z()},void 0,`info`)}getOrCreateSession(e,t){let n=`${e}|${t}`,r=this.sessions.get(n);if(r!==void 0)return r;if(this.bootstrapContext===null)throw new z(`The MTE runtime has not been initialized.`);let i=new Wr({relayOrigin:e,encodeType:t,config:this.config,bootstrap:this.bootstrapContext,onWarning:e=>{this.warnOnce(`${n}:${e.key}`,e.message)},onPoolEvent:this.config.onPoolEvent});return this.sessions.set(n,i),i}async ensureBootstrap(){return this.bootstrapContext===null?(this.bootstrapPromise===null&&(this.bootstrapPromise=wn(this.bootstrapOptions).catch(e=>{throw this.bootstrapPromise=null,e})),this.bootstrapContext=await this.bootstrapPromise,this.bootstrapContext):this.bootstrapContext}warnOnce(e,t){this.config.warnings&&(this.warned.has(e)||(this.warned.add(e),console.warn(`[mte-relay] ${t}`)))}attachVisibilityHandler(){let e=globalThis.document;e===void 0||typeof e.addEventListener!=`function`||(this.visibilityHandler=()=>{if(e.visibilityState===`visible`)for(let e of this.sessions.values())e.isReady&&e.runKeepAliveTick()},e.addEventListener(`visibilitychange`,this.visibilityHandler))}},Q=null,$=null;async function di(e){Q?.close();let t=new ui({config:{minPairs:e.minPairs,initialPairs:e.initialPairs,maxPairs:e.maxPairs,defaultEncodeType:e.defaultEncodeType,sequenceWindow:e.sequenceWindow,timeWindow:e.timeWindow,httpTimeoutMs:e.httpTimeoutMs,keepAliveIntervalMs:e.keepAliveIntervalMs,streamDiagnostics:e.streamDiagnostics,onPoolEvent:e.onPoolEvent,unencryptedHeaders:e.unencryptedHeaders,credentials:e.credentials,warnings:e.warnings,requestStreaming:e.requestStreaming},bootstrap:{companyName:e.companyName,licenseKey:e.licenseKey}});Q=t,$=t.init().finally(()=>{$=null}),await $}async function fi(e,t,n){if(Q===null)throw Error(`MTE relay client is not initialized. Call initMteRelayClient(...) before mteFetch(...).`);return $!==null&&await $,Q.fetch(e,t,n)}function pi(){Q?.close(),Q=null}function mi(e){return Q===null?{supported:Z(),enabled:!0,minBytes:null,endpoint:`unverified`,evidence:`none`,active:!1}:Q.requestStreamingStatus(e)}async function hi(e){if(Q===null)throw Error(`MTE relay client is not initialized. Call initMteRelayClient(...) before verifyRequestStreaming(...).`);return $!==null&&await $,Q.verifyRequestStreaming(e)}var gi={companyName:`Eclypses Inc`,licenseKey:`+ANh061NxNxBxphOu2fUzruw`};function _i(e={}){return di({...gi,...e})}_i().catch(()=>{}),exports.MteRelayCapacityError=qt,exports.MteRelayClient=ui,exports.MteRelayError=L,exports.MteRelayHttpError=Gt,exports.MteRelayProtocolError=Kt,exports.MteRelayRequestTooLargeError=B,exports.MteRelaySetupError=z,exports.MteRelayTransportError=R,exports.Reason=w,exports.RelayCode=C,exports.classifyRelayStatus=Ut,exports.closeMteRelayClient=pi,exports.configureMteRelay=_i,exports.initMteRelayClient=di,exports.isRelayErrorStatus=Bt,exports.mteFetch=fi,exports.relayActionFor=Ht,exports.requestStreamingStatus=mi,exports.requiresFullRepair=Wt,exports.supportsStreamingUpload=Z,exports.verifyRequestStreaming=hi;