livekit-client 1.13.2 → 1.13.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LivekitClient={})}(this,(function(e){"use strict";function t(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(i){if("default"!==i&&!(i in e)){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}}))})),Object.freeze(e)}var i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var r={exports:{}};!function(e){var t,n;t=i,n=function(){var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(e,t){var i=e[t];if("function"==typeof i.bind)return i.bind(e);try{return Function.prototype.bind.call(i,e)}catch(t){return function(){return Function.prototype.apply.apply(i,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function o(t,i){for(var r=0;r<n.length;r++){var s=n[r];this[s]=r<t?e:this.methodFactory(s,t,i)}this.log=this.debug}function a(e,i,n){return function(){typeof console!==t&&(o.call(this,i,n),this[e].apply(this,arguments))}}function c(n,o,c){return function(n){return"debug"===n&&(n="log"),typeof console!==t&&("trace"===n&&i?s:void 0!==console[n]?r(console,n):void 0!==console.log?r(console,"log"):e)}(n)||a.apply(this,arguments)}function d(e,i,r){var s,a=this;i=null==i?"WARN":i;var d="loglevel";function u(){var e;if(typeof window!==t&&d){try{e=window.localStorage[d]}catch(e){}if(typeof e===t)try{var i=window.document.cookie,n=i.indexOf(encodeURIComponent(d)+"=");-1!==n&&(e=/^([^;]+)/.exec(i.slice(n))[1])}catch(e){}return void 0===a.levels[e]&&(e=void 0),e}}"string"==typeof e?d+=":"+e:"symbol"==typeof e&&(d=void 0),a.name=e,a.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},a.methodFactory=r||c,a.getLevel=function(){return s},a.setLevel=function(i,r){if("string"==typeof i&&void 0!==a.levels[i.toUpperCase()]&&(i=a.levels[i.toUpperCase()]),!("number"==typeof i&&i>=0&&i<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+i;if(s=i,!1!==r&&function(e){var i=(n[e]||"silent").toUpperCase();if(typeof window!==t&&d){try{return void(window.localStorage[d]=i)}catch(e){}try{window.document.cookie=encodeURIComponent(d)+"="+i+";"}catch(e){}}}(i),o.call(a,i,e),typeof console===t&&i<a.levels.SILENT)return"No console available for logging"},a.setDefaultLevel=function(e){i=e,u()||a.setLevel(e,!1)},a.resetLevel=function(){a.setLevel(i,!1),function(){if(typeof window!==t&&d){try{return void window.localStorage.removeItem(d)}catch(e){}try{window.document.cookie=encodeURIComponent(d)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},a.enableAll=function(e){a.setLevel(a.levels.TRACE,e)},a.disableAll=function(e){a.setLevel(a.levels.SILENT,e)};var l=u();null==l&&(l=i),a.setLevel(l,!1)}var u=new d,l={};u.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=l[e];return t||(t=l[e]=new d(e,u.getLevel(),u.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return u.noConflict=function(){return typeof window!==t&&window.log===u&&(window.log=h),u},u.getLoggers=function(){return l},u.default=u,u},e.exports?e.exports=n():t.log=n()}(r);var s,o=r.exports;e.LogLevel=void 0,(s=e.LogLevel||(e.LogLevel={}))[s.trace=0]="trace",s[s.debug=1]="debug",s[s.info=2]="info",s[s.warn=3]="warn",s[s.error=4]="error",s[s.silent=5]="silent";const a=o.getLogger("livekit");function c(e,t){if(!e)throw new Error(t)}a.setDefaultLevel(e.LogLevel.info),o.getLogger("lk-e2ee");const d=34028234663852886e22,u=-34028234663852886e22,l=4294967295,h=2147483647,p=-2147483648;function m(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>h||e<p)throw new Error("invalid int 32: "+e)}function f(e){if("number"!=typeof e)throw new Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>l||e<0)throw new Error("invalid uint 32: "+e)}function v(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>d||e<u))throw new Error("invalid float 32: "+e)}const g=Symbol("@bufbuild/protobuf/enum-type");function y(e){const t=e[g];return c(t,"missing enum type on enum object"),t}function k(e,t,i,n){e[g]=b(t,i.map((t=>({no:t.no,name:t.name,localName:e[t.no]}))))}function b(e,t,i){const n=Object.create(null),r=Object.create(null),s=[];for(const e of t){const t=S(e);s.push(t),n[e.name]=t,r[e.no]=t}return{typeName:e,values:s,findName:e=>n[e],findNumber:e=>r[e]}}function T(e,t,i){const n={};for(const e of t){const t=S(e);n[t.localName]=t.no,n[t.no]=t.localName}return k(n,e,t),n}function S(e){return"localName"in e?e:Object.assign(Object.assign({},e),{localName:e.name})}class w{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const i=this.getType().runtime.bin,n=i.makeReadOptions(t);return i.readMessage(this,n.readerFactory(e),e.byteLength,n),this}fromJson(e,t){const i=this.getType(),n=i.runtime.json,r=n.makeReadOptions(t);return n.readMessage(i,e,r,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(e){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(e instanceof Error?e.message:String(e)))}return this.fromJson(i,t)}toBinary(e){const t=this.getType().runtime.bin,i=t.makeWriteOptions(e),n=i.writerFactory();return t.writeMessage(this,n,i),n.finish()}toJson(e){const t=this.getType().runtime.json,i=t.makeWriteOptions(e);return t.writeMessage(this,i)}toJsonString(e){var t;const i=this.toJson(e);return JSON.stringify(i,null,null!==(t=null==e?void 0:e.prettySpaces)&&void 0!==t?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}var E;function C(){let e=0,t=0;for(let i=0;i<28;i+=7){let n=this.buf[this.pos++];if(e|=(127&n)<<i,0==(128&n))return this.assertBounds(),[e,t]}let i=this.buf[this.pos++];if(e|=(15&i)<<28,t=(112&i)>>4,0==(128&i))return this.assertBounds(),[e,t];for(let i=3;i<=31;i+=7){let n=this.buf[this.pos++];if(t|=(127&n)<<i,0==(128&n))return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function P(e,t,i){for(let n=0;n<28;n+=7){const r=e>>>n,s=!(r>>>7==0&&0==t),o=255&(s?128|r:r);if(i.push(o),!s)return}const n=e>>>28&15|(7&t)<<4,r=!(t>>3==0);if(i.push(255&(r?128|n:n)),r){for(let e=3;e<31;e+=7){const n=t>>>e,r=!(n>>>7==0),s=255&(r?128|n:n);if(i.push(s),!r)return}i.push(t>>>31&1)}}!function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"}(E||(E={}));const R=4294967296;function I(e){const t="-"===e[0];t&&(e=e.slice(1));const i=1e6;let n=0,r=0;function s(t,s){const o=Number(e.slice(t,s));r*=i,n=n*i+o,n>=R&&(r+=n/R|0,n%=R)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),t?L(n,r):_(n,r)}function D(e,t){if(({lo:e,hi:t}=function(e,t){return{lo:e>>>0,hi:t>>>0}}(e,t)),t<=2097151)return String(R*t+e);const i=16777215&(e>>>24|t<<8),n=t>>16&65535;let r=(16777215&e)+6777216*i+6710656*n,s=i+8147497*n,o=2*n;const a=1e7;return r>=a&&(s+=Math.floor(r/a),r%=a),s>=a&&(o+=Math.floor(s/a),s%=a),o.toString()+N(s)+N(r)}function _(e,t){return{lo:0|e,hi:0|t}}function L(e,t){return t=~t,e?e=1+~e:t+=1,_(e,t)}const N=e=>{const t=String(e);return"0000000".slice(t.length)+t};function A(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let i=0;i<9;i++)t.push(127&e|128),e>>=7;t.push(1)}}function M(){let e=this.buf[this.pos++],t=127&e;if(0==(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<7,0==(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<14,0==(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<21,0==(128&e))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(15&e)<<28;for(let t=5;0!=(128&e)&&t<10;t++)e=this.buf[this.pos++];if(0!=(128&e))throw new Error("invalid varint");return this.assertBounds(),t>>>0}const O=function(){const e=new DataView(new ArrayBuffer(8));if("function"==typeof BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64&&("object"!=typeof process||"object"!=typeof process.env||"1"!==process.env.BUF_BIGINT_DISABLE)){const t=BigInt("-9223372036854775808"),i=BigInt("9223372036854775807"),n=BigInt("0"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(e){const n="bigint"==typeof e?e:BigInt(e);if(n>i||n<t)throw new Error("int64 invalid: ".concat(e));return n},uParse(e){const t="bigint"==typeof e?e:BigInt(e);if(t>r||t<n)throw new Error("uint64 invalid: ".concat(e));return t},enc(t){return e.setBigInt64(0,this.parse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(t){return e.setBigInt64(0,this.uParse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec:(t,i)=>(e.setInt32(0,t,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)),uDec:(t,i)=>(e.setInt32(0,t,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0))}}const t=e=>c(/^-?[0-9]+$/.test(e),"int64 invalid: ".concat(e)),i=e=>c(/^[0-9]+$/.test(e),"uint64 invalid: ".concat(e));return{zero:"0",supported:!1,parse:e=>("string"!=typeof e&&(e=e.toString()),t(e),e),uParse:e=>("string"!=typeof e&&(e=e.toString()),i(e),e),enc:e=>("string"!=typeof e&&(e=e.toString()),t(e),I(e)),uEnc:e=>("string"!=typeof e&&(e=e.toString()),i(e),I(e)),dec:(e,t)=>function(e,t){let i=_(e,t);const n=2147483648&i.hi;n&&(i=L(i.lo,i.hi));const r=D(i.lo,i.hi);return n?"-"+r:r}(e,t),uDec:(e,t)=>D(e,t)}}();var x;!function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(x||(x={}));class U{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),i=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],i),i+=this.chunks[e].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(f(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return m(e),A(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){v(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){f(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){m(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return m(e),A(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),n=O.enc(e);return i.setInt32(0,n.lo,!0),i.setInt32(4,n.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),n=O.uEnc(e);return i.setInt32(0,n.lo,!0),i.setInt32(4,n.hi,!0),this.raw(t)}int64(e){let t=O.enc(e);return P(t.lo,t.hi,this.buf),this}sint64(e){let t=O.enc(e),i=t.hi>>31;return P(t.lo<<1^i,(t.hi<<1|t.lo>>>31)^i,this.buf),this}uint64(e){let t=O.uEnc(e);return P(t.lo,t.hi,this.buf),this}}class B{constructor(e,t){this.varint64=C,this.uint32=M,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=7&e;if(t<=0||i<0||i>5)throw new Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e){let t=this.pos;switch(e){case x.Varint:for(;128&this.buf[this.pos++];);break;case x.Bit64:this.pos+=4;case x.Bit32:this.pos+=4;break;case x.LengthDelimited:let t=this.uint32();this.pos+=t;break;case x.StartGroup:let i;for(;(i=this.tag()[1])!==x.EndGroup;)this.skip(i);break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return O.dec(...this.varint64())}uint64(){return O.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(1&e);return e=(e>>>1|(1&t)<<31)^i,t=t>>>1^i,O.dec(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return O.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return O.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function F(e,t){return t instanceof w||!e.fieldWrapper?t:e.fieldWrapper.wrapField(t)}function J(e,t,i){if(t===i)return!0;if(e==E.BYTES){if(!(t instanceof Uint8Array&&i instanceof Uint8Array))return!1;if(t.length!==i.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==i[e])return!1;return!0}switch(e){case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return t==i}return!1}function j(e){switch(e){case E.BOOL:return!1;case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return O.zero;case E.DOUBLE:case E.FLOAT:return 0;case E.BYTES:return new Uint8Array(0);case E.STRING:return"";default:return 0}}function V(e,t){const i=void 0===t;let n=x.Varint,r=0===t;switch(e){case E.STRING:r=i||!t.length,n=x.LengthDelimited;break;case E.BOOL:r=!1===t;break;case E.DOUBLE:n=x.Bit64;break;case E.FLOAT:n=x.Bit32;break;case E.INT64:case E.UINT64:r=i||0==t;break;case E.FIXED64:r=i||0==t,n=x.Bit64;break;case E.BYTES:r=i||!t.byteLength,n=x.LengthDelimited;break;case E.FIXED32:case E.SFIXED32:n=x.Bit32;break;case E.SFIXED64:r=i||0==t,n=x.Bit64;break;case E.SINT64:r=i||0==t}return[n,E[e].toLowerCase(),i||r]}E.DOUBLE,E.FLOAT,E.INT64,E.UINT64,E.INT32,E.UINT32,E.BOOL,E.STRING,E.BYTES;const q=Symbol("@bufbuild/protobuf/unknown-fields"),K={readUnknownFields:!0,readerFactory:e=>new B(e)},W={writeUnknownFields:!0,writerFactory:()=>new U};function H(e){return e?Object.assign(Object.assign({},K),e):K}function G(e){return e?Object.assign(Object.assign({},W),e):W}function z(e,t,i){return t.getType().runtime.bin.readMessage(t,e,e.uint32(),i),t}function Q(e,t,i){const n=t.uint32(),r=t.pos+n;let s,o;for(;t.pos<r;){let[n]=t.tag();switch(n){case 1:s=Y(t,e.K);break;case 2:switch(e.V.kind){case"scalar":o=Y(t,e.V.T);break;case"enum":o=t.int32();break;case"message":o=z(t,new e.V.T,i)}}}if(void 0===s){let t=j(e.K);s=e.K==E.BOOL?t.toString():t}if("string"!=typeof s&&"number"!=typeof s&&(s=s.toString()),void 0===o)switch(e.V.kind){case"scalar":o=j(e.V.T);break;case"enum":o=0;break;case"message":o=new e.V.T}return[s,o]}function Y(e,t){switch(t){case E.STRING:return e.string();case E.BOOL:return e.bool();case E.DOUBLE:return e.double();case E.FLOAT:return e.float();case E.INT32:return e.int32();case E.INT64:return e.int64();case E.UINT64:return e.uint64();case E.FIXED64:return e.fixed64();case E.BYTES:return e.bytes();case E.FIXED32:return e.fixed32();case E.SFIXED32:return e.sfixed32();case E.SFIXED64:return e.sfixed64();case E.SINT64:return e.sint64();case E.UINT32:return e.uint32();case E.SINT32:return e.sint32()}}function X(e,t,i,n,r){e.tag(i.no,x.LengthDelimited),e.fork();let s=n;switch(i.K){case E.INT32:case E.FIXED32:case E.UINT32:case E.SFIXED32:case E.SINT32:s=Number.parseInt(n);break;case E.BOOL:c("true"==n||"false"==n),s="true"==n}switch($(e,i.K,1,s,!0),i.V.kind){case"scalar":$(e,i.V.T,2,r,!0);break;case"enum":$(e,E.INT32,2,r,!0);break;case"message":Z(e,t,i.V.T,2,r)}e.join()}function Z(e,t,i,n,r){if(void 0!==r){const s=F(i,r);e.tag(n,x.LengthDelimited).bytes(s.toBinary(t))}}function $(e,t,i,n,r){let[s,o,a]=V(t,n);a&&!r||e.tag(i,s)[o](n)}function ee(e,t,i,n){if(!n.length)return;e.tag(i,x.LengthDelimited).fork();let[,r]=V(t);for(let t=0;t<n.length;t++)e[r](n[t]);e.join()}let te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ie=[];for(let e=0;e<te.length;e++)ie[te[e].charCodeAt(0)]=e;ie["-".charCodeAt(0)]=te.indexOf("+"),ie["_".charCodeAt(0)]=te.indexOf("/");const ne={dec(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let i,n=new Uint8Array(t),r=0,s=0,o=0;for(let t=0;t<e.length;t++){if(i=ie[e.charCodeAt(t)],void 0===i)switch(e[t]){case"=":s=0;case"\n":case"\r":case"\t":case" ":continue;default:throw Error("invalid base64 string.")}switch(s){case 0:o=i,s=1;break;case 1:n[r++]=o<<2|(48&i)>>4,o=i,s=2;break;case 2:n[r++]=(15&o)<<4|(60&i)>>2,o=i,s=3;break;case 3:n[r++]=(3&o)<<6|i,s=0}}if(1==s)throw Error("invalid base64 string.");return n.subarray(0,r)},enc(e){let t,i="",n=0,r=0;for(let s=0;s<e.length;s++)switch(t=e[s],n){case 0:i+=te[t>>2],r=(3&t)<<4,n=1;break;case 1:i+=te[r|t>>4],r=(15&t)<<2,n=2;break;case 2:i+=te[r|t>>6],i+=te[63&t],n=0}return n&&(i+=te[r],i+="=",1==n&&(i+="=")),i}},re={ignoreUnknownFields:!1},se={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function oe(e){return e?Object.assign(Object.assign({},re),e):re}function ae(e){return e?Object.assign(Object.assign({},se),e):se}function ce(e){if(null===e)return"null";switch(typeof e){case"object":return Array.isArray(e)?"array":"object";case"string":return e.length>100?"string":'"'.concat(e.split('"').join('\\"'),'"');default:return e.toString()}}function de(e,t){switch(e){case E.DOUBLE:case E.FLOAT:if(null===t)return 0;if("NaN"===t)return Number.NaN;if("Infinity"===t)return Number.POSITIVE_INFINITY;if("-Infinity"===t)return Number.NEGATIVE_INFINITY;if(""===t)break;if("string"==typeof t&&t.trim().length!==t.length)break;if("string"!=typeof t&&"number"!=typeof t)break;const i=Number(t);if(Number.isNaN(i))break;if(!Number.isFinite(i))break;return e==E.FLOAT&&v(i),i;case E.INT32:case E.FIXED32:case E.SFIXED32:case E.SINT32:case E.UINT32:if(null===t)return 0;let n;if("number"==typeof t?n=t:"string"==typeof t&&t.length>0&&t.trim().length===t.length&&(n=Number(t)),void 0===n)break;return e==E.UINT32?f(n):m(n),n;case E.INT64:case E.SFIXED64:case E.SINT64:if(null===t)return O.zero;if("number"!=typeof t&&"string"!=typeof t)break;return O.parse(t);case E.FIXED64:case E.UINT64:if(null===t)return O.zero;if("number"!=typeof t&&"string"!=typeof t)break;return O.uParse(t);case E.BOOL:if(null===t)return!1;if("boolean"!=typeof t)break;return t;case E.STRING:if(null===t)return"";if("string"!=typeof t)break;try{encodeURIComponent(t)}catch(e){throw new Error("invalid UTF8")}return t;case E.BYTES:if(null===t||""===t)return new Uint8Array(0);if("string"!=typeof t)break;return ne.dec(t)}throw new Error}function ue(e,t,i){if(null===t)return 0;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":const n=e.findName(t);if(n||i)return null==n?void 0:n.no}throw new Error("cannot decode enum ".concat(e.typeName," from JSON: ").concat(ce(t)))}function le(e,t,i,n){var r;if(void 0===t)return t;if(0===t&&!i)return;if(n)return t;if("google.protobuf.NullValue"==e.typeName)return null;const s=e.findNumber(t);return null!==(r=null==s?void 0:s.name)&&void 0!==r?r:t}function he(e,t,i){if(void 0!==t)switch(e){case E.INT32:case E.SFIXED32:case E.SINT32:case E.FIXED32:case E.UINT32:return c("number"==typeof t),0!=t||i?t:void 0;case E.FLOAT:case E.DOUBLE:return c("number"==typeof t),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":0!==t||i?t:void 0;case E.STRING:return c("string"==typeof t),t.length>0||i?t:void 0;case E.BOOL:return c("boolean"==typeof t),t||i?t:void 0;case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return c("bigint"==typeof t||"string"==typeof t||"number"==typeof t),i||0!=t?t.toString(10):void 0;case E.BYTES:return c(t instanceof Uint8Array),i||t.byteLength>0?ne.enc(t):void 0}}function pe(e,t){if(void 0===t)return t;if(t instanceof w)return t.clone();if(t instanceof Uint8Array){const e=new Uint8Array(t.byteLength);return e.set(t),e}return t}class me{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){const e={};for(const t of this.list())e[t.jsonName]=e[t.name]=t;this.jsonNames=e}return this.jsonNames[e]}find(e){if(!this.numbers){const e={};for(const t of this.list())e[t.no]=t;this.numbers=e}return this.numbers[e]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort(((e,t)=>e.no-t.no))),this.numbersAsc}byMember(){if(!this.members){this.members=[];const e=this.members;let t;for(const i of this.list())i.oneof?i.oneof!==t&&(t=i.oneof,e.push(t)):e.push(i)}return this.members}}function fe(e,t){const i=ge(e);return t?i:Se(Te(i))}const ve=ge;function ge(e){let t=!1;const i=[];for(let n=0;n<e.length;n++){let r=e.charAt(n);switch(r){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":i.push(r),t=!1;break;default:t&&(t=!1,r=r.toUpperCase()),i.push(r)}}return i.join("")}const ye=new Set(["constructor","toString","toJSON","valueOf"]),ke=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),be=e=>"".concat(e,"$"),Te=e=>ke.has(e)?be(e):e,Se=e=>ye.has(e)?be(e):e;class we{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=fe(e,!1)}addField(e){c(e.oneof===this,"field ".concat(e.name," not one of ").concat(this.name)),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let e=0;e<this.fields.length;e++)this._lookup[this.fields[e].localName]=this.fields[e]}return this._lookup[e]}}const Ee=(Ce="proto3",Pe=function(e){const t=e(le,he);return{makeReadOptions:oe,makeWriteOptions:ae,readMessage(e,t,i,n){if(null==t||Array.isArray(t)||"object"!=typeof t)throw new Error("cannot decode message ".concat(e.typeName," from JSON: ").concat(this.debug(t)));n=null!=n?n:new e;const r={};for(const[s,o]of Object.entries(t)){const t=e.fields.findJsonName(s);if(!t){if(!i.ignoreUnknownFields)throw new Error("cannot decode message ".concat(e.typeName,' from JSON: key "').concat(s,'" is unknown'));continue}let a=t.localName,c=n;if(t.oneof){if(null===o&&"scalar"==t.kind)continue;const i=r[t.oneof.localName];if(i)throw new Error("cannot decode message ".concat(e.typeName,' from JSON: multiple keys for oneof "').concat(t.oneof.name,'" present: "').concat(i,'", "').concat(s,'"'));r[t.oneof.localName]=s,c=c[t.oneof.localName]={case:a},a="value"}if(t.repeated){if(null===o)continue;if(!Array.isArray(o))throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o)));const n=c[a];for(const r of o){if(null===r)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(r)));let s;switch(t.kind){case"message":s=t.T.fromJson(r,i);break;case"enum":if(s=ue(t.T,r,i.ignoreUnknownFields),void 0===s)continue;break;case"scalar":try{s=de(t.T,r)}catch(i){let n="cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(r));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}n.push(s)}}else if("map"==t.kind){if(null===o)continue;if(Array.isArray(o)||"object"!=typeof o)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o)));const n=c[a];for(const[r,s]of Object.entries(o)){if(null===s)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: map value null"));let a;switch(t.V.kind){case"message":a=t.V.T.fromJson(s,i);break;case"enum":if(a=ue(t.V.T,s,i.ignoreUnknownFields),void 0===a)continue;break;case"scalar":try{a=de(t.V.T,s)}catch(i){let n="cannot decode map value for field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}try{n[de(t.K,t.K==E.BOOL?"true"==r||"false"!=r&&r:r).toString()]=a}catch(i){let n="cannot decode map key for field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}}else switch(t.kind){case"message":const n=t.T;if(null===o&&"google.protobuf.Value"!=n.typeName){if(t.oneof)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name,' from JSON: null is invalid for oneof field "').concat(s,'"'));continue}c[a]instanceof w?c[a].fromJson(o,i):(c[a]=n.fromJson(o,i),n.fieldWrapper&&!t.oneof&&(c[a]=n.fieldWrapper.unwrapField(c[a])));break;case"enum":const r=ue(t.T,o,i.ignoreUnknownFields);void 0!==r&&(c[a]=r);break;case"scalar":try{c[a]=de(t.T,o)}catch(i){let n="cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}}return n},writeMessage(e,i){const n=e.getType(),r={};let s;try{for(const o of n.fields.byMember()){let n;if("oneof"==o.kind){const r=e[o.localName];if(void 0===r.value)continue;if(s=o.findField(r.case),!s)throw"oneof case not found: "+r.case;n=t(s,r.value,i)}else s=o,n=t(s,e[s.localName],i);void 0!==n&&(r[i.useProtoFieldName?s.name:s.jsonName]=n)}}catch(e){const t=s?"cannot encode field ".concat(n.typeName,".").concat(s.name," to JSON"):"cannot encode message ".concat(n.typeName," to JSON"),i=e instanceof Error?e.message:String(e);throw new Error(t+(i.length>0?": ".concat(i):""))}return r},readScalar:de,writeScalar:he,debug:ce}}(((e,t)=>function(i,n,r){if("map"==i.kind){const s={};switch(i.V.kind){case"scalar":for(const[e,r]of Object.entries(n)){const n=t(i.V.T,r,!0);c(void 0!==n),s[e.toString()]=n}break;case"message":for(const[e,t]of Object.entries(n))s[e.toString()]=t.toJson(r);break;case"enum":const o=i.V.T;for(const[t,i]of Object.entries(n)){c(void 0===i||"number"==typeof i);const n=e(o,i,!0,r.enumAsInteger);c(void 0!==n),s[t.toString()]=n}}return r.emitDefaultValues||Object.keys(s).length>0?s:void 0}if(i.repeated){const s=[];switch(i.kind){case"scalar":for(let e=0;e<n.length;e++)s.push(t(i.T,n[e],!0));break;case"enum":for(let t=0;t<n.length;t++)s.push(e(i.T,n[t],!0,r.enumAsInteger));break;case"message":for(let e=0;e<n.length;e++)s.push(F(i.T,n[e]).toJson(r))}return r.emitDefaultValues||s.length>0?s:void 0}switch(i.kind){case"scalar":return t(i.T,n,!!i.oneof||i.opt||r.emitDefaultValues);case"enum":return e(i.T,n,!!i.oneof||i.opt||r.emitDefaultValues,r.enumAsInteger);case"message":return void 0!==n?F(i.T,n).toJson(r):void 0}})),Re=Object.assign(Object.assign({},{makeReadOptions:H,makeWriteOptions:G,listUnknownFields(e){var t;return null!==(t=e[q])&&void 0!==t?t:[]},discardUnknownFields(e){delete e[q]},writeUnknownFields(e,t){const i=e[q];if(i)for(const e of i)t.tag(e.no,e.wireType).raw(e.data)},onUnknownField(e,t,i,n){const r=e;Array.isArray(r[q])||(r[q]=[]),r[q].push({no:t,wireType:i,data:n})},readMessage(e,t,i,n){const r=e.getType(),s=void 0===i?t.len:t.pos+i;for(;t.pos<s;){const[i,s]=t.tag(),o=r.fields.find(i);if(!o){const r=t.skip(s);n.readUnknownFields&&this.onUnknownField(e,i,s,r);continue}let a=e,c=o.repeated,d=o.localName;switch(o.oneof&&(a=a[o.oneof.localName],a.case!=d&&delete a.value,a.case=d,d="value"),o.kind){case"scalar":case"enum":const e="enum"==o.kind?E.INT32:o.T;if(c){let i=a[d];if(s==x.LengthDelimited&&e!=E.STRING&&e!=E.BYTES){let n=t.uint32()+t.pos;for(;t.pos<n;)i.push(Y(t,e))}else i.push(Y(t,e))}else a[d]=Y(t,e);break;case"message":const i=o.T;c?a[d].push(z(t,new i,n)):a[d]instanceof w?z(t,a[d],n):(a[d]=z(t,new i,n),!i.fieldWrapper||o.oneof||o.repeated||(a[d]=i.fieldWrapper.unwrapField(a[d])));break;case"map":let[r,u]=Q(o,t,n);a[d][r]=u}}}}),{writeMessage(e,t,i){const n=e.getType();for(const r of n.fields.byNumber()){let n,s=r.repeated,o=r.localName;if(r.oneof){const t=e[r.oneof.localName];if(t.case!==o)continue;n=t.value}else n=e[o];switch(r.kind){case"scalar":case"enum":let e="enum"==r.kind?E.INT32:r.T;if(s)if(r.packed)ee(t,e,r.no,n);else for(const i of n)$(t,e,r.no,i,!0);else void 0!==n&&$(t,e,r.no,n,!!r.oneof||r.opt);break;case"message":if(s)for(const e of n)Z(t,i,r.T,r.no,e);else Z(t,i,r.T,r.no,n);break;case"map":for(const[e,s]of Object.entries(n))X(t,i,r,e,s)}}return i.writeUnknownFields&&this.writeUnknownFields(e,t),t}}),Ie=Object.assign(Object.assign({},{setEnumType:k,initPartial(e,t){if(void 0===e)return;const i=t.getType();for(const n of i.fields.byMember()){const i=n.localName,r=t,s=e;if(void 0!==s[i])switch(n.kind){case"oneof":const e=s[i].case;if(void 0===e)continue;const t=n.findField(e);let o=s[i].value;!t||"message"!=t.kind||o instanceof t.T||(o=new t.T(o)),r[i]={case:e,value:o};break;case"scalar":case"enum":r[i]=s[i];break;case"map":switch(n.V.kind){case"scalar":case"enum":Object.assign(r[i],s[i]);break;case"message":const e=n.V.T;for(const t of Object.keys(s[i])){let n=s[i][t];e.fieldWrapper||(n=new e(n)),r[i][t]=n}}break;case"message":const a=n.T;if(n.repeated)r[i]=s[i].map((e=>e instanceof a?e:new a(e)));else if(void 0!==s[i]){const e=s[i];a.fieldWrapper?r[i]=e:r[i]=e instanceof a?e:new a(e)}}}},equals:(e,t,i)=>t===i||!(!t||!i)&&e.fields.byMember().every((e=>{const n=t[e.localName],r=i[e.localName];if(e.repeated){if(n.length!==r.length)return!1;switch(e.kind){case"message":return n.every(((t,i)=>e.T.equals(t,r[i])));case"scalar":return n.every(((t,i)=>J(e.T,t,r[i])));case"enum":return n.every(((e,t)=>J(E.INT32,e,r[t])))}throw new Error("repeated cannot contain ".concat(e.kind))}switch(e.kind){case"message":return e.T.equals(n,r);case"enum":return J(E.INT32,n,r);case"scalar":return J(e.T,n,r);case"oneof":if(n.case!==r.case)return!1;const t=e.findField(n.case);if(void 0===t)return!0;switch(t.kind){case"message":return t.T.equals(n.value,r.value);case"enum":return J(E.INT32,n.value,r.value);case"scalar":return J(t.T,n.value,r.value)}throw new Error("oneof cannot contain ".concat(t.kind));case"map":const i=Object.keys(n).concat(Object.keys(r));switch(e.V.kind){case"message":const t=e.V.T;return i.every((e=>t.equals(n[e],r[e])));case"enum":return i.every((e=>J(E.INT32,n[e],r[e])));case"scalar":const s=e.V.T;return i.every((e=>J(s,n[e],r[e])))}}})),clone(e){const t=e.getType(),i=new t,n=i;for(const i of t.fields.byMember()){const t=e[i.localName];let r;if(i.repeated)r=t.map((e=>pe(0,e)));else if("map"==i.kind){r=n[i.localName];for(const[e,n]of Object.entries(t))r[e]=pe(i.V,n)}else if("oneof"==i.kind){const e=i.findField(t.case);r=e?{case:t.case,value:pe(0,t.value)}:{case:void 0}}else r=pe(0,t);n[i.localName]=r}return i}}),{newFieldList:e=>new me(e,Fe),initFields(e){for(const t of e.getType().fields.byMember()){if(t.opt)continue;const i=t.localName,n=e;if(t.repeated)n[i]=[];else switch(t.kind){case"oneof":n[i]={case:void 0};break;case"enum":n[i]=0;break;case"map":n[i]={};break;case"scalar":n[i]=j(t.T)}}}}),{syntax:Ce,json:Pe,bin:Re,util:Ie,makeMessageType(e,t,i){return function(e,t,i,n){var r;const s=null!==(r=null==n?void 0:n.localName)&&void 0!==r?r:t.substring(t.lastIndexOf(".")+1),o={[s]:function(t){e.util.initFields(this),e.util.initPartial(t,this)}}[s];return Object.setPrototypeOf(o.prototype,new w),Object.assign(o,{runtime:e,typeName:t,fields:e.util.newFieldList(i),fromBinary:(e,t)=>(new o).fromBinary(e,t),fromJson:(e,t)=>(new o).fromJson(e,t),fromJsonString:(e,t)=>(new o).fromJsonString(e,t),equals:(t,i)=>e.util.equals(o,t,i)}),o}(this,e,t,i)},makeEnum:T,makeEnumType:b,getEnumType:y});var Ce,Pe,Re,Ie,De,_e,Le,Ne,Ae,Me,Oe,xe,Ue,Be;function Fe(e){var t,i,n;const r=[];let s;for(const o of"function"==typeof e?e():e){const e=o;if(e.localName=fe(o.name,void 0!==o.oneof),e.jsonName=null!==(t=o.jsonName)&&void 0!==t?t:ve(o.name),e.repeated=null!==(i=o.repeated)&&void 0!==i&&i,e.packed=null!==(n=o.packed)&&void 0!==n?n:"enum"==o.kind||"scalar"==o.kind&&o.T!=E.BYTES&&o.T!=E.STRING,void 0!==o.oneof){const t="string"==typeof o.oneof?o.oneof:o.oneof.name;s&&s.name==t||(s=new we(t)),e.oneof=s,s.addField(e)}r.push(e)}return r}class Je extends w{constructor(e){super(),this.seconds=O.zero,this.nanos=0,Ee.util.initPartial(e,this)}fromJson(e,t){if("string"!=typeof e)throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(Ee.json.debug(e)));const i=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!i)throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");const n=Date.parse(i[1]+"-"+i[2]+"-"+i[3]+"T"+i[4]+":"+i[5]+":"+i[6]+(i[8]?i[8]:"Z"));if(Number.isNaN(n))throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(n<Date.parse("0001-01-01T00:00:00Z")||n>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");return this.seconds=O.parse(n/1e3),this.nanos=0,i[7]&&(this.nanos=parseInt("1"+i[7]+"0".repeat(9-i[7].length))-1e9),this}toJson(e){const t=1e3*Number(this.seconds);if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");if(this.nanos<0)throw new Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let i="Z";if(this.nanos>0){const e=(this.nanos+1e9).toString().substring(1);i="000000"===e.substring(3)?"."+e.substring(0,3)+"Z":"000"===e.substring(6)?"."+e.substring(0,6)+"Z":"."+e+"Z"}return new Date(t).toISOString().replace(".000Z",i)}toDate(){return new Date(1e3*Number(this.seconds)+Math.ceil(this.nanos/1e6))}static now(){return Je.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new Je({seconds:O.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return(new Je).fromBinary(e,t)}static fromJson(e,t){return(new Je).fromJson(e,t)}static fromJsonString(e,t){return(new Je).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Je,e,t)}}Je.runtime=Ee,Je.typeName="google.protobuf.Timestamp",Je.fields=Ee.util.newFieldList((()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}])),function(e){e[e.DEFAULT_AC=0]="DEFAULT_AC",e[e.OPUS=1]="OPUS",e[e.AAC=2]="AAC"}(De||(De={})),Ee.util.setEnumType(De,"livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"}]),function(e){e[e.DEFAULT_VC=0]="DEFAULT_VC",e[e.H264_BASELINE=1]="H264_BASELINE",e[e.H264_MAIN=2]="H264_MAIN",e[e.H264_HIGH=3]="H264_HIGH",e[e.VP8=4]="VP8"}(_e||(_e={})),Ee.util.setEnumType(_e,"livekit.VideoCodec",[{no:0,name:"DEFAULT_VC"},{no:1,name:"H264_BASELINE"},{no:2,name:"H264_MAIN"},{no:3,name:"H264_HIGH"},{no:4,name:"VP8"}]),function(e){e[e.AUDIO=0]="AUDIO",e[e.VIDEO=1]="VIDEO",e[e.DATA=2]="DATA"}(Le||(Le={})),Ee.util.setEnumType(Le,"livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.CAMERA=1]="CAMERA",e[e.MICROPHONE=2]="MICROPHONE",e[e.SCREEN_SHARE=3]="SCREEN_SHARE",e[e.SCREEN_SHARE_AUDIO=4]="SCREEN_SHARE_AUDIO"}(Ne||(Ne={})),Ee.util.setEnumType(Ne,"livekit.TrackSource",[{no:0,name:"UNKNOWN"},{no:1,name:"CAMERA"},{no:2,name:"MICROPHONE"},{no:3,name:"SCREEN_SHARE"},{no:4,name:"SCREEN_SHARE_AUDIO"}]),e.VideoQuality=void 0,(Ae=e.VideoQuality||(e.VideoQuality={}))[Ae.LOW=0]="LOW",Ae[Ae.MEDIUM=1]="MEDIUM",Ae[Ae.HIGH=2]="HIGH",Ae[Ae.OFF=3]="OFF",Ee.util.setEnumType(e.VideoQuality,"livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),function(e){e[e.POOR=0]="POOR",e[e.GOOD=1]="GOOD",e[e.EXCELLENT=2]="EXCELLENT"}(Me||(Me={})),Ee.util.setEnumType(Me,"livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"}]),function(e){e[e.UNSET=0]="UNSET",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(Oe||(Oe={})),Ee.util.setEnumType(Oe,"livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),e.DisconnectReason=void 0,(xe=e.DisconnectReason||(e.DisconnectReason={}))[xe.UNKNOWN_REASON=0]="UNKNOWN_REASON",xe[xe.CLIENT_INITIATED=1]="CLIENT_INITIATED",xe[xe.DUPLICATE_IDENTITY=2]="DUPLICATE_IDENTITY",xe[xe.SERVER_SHUTDOWN=3]="SERVER_SHUTDOWN",xe[xe.PARTICIPANT_REMOVED=4]="PARTICIPANT_REMOVED",xe[xe.ROOM_DELETED=5]="ROOM_DELETED",xe[xe.STATE_MISMATCH=6]="STATE_MISMATCH",xe[xe.JOIN_FAILURE=7]="JOIN_FAILURE",Ee.util.setEnumType(e.DisconnectReason,"livekit.DisconnectReason",[{no:0,name:"UNKNOWN_REASON"},{no:1,name:"CLIENT_INITIATED"},{no:2,name:"DUPLICATE_IDENTITY"},{no:3,name:"SERVER_SHUTDOWN"},{no:4,name:"PARTICIPANT_REMOVED"},{no:5,name:"ROOM_DELETED"},{no:6,name:"STATE_MISMATCH"},{no:7,name:"JOIN_FAILURE"}]),function(e){e[e.RR_UNKNOWN=0]="RR_UNKNOWN",e[e.RR_SIGNAL_DISCONNECTED=1]="RR_SIGNAL_DISCONNECTED",e[e.RR_PUBLISHER_FAILED=2]="RR_PUBLISHER_FAILED",e[e.RR_SUBSCRIBER_FAILED=3]="RR_SUBSCRIBER_FAILED",e[e.RR_SWITCH_CANDIDATE=4]="RR_SWITCH_CANDIDATE"}(Ue||(Ue={})),Ee.util.setEnumType(Ue,"livekit.ReconnectReason",[{no:0,name:"RR_UNKNOWN"},{no:1,name:"RR_SIGNAL_DISCONNECTED"},{no:2,name:"RR_PUBLISHER_FAILED"},{no:3,name:"RR_SUBSCRIBER_FAILED"},{no:4,name:"RR_SWITCH_CANDIDATE"}]),function(e){e[e.SE_UNKNOWN=0]="SE_UNKNOWN",e[e.SE_CODEC_UNSUPPORTED=1]="SE_CODEC_UNSUPPORTED",e[e.SE_TRACK_NOTFOUND=2]="SE_TRACK_NOTFOUND"}(Be||(Be={})),Ee.util.setEnumType(Be,"livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]);let je=class e extends w{constructor(e){super(),this.sid="",this.name="",this.emptyTimeout=0,this.maxParticipants=0,this.creationTime=O.zero,this.turnPassword="",this.enabledCodecs=[],this.metadata="",this.numParticipants=0,this.numPublishers=0,this.activeRecording=!1,Ee.util.initPartial(e,this)}static fromBinary(t,i){return(new e).fromBinary(t,i)}static fromJson(t,i){return(new e).fromJson(t,i)}static fromJsonString(t,i){return(new e).fromJsonString(t,i)}static equals(t,i){return Ee.util.equals(e,t,i)}};je.runtime=Ee,je.typeName="livekit.Room",je.fields=Ee.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"empty_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:5,name:"creation_time",kind:"scalar",T:3},{no:6,name:"turn_password",kind:"scalar",T:9},{no:7,name:"enabled_codecs",kind:"message",T:Ve,repeated:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"num_participants",kind:"scalar",T:13},{no:11,name:"num_publishers",kind:"scalar",T:13},{no:10,name:"active_recording",kind:"scalar",T:8},{no:12,name:"playout_delay",kind:"message",T:qe}]));class Ve extends w{constructor(e){super(),this.mime="",this.fmtpLine="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Ve).fromBinary(e,t)}static fromJson(e,t){return(new Ve).fromJson(e,t)}static fromJsonString(e,t){return(new Ve).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Ve,e,t)}}Ve.runtime=Ee,Ve.typeName="livekit.Codec",Ve.fields=Ee.util.newFieldList((()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]));class qe extends w{constructor(e){super(),this.enabled=!1,this.min=0,this.max=0,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new qe).fromBinary(e,t)}static fromJson(e,t){return(new qe).fromJson(e,t)}static fromJsonString(e,t){return(new qe).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(qe,e,t)}}qe.runtime=Ee,qe.typeName="livekit.PlayoutDelay",qe.fields=Ee.util.newFieldList((()=>[{no:1,name:"enabled",kind:"scalar",T:8},{no:2,name:"min",kind:"scalar",T:13},{no:3,name:"max",kind:"scalar",T:13}]));class Ke extends w{constructor(e){super(),this.canSubscribe=!1,this.canPublish=!1,this.canPublishData=!1,this.canPublishSources=[],this.hidden=!1,this.recorder=!1,this.canUpdateMetadata=!1,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Ke).fromBinary(e,t)}static fromJson(e,t){return(new Ke).fromJson(e,t)}static fromJsonString(e,t){return(new Ke).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Ke,e,t)}}Ke.runtime=Ee,Ke.typeName="livekit.ParticipantPermission",Ke.fields=Ee.util.newFieldList((()=>[{no:1,name:"can_subscribe",kind:"scalar",T:8},{no:2,name:"can_publish",kind:"scalar",T:8},{no:3,name:"can_publish_data",kind:"scalar",T:8},{no:9,name:"can_publish_sources",kind:"enum",T:Ee.getEnumType(Ne),repeated:!0},{no:7,name:"hidden",kind:"scalar",T:8},{no:8,name:"recorder",kind:"scalar",T:8},{no:10,name:"can_update_metadata",kind:"scalar",T:8}]));class We extends w{constructor(e){super(),this.sid="",this.identity="",this.state=He.JOINING,this.tracks=[],this.metadata="",this.joinedAt=O.zero,this.name="",this.version=0,this.region="",this.isPublisher=!1,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new We).fromBinary(e,t)}static fromJson(e,t){return(new We).fromJson(e,t)}static fromJsonString(e,t){return(new We).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(We,e,t)}}var He,Ge,ze,Qe,Ye;We.runtime=Ee,We.typeName="livekit.ParticipantInfo",We.fields=Ee.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:Ee.getEnumType(He)},{no:4,name:"tracks",kind:"message",T:$e,repeated:!0},{no:5,name:"metadata",kind:"scalar",T:9},{no:6,name:"joined_at",kind:"scalar",T:3},{no:9,name:"name",kind:"scalar",T:9},{no:10,name:"version",kind:"scalar",T:13},{no:11,name:"permission",kind:"message",T:Ke},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8}])),function(e){e[e.JOINING=0]="JOINING",e[e.JOINED=1]="JOINED",e[e.ACTIVE=2]="ACTIVE",e[e.DISCONNECTED=3]="DISCONNECTED"}(He||(He={})),Ee.util.setEnumType(He,"livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]);class Xe extends w{constructor(e){super(),Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Xe).fromBinary(e,t)}static fromJson(e,t){return(new Xe).fromJson(e,t)}static fromJsonString(e,t){return(new Xe).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Xe,e,t)}}Xe.runtime=Ee,Xe.typeName="livekit.Encryption",Xe.fields=Ee.util.newFieldList((()=>[])),function(e){e[e.NONE=0]="NONE",e[e.GCM=1]="GCM",e[e.CUSTOM=2]="CUSTOM"}(Ge||(Ge={})),Ee.util.setEnumType(Ge,"livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]);class Ze extends w{constructor(e){super(),this.mimeType="",this.mid="",this.cid="",this.layers=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Ze).fromBinary(e,t)}static fromJson(e,t){return(new Ze).fromJson(e,t)}static fromJsonString(e,t){return(new Ze).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Ze,e,t)}}Ze.runtime=Ee,Ze.typeName="livekit.SimulcastCodecInfo",Ze.fields=Ee.util.newFieldList((()=>[{no:1,name:"mime_type",kind:"scalar",T:9},{no:2,name:"mid",kind:"scalar",T:9},{no:3,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:et,repeated:!0}]));class $e extends w{constructor(e){super(),this.sid="",this.type=Le.AUDIO,this.name="",this.muted=!1,this.width=0,this.height=0,this.simulcast=!1,this.disableDtx=!1,this.source=Ne.UNKNOWN,this.layers=[],this.mimeType="",this.mid="",this.codecs=[],this.stereo=!1,this.disableRed=!1,this.encryption=Ge.NONE,this.stream="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new $e).fromBinary(e,t)}static fromJson(e,t){return(new $e).fromJson(e,t)}static fromJsonString(e,t){return(new $e).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals($e,e,t)}}$e.runtime=Ee,$e.typeName="livekit.TrackInfo",$e.fields=Ee.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:Ee.getEnumType(Le)},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"muted",kind:"scalar",T:8},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"simulcast",kind:"scalar",T:8},{no:8,name:"disable_dtx",kind:"scalar",T:8},{no:9,name:"source",kind:"enum",T:Ee.getEnumType(Ne)},{no:10,name:"layers",kind:"message",T:et,repeated:!0},{no:11,name:"mime_type",kind:"scalar",T:9},{no:12,name:"mid",kind:"scalar",T:9},{no:13,name:"codecs",kind:"message",T:Ze,repeated:!0},{no:14,name:"stereo",kind:"scalar",T:8},{no:15,name:"disable_red",kind:"scalar",T:8},{no:16,name:"encryption",kind:"enum",T:Ee.getEnumType(Ge)},{no:17,name:"stream",kind:"scalar",T:9}]));class et extends w{constructor(t){super(),this.quality=e.VideoQuality.LOW,this.width=0,this.height=0,this.bitrate=0,this.ssrc=0,Ee.util.initPartial(t,this)}static fromBinary(e,t){return(new et).fromBinary(e,t)}static fromJson(e,t){return(new et).fromJson(e,t)}static fromJsonString(e,t){return(new et).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(et,e,t)}}et.runtime=Ee,et.typeName="livekit.VideoLayer",et.fields=Ee.util.newFieldList((()=>[{no:1,name:"quality",kind:"enum",T:Ee.getEnumType(e.VideoQuality)},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13},{no:4,name:"bitrate",kind:"scalar",T:13},{no:5,name:"ssrc",kind:"scalar",T:13}]));class tt extends w{constructor(t){super(),this.kind=e.DataPacket_Kind.RELIABLE,this.value={case:void 0},Ee.util.initPartial(t,this)}static fromBinary(e,t){return(new tt).fromBinary(e,t)}static fromJson(e,t){return(new tt).fromJson(e,t)}static fromJsonString(e,t){return(new tt).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(tt,e,t)}}tt.runtime=Ee,tt.typeName="livekit.DataPacket",tt.fields=Ee.util.newFieldList((()=>[{no:1,name:"kind",kind:"enum",T:Ee.getEnumType(e.DataPacket_Kind)},{no:2,name:"user",kind:"message",T:rt,oneof:"value"},{no:3,name:"speaker",kind:"message",T:it,oneof:"value"}])),e.DataPacket_Kind=void 0,(ze=e.DataPacket_Kind||(e.DataPacket_Kind={}))[ze.RELIABLE=0]="RELIABLE",ze[ze.LOSSY=1]="LOSSY",Ee.util.setEnumType(e.DataPacket_Kind,"livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]);class it extends w{constructor(e){super(),this.speakers=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new it).fromBinary(e,t)}static fromJson(e,t){return(new it).fromJson(e,t)}static fromJsonString(e,t){return(new it).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(it,e,t)}}it.runtime=Ee,it.typeName="livekit.ActiveSpeakerUpdate",it.fields=Ee.util.newFieldList((()=>[{no:1,name:"speakers",kind:"message",T:nt,repeated:!0}]));class nt extends w{constructor(e){super(),this.sid="",this.level=0,this.active=!1,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new nt).fromBinary(e,t)}static fromJson(e,t){return(new nt).fromJson(e,t)}static fromJsonString(e,t){return(new nt).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(nt,e,t)}}nt.runtime=Ee,nt.typeName="livekit.SpeakerInfo",nt.fields=Ee.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}]));class rt extends w{constructor(e){super(),this.participantSid="",this.payload=new Uint8Array(0),this.destinationSids=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new rt).fromBinary(e,t)}static fromJson(e,t){return(new rt).fromJson(e,t)}static fromJsonString(e,t){return(new rt).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(rt,e,t)}}rt.runtime=Ee,rt.typeName="livekit.UserPacket",rt.fields=Ee.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0}]));class st extends w{constructor(e){super(),this.participantSid="",this.trackSids=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new st).fromBinary(e,t)}static fromJson(e,t){return(new st).fromJson(e,t)}static fromJsonString(e,t){return(new st).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(st,e,t)}}st.runtime=Ee,st.typeName="livekit.ParticipantTracks",st.fields=Ee.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]));class ot extends w{constructor(e){super(),this.edition=Qe.Standard,this.version="",this.protocol=0,this.region="",this.nodeId="",this.debugInfo="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new ot).fromBinary(e,t)}static fromJson(e,t){return(new ot).fromJson(e,t)}static fromJsonString(e,t){return(new ot).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(ot,e,t)}}ot.runtime=Ee,ot.typeName="livekit.ServerInfo",ot.fields=Ee.util.newFieldList((()=>[{no:1,name:"edition",kind:"enum",T:Ee.getEnumType(Qe)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"region",kind:"scalar",T:9},{no:5,name:"node_id",kind:"scalar",T:9},{no:6,name:"debug_info",kind:"scalar",T:9}])),function(e){e[e.Standard=0]="Standard",e[e.Cloud=1]="Cloud"}(Qe||(Qe={})),Ee.util.setEnumType(Qe,"livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]);class at extends w{constructor(e){super(),this.sdk=Ye.UNKNOWN,this.version="",this.protocol=0,this.os="",this.osVersion="",this.deviceModel="",this.browser="",this.browserVersion="",this.address="",this.network="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new at).fromBinary(e,t)}static fromJson(e,t){return(new at).fromJson(e,t)}static fromJsonString(e,t){return(new at).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(at,e,t)}}at.runtime=Ee,at.typeName="livekit.ClientInfo",at.fields=Ee.util.newFieldList((()=>[{no:1,name:"sdk",kind:"enum",T:Ee.getEnumType(Ye)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"os",kind:"scalar",T:9},{no:5,name:"os_version",kind:"scalar",T:9},{no:6,name:"device_model",kind:"scalar",T:9},{no:7,name:"browser",kind:"scalar",T:9},{no:8,name:"browser_version",kind:"scalar",T:9},{no:9,name:"address",kind:"scalar",T:9},{no:10,name:"network",kind:"scalar",T:9}])),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.JS=1]="JS",e[e.SWIFT=2]="SWIFT",e[e.ANDROID=3]="ANDROID",e[e.FLUTTER=4]="FLUTTER",e[e.GO=5]="GO",e[e.UNITY=6]="UNITY",e[e.REACT_NATIVE=7]="REACT_NATIVE",e[e.RUST=8]="RUST"}(Ye||(Ye={})),Ee.util.setEnumType(Ye,"livekit.ClientInfo.SDK",[{no:0,name:"UNKNOWN"},{no:1,name:"JS"},{no:2,name:"SWIFT"},{no:3,name:"ANDROID"},{no:4,name:"FLUTTER"},{no:5,name:"GO"},{no:6,name:"UNITY"},{no:7,name:"REACT_NATIVE"},{no:8,name:"RUST"}]);class ct extends w{constructor(e){super(),this.resumeConnection=Oe.UNSET,this.forceRelay=Oe.UNSET,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new ct).fromBinary(e,t)}static fromJson(e,t){return(new ct).fromJson(e,t)}static fromJsonString(e,t){return(new ct).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(ct,e,t)}}ct.runtime=Ee,ct.typeName="livekit.ClientConfiguration",ct.fields=Ee.util.newFieldList((()=>[{no:1,name:"video",kind:"message",T:dt},{no:2,name:"screen",kind:"message",T:dt},{no:3,name:"resume_connection",kind:"enum",T:Ee.getEnumType(Oe)},{no:4,name:"disabled_codecs",kind:"message",T:ut},{no:5,name:"force_relay",kind:"enum",T:Ee.getEnumType(Oe)}]));class dt extends w{constructor(e){super(),this.hardwareEncoder=Oe.UNSET,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new dt).fromBinary(e,t)}static fromJson(e,t){return(new dt).fromJson(e,t)}static fromJsonString(e,t){return(new dt).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(dt,e,t)}}dt.runtime=Ee,dt.typeName="livekit.VideoConfiguration",dt.fields=Ee.util.newFieldList((()=>[{no:1,name:"hardware_encoder",kind:"enum",T:Ee.getEnumType(Oe)}]));class ut extends w{constructor(e){super(),this.codecs=[],this.publish=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new ut).fromBinary(e,t)}static fromJson(e,t){return(new ut).fromJson(e,t)}static fromJsonString(e,t){return(new ut).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(ut,e,t)}}ut.runtime=Ee,ut.typeName="livekit.DisabledCodecs",ut.fields=Ee.util.newFieldList((()=>[{no:1,name:"codecs",kind:"message",T:Ve,repeated:!0},{no:2,name:"publish",kind:"message",T:Ve,repeated:!0}]));class lt extends w{constructor(e){super(),this.duration=0,this.packets=0,this.packetRate=0,this.bytes=O.zero,this.headerBytes=O.zero,this.bitrate=0,this.packetsLost=0,this.packetLossRate=0,this.packetLossPercentage=0,this.packetsDuplicate=0,this.packetDuplicateRate=0,this.bytesDuplicate=O.zero,this.headerBytesDuplicate=O.zero,this.bitrateDuplicate=0,this.packetsPadding=0,this.packetPaddingRate=0,this.bytesPadding=O.zero,this.headerBytesPadding=O.zero,this.bitratePadding=0,this.packetsOutOfOrder=0,this.frames=0,this.frameRate=0,this.jitterCurrent=0,this.jitterMax=0,this.gapHistogram={},this.nacks=0,this.nackAcks=0,this.nackMisses=0,this.nackRepeated=0,this.plis=0,this.firs=0,this.rttCurrent=0,this.rttMax=0,this.keyFrames=0,this.layerLockPlis=0,this.sampleRate=0,this.driftMs=0,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new lt).fromBinary(e,t)}static fromJson(e,t){return(new lt).fromJson(e,t)}static fromJsonString(e,t){return(new lt).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(lt,e,t)}}lt.runtime=Ee,lt.typeName="livekit.RTPStats",lt.fields=Ee.util.newFieldList((()=>[{no:1,name:"start_time",kind:"message",T:Je},{no:2,name:"end_time",kind:"message",T:Je},{no:3,name:"duration",kind:"scalar",T:1},{no:4,name:"packets",kind:"scalar",T:13},{no:5,name:"packet_rate",kind:"scalar",T:1},{no:6,name:"bytes",kind:"scalar",T:4},{no:39,name:"header_bytes",kind:"scalar",T:4},{no:7,name:"bitrate",kind:"scalar",T:1},{no:8,name:"packets_lost",kind:"scalar",T:13},{no:9,name:"packet_loss_rate",kind:"scalar",T:1},{no:10,name:"packet_loss_percentage",kind:"scalar",T:2},{no:11,name:"packets_duplicate",kind:"scalar",T:13},{no:12,name:"packet_duplicate_rate",kind:"scalar",T:1},{no:13,name:"bytes_duplicate",kind:"scalar",T:4},{no:40,name:"header_bytes_duplicate",kind:"scalar",T:4},{no:14,name:"bitrate_duplicate",kind:"scalar",T:1},{no:15,name:"packets_padding",kind:"scalar",T:13},{no:16,name:"packet_padding_rate",kind:"scalar",T:1},{no:17,name:"bytes_padding",kind:"scalar",T:4},{no:41,name:"header_bytes_padding",kind:"scalar",T:4},{no:18,name:"bitrate_padding",kind:"scalar",T:1},{no:19,name:"packets_out_of_order",kind:"scalar",T:13},{no:20,name:"frames",kind:"scalar",T:13},{no:21,name:"frame_rate",kind:"scalar",T:1},{no:22,name:"jitter_current",kind:"scalar",T:1},{no:23,name:"jitter_max",kind:"scalar",T:1},{no:24,name:"gap_histogram",kind:"map",K:5,V:{kind:"scalar",T:13}},{no:25,name:"nacks",kind:"scalar",T:13},{no:37,name:"nack_acks",kind:"scalar",T:13},{no:26,name:"nack_misses",kind:"scalar",T:13},{no:38,name:"nack_repeated",kind:"scalar",T:13},{no:27,name:"plis",kind:"scalar",T:13},{no:28,name:"last_pli",kind:"message",T:Je},{no:29,name:"firs",kind:"scalar",T:13},{no:30,name:"last_fir",kind:"message",T:Je},{no:31,name:"rtt_current",kind:"scalar",T:13},{no:32,name:"rtt_max",kind:"scalar",T:13},{no:33,name:"key_frames",kind:"scalar",T:13},{no:34,name:"last_key_frame",kind:"message",T:Je},{no:35,name:"layer_lock_plis",kind:"scalar",T:13},{no:36,name:"last_layer_lock_pli",kind:"message",T:Je},{no:42,name:"sample_rate",kind:"scalar",T:1},{no:43,name:"drift_ms",kind:"scalar",T:1}]));class ht extends w{constructor(e){super(),this.unixMicro=O.zero,this.ticks=0,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new ht).fromBinary(e,t)}static fromJson(e,t){return(new ht).fromJson(e,t)}static fromJsonString(e,t){return(new ht).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(ht,e,t)}}ht.runtime=Ee,ht.typeName="livekit.TimedVersion",ht.fields=Ee.util.newFieldList((()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]));const pt=7e3,mt=[0,300,1200,2700,4800,pt,pt,pt,pt,pt];class ft{constructor(e){this._retryDelays=void 0!==e?[...e]:mt}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;const t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+1e3*Math.random()}}function vt(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}c((n=n.apply(e,t||[])).next())}))}function gt(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function yt(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,i=e[Symbol.asyncIterator];return i?i.call(e):(e=gt(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(i){t[i]=e[i]&&function(t){return new Promise((function(n,r){(function(e,t,i,n){Promise.resolve(n).then((function(t){e({value:t,done:i})}),t)})(n,r,(t=e[i](t)).done,t.value)}))}}}var kt,bt={exports:{}},Tt="object"==typeof Reflect?Reflect:null,St=Tt&&"function"==typeof Tt.apply?Tt.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)};kt=Tt&&"function"==typeof Tt.ownKeys?Tt.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var wt=Number.isNaN||function(e){return e!=e};function Et(){Et.init.call(this)}bt.exports=Et,bt.exports.once=function(e,t){return new Promise((function(i,n){function r(i){e.removeListener(t,s),n(i)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",r),i([].slice.call(arguments))}Mt(e,t,s,{once:!0}),"error"!==t&&function(e,t,i){"function"==typeof e.on&&Mt(e,"error",t,i)}(e,r,{once:!0})}))},Et.EventEmitter=Et,Et.prototype._events=void 0,Et.prototype._eventsCount=0,Et.prototype._maxListeners=void 0;var Ct=10;function Pt(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function Rt(e){return void 0===e._maxListeners?Et.defaultMaxListeners:e._maxListeners}function It(e,t,i,n){var r,s,o,a;if(Pt(i),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),s=e._events),o=s[t]),void 0===o)o=s[t]=i,++e._eventsCount;else if("function"==typeof o?o=s[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),(r=Rt(e))>0&&o.length>r&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,console&&console.warn&&console.warn(a)}return e}function Dt(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function _t(e,t,i){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:i},r=Dt.bind(n);return r.listener=i,n.wrapFn=r,r}function Lt(e,t,i){var n=e._events;if(void 0===n)return[];var r=n[t];return void 0===r?[]:"function"==typeof r?i?[r.listener||r]:[r]:i?function(e){for(var t=new Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(r):At(r,r.length)}function Nt(e){var t=this._events;if(void 0!==t){var i=t[e];if("function"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function At(e,t){for(var i=new Array(t),n=0;n<t;++n)i[n]=e[n];return i}function Mt(e,t,i,n){if("function"==typeof e.on)n.once?e.once(t,i):e.on(t,i);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function r(s){n.once&&e.removeEventListener(t,r),i(s)}))}}Object.defineProperty(Et,"defaultMaxListeners",{enumerable:!0,get:function(){return Ct},set:function(e){if("number"!=typeof e||e<0||wt(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Ct=e}}),Et.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Et.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||wt(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Et.prototype.getMaxListeners=function(){return Rt(this)},Et.prototype.emit=function(e){for(var t=[],i=1;i<arguments.length;i++)t.push(arguments[i]);var n="error"===e,r=this._events;if(void 0!==r)n=n&&void 0===r.error;else if(!n)return!1;if(n){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var o=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw o.context=s,o}var a=r[e];if(void 0===a)return!1;if("function"==typeof a)St(a,this,t);else{var c=a.length,d=At(a,c);for(i=0;i<c;++i)St(d[i],this,t)}return!0},Et.prototype.addListener=function(e,t){return It(this,e,t,!1)},Et.prototype.on=Et.prototype.addListener,Et.prototype.prependListener=function(e,t){return It(this,e,t,!0)},Et.prototype.once=function(e,t){return Pt(t),this.on(e,_t(this,e,t)),this},Et.prototype.prependOnceListener=function(e,t){return Pt(t),this.prependListener(e,_t(this,e,t)),this},Et.prototype.removeListener=function(e,t){var i,n,r,s,o;if(Pt(t),void 0===(n=this._events))return this;if(void 0===(i=n[e]))return this;if(i===t||i.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(r=-1,s=i.length-1;s>=0;s--)if(i[s]===t||i[s].listener===t){o=i[s].listener,r=s;break}if(r<0)return this;0===r?i.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(i,r),1===i.length&&(n[e]=i[0]),void 0!==n.removeListener&&this.emit("removeListener",e,o||t)}return this},Et.prototype.off=Et.prototype.removeListener,Et.prototype.removeAllListeners=function(e){var t,i,n;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[e]),this;if(0===arguments.length){var r,s=Object.keys(i);for(n=0;n<s.length;++n)"removeListener"!==(r=s[n])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},Et.prototype.listeners=function(e){return Lt(this,e,!0)},Et.prototype.rawListeners=function(e){return Lt(this,e,!1)},Et.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Nt.call(e,t)},Et.prototype.listenerCount=Nt,Et.prototype.eventNames=function(){return this._eventsCount>0?kt(this._events):[]};var Ot=bt.exports;let xt=!0,Ut=!0;function Bt(e,t,i){const n=e.match(t);return n&&n.length>=i&&parseInt(n[i],10)}function Ft(e,t,i){if(!e.RTCPeerConnection)return;const n=e.RTCPeerConnection.prototype,r=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return r.apply(this,arguments);const s=e=>{const t=i(e);t&&(n.handleEvent?n.handleEvent(t):n(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(n,s),r.apply(this,[e,s])};const s=n.removeEventListener;n.removeEventListener=function(e,i){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(i))return s.apply(this,arguments);const n=this._eventMap[t].get(i);return this._eventMap[t].delete(i),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,n])},Object.defineProperty(n,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function Jt(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(xt=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function jt(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Ut=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function Vt(){if("object"==typeof window){if(xt)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function qt(e,t){Ut&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Kt(e){return"[object Object]"===Object.prototype.toString.call(e)}function Wt(e){return Kt(e)?Object.keys(e).reduce((function(t,i){const n=Kt(e[i]),r=n?Wt(e[i]):e[i],s=n&&!Object.keys(r).length;return void 0===r||s?t:Object.assign(t,{[i]:r})}),{}):e}function Ht(e,t,i){t&&!i.has(t.id)&&(i.set(t.id,t),Object.keys(t).forEach((n=>{n.endsWith("Id")?Ht(e,e.get(t[n]),i):n.endsWith("Ids")&&t[n].forEach((t=>{Ht(e,e.get(t),i)}))})))}function Gt(e,t,i){const n=i?"outbound-rtp":"inbound-rtp",r=new Map;if(null===t)return r;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((i=>{i.type===n&&i.trackId===t.id&&Ht(e,i,r)}))})),r}const zt=Vt;function Qt(e,t){const i=e&&e.navigator;if(!i.mediaDevices)return;const n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((i=>{if("require"===i||"advanced"===i||"mediaSource"===i)return;const n="object"==typeof e[i]?e[i]:{ideal:e[i]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);const r=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==n.ideal){t.optional=t.optional||[];let e={};"number"==typeof n.ideal?(e[r("min",i)]=n.ideal,t.optional.push(e),e={},e[r("max",i)]=n.ideal,t.optional.push(e)):(e[r("",i)]=n.ideal,t.optional.push(e))}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[r("",i)]=n.exact):["min","max"].forEach((e=>{void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[r(e,i)]=n[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},r=function(e,r){if(t.version>=61)return r(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=n(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!i.mediaDevices.getSupportedConstraints||!i.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return i.mediaDevices.enumerateDevices().then((i=>{let o=(i=i.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&i.length&&t.includes("back")&&(o=i[i.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=n(e.video),zt("chrome: "+JSON.stringify(e)),r(e)}))}e.video=n(e.video)}return zt("chrome: "+JSON.stringify(e)),r(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(i.getUserMedia=function(e,t,n){r(e,(e=>{i.webkitGetUserMedia(e,t,(e=>{n&&n(s(e))}))}))}.bind(i),i.mediaDevices.getUserMedia){const e=i.mediaDevices.getUserMedia.bind(i.mediaDevices);i.mediaDevices.getUserMedia=function(t){return r(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function Yt(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Xt(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===i.track.id)):{track:i.track};const r=new Event("track");r.track=i.track,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)})),t.stream.getTracks().forEach((i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===i.id)):{track:i};const r=new Event("track");r.track=i,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Ft(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function Zt(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let r=i.apply(this,arguments);return r||(r=t(this,e),this._senders.push(r)),r};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function $t(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,i,n]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const r=function(e){const t={};return e.result().forEach((e=>{const i={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{i[t]=e.stat(t)})),t[i.id]=i})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const n=function(e){i(s(r(e)))};return t.apply(this,[n,e])}return new Promise(((e,i)=>{t.apply(this,[function(t){e(s(r(t)))},i])})).then(i,n)}}function ei(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Gt(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Ft(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>Gt(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,i,n;return this.getSenders().forEach((i=>{i.track===e&&(t?n=!0:t=i)})),this.getReceivers().forEach((t=>(t.track===e&&(i?n=!0:i=t),t.track===e))),n||t&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function ti(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){if(!i)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const n=t.apply(this,arguments);return this._shimmedLocalStreams[i.id]?-1===this._shimmedLocalStreams[i.id].indexOf(n)&&this._shimmedLocalStreams[i.id].push(n):this._shimmedLocalStreams[i.id]=[i,n],n};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();i.apply(this,arguments);const n=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(n)};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};const r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const i=this._shimmedLocalStreams[t].indexOf(e);-1!==i&&this._shimmedLocalStreams[t].splice(i,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),r.apply(this,arguments)}}function ii(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return ti(e);const i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=i.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const i=new e.MediaStream(t.getTracks());this._streams[t.id]=i,this._reverseStreams[i.id]=t,t=i}n.apply(this,[t])};const r=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(r.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:i})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,i){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const n=[].slice.call(arguments,1);if(1!==n.length||!n[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const r=this._streams[i.id];if(r)r.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const n=new e.MediaStream([t]);this._streams[i.id]=n,this._reverseStreams[n.id]=i,this.addStream(n)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?i.apply(this,[t=>{const i=s(this,t);e[0].apply(null,[i])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):i.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=n[t]}));const o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(n.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:i})}(this,arguments[0]),o.apply(this,arguments)):o.apply(this,arguments)};const a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=a.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((i=>{this._streams[i].getTracks().find((t=>e.track===t))&&(t=this._streams[i])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function ni(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}))}function ri(e,t){Ft(e,"negotiationneeded",(e=>{const i=e.target;if(!(t.version<72||i.getConfiguration&&"plan-b"===i.getConfiguration().sdpSemantics)||"stable"===i.signalingState)return e}))}var si=Object.freeze({__proto__:null,fixNegotiationNeeded:ri,shimAddTrackRemoveTrack:ii,shimAddTrackRemoveTrackWithNative:ti,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(i){return t(i).then((t=>{const n=i.video&&i.video.width,r=i.video&&i.video.height,s=i.video&&i.video.frameRate;return i.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},n&&(i.video.mandatory.maxWidth=n),r&&(i.video.mandatory.maxHeight=r),e.navigator.mediaDevices.getUserMedia(i)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:Zt,shimGetStats:$t,shimGetUserMedia:Qt,shimMediaStream:Yt,shimOnTrack:Xt,shimPeerConnection:ni,shimSenderReceiverGetStats:ei});function oi(e,t){const i=e&&e.navigator,n=e&&e.MediaStreamTrack;if(i.getUserMedia=function(e,t,n){qt("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){const e=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])},t=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(i){return"object"==typeof i&&"object"==typeof i.audio&&(i=JSON.parse(JSON.stringify(i)),e(i.audio,"autoGainControl","mozAutoGainControl"),e(i.audio,"noiseSuppression","mozNoiseSuppression")),t(i)},n&&n.prototype.getSettings){const t=n.prototype.getSettings;n.prototype.getSettings=function(){const i=t.apply(this,arguments);return e(i,"mozAutoGainControl","autoGainControl"),e(i,"mozNoiseSuppression","noiseSuppression"),i}}if(n&&n.prototype.applyConstraints){const t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(i){return"audio"===this.kind&&"object"==typeof i&&(i=JSON.parse(JSON.stringify(i)),e(i,"autoGainControl","mozAutoGainControl"),e(i,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[i])}}}}function ai(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ci(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}));const i={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,s]=arguments;return n.apply(this,[e||null]).then((e=>{if(t.version<53&&!r)try{e.forEach((e=>{e.type=i[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,n)=>{e.set(n,Object.assign({},t,{type:i[t.type]||t.type}))}))}return e})).then(r,s)}}function di(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function ui(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Ft(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function li(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){qt("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function hi(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function pi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const i=e.length>0;i&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const n=t.apply(this,arguments);if(i){const{sender:t}=n,i=t.getParameters();(!("encodings"in i)||1===i.encodings.length&&0===Object.keys(i.encodings[0]).length)&&(i.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(i).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return n})}function mi(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function fi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function vi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var gi=Object.freeze({__proto__:null,shimAddTransceiver:pi,shimCreateAnswer:vi,shimCreateOffer:fi,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(i){if(!i||!i.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===i.video?i.video={mediaSource:t}:i.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(i)})},shimGetParameters:mi,shimGetUserMedia:oi,shimOnTrack:ai,shimPeerConnection:ci,shimRTCDataChannel:hi,shimReceiverGetStats:ui,shimRemoveStream:li,shimSenderGetStats:di});function yi(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((i=>t.call(this,i,e))),e.getVideoTracks().forEach((i=>t.call(this,i,e)))},e.RTCPeerConnection.prototype.addTrack=function(e){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return n&&n.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const i=e.getTracks();this.getSenders().forEach((e=>{i.includes(e.track)&&this.removeTrack(e)}))})}}function ki(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const i=new Event("addstream");i.stream=t,e.dispatchEvent(i)}))}),t.apply(e,arguments)}}}function bi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,i=t.createOffer,n=t.createAnswer,r=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const n=arguments.length>=2?arguments[2]:arguments[0],r=i.apply(this,[n]);return t?(r.then(e,t),Promise.resolve()):r},t.createAnswer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],r=n.apply(this,[i]);return t?(r.then(e,t),Promise.resolve()):r};let a=function(e,t,i){const n=r.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n};t.setLocalDescription=a,a=function(e,t,i){const n=s.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.setRemoteDescription=a,a=function(e,t,i){const n=o.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.addIceCandidate=a}function Ti(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,i=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>i(Si(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,i,n){t.mediaDevices.getUserMedia(e).then(i,n)}.bind(t))}function Si(e){return e&&void 0!==e.video?Object.assign({},e,{video:Wt(e.video)}):e}function wi(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,i){if(e&&e.iceServers){const t=[];for(let i=0;i<e.iceServers.length;i++){let n=e.iceServers[i];void 0===n.urls&&n.url?(qt("RTCIceServer.url","RTCIceServer.urls"),n=JSON.parse(JSON.stringify(n)),n.urls=n.url,delete n.url,t.push(n)):t.push(e.iceServers[i])}e.iceServers=t}return new t(e,i)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Ei(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Ci(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const i=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":"recvonly"===i.direction&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):!0!==e.offerToReceiveVideo||i||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Pi(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Ri=Object.freeze({__proto__:null,shimAudioContext:Pi,shimCallbacksAPI:bi,shimConstraints:Si,shimCreateOfferLegacy:Ci,shimGetUserMedia:Ti,shimLocalStreamsAPI:yi,shimRTCIceServerUrls:wi,shimRemoteStreamsAPI:ki,shimTrackEventTransceiver:Ei}),Ii={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const i=t.splitSections(e);return i&&i[0]},t.getMediaSections=function(e){const i=t.splitSections(e);return i.shift(),i},t.matchPrefix=function(e,i){return t.splitLines(e).filter((e=>0===e.indexOf(i)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const i={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":i.relatedAddress=t[e+1];break;case"rport":i.relatedPort=parseInt(t[e+1],10);break;case"tcptype":i.tcpType=t[e+1];break;case"ufrag":i.ufrag=t[e+1],i.usernameFragment=t[e+1];break;default:void 0===i[t[e]]&&(i[t[e]]=t[e+1])}return i},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const i=e.component;"rtp"===i?t.push(1):"rtcp"===i?t.push(2):t.push(i),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const n=e.type;return t.push("typ"),t.push(n),"host"!==n&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const i={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),i.name=t[0],i.clockRate=parseInt(t[1],10),i.channels=3===t.length?parseInt(t[2],10):1,i.numChannels=i.channels,i},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const i=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==i?"/"+i:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let i;const n=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<n.length;e++)i=n[e].trim().split("="),t[i[0].trim()]=i[1];return t},t.writeFmtp=function(e){let t="",i=e.payloadType;if(void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const n=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?n.push(t+"="+e.parameters[t]):n.push(t)})),t+="a=fmtp:"+i+" "+n.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",i=e.payloadType;return void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+i+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),i={ssrc:parseInt(e.substring(7,t),10)},n=e.indexOf(":",t);return n>-1?(i.attribute=e.substring(t+1,n),i.value=e.substring(n+1)):i.attribute=e.substring(t+1),i},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const i=t.matchPrefix(e,"a=mid:")[0];if(i)return i.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,i){return{role:"auto",fingerprints:t.matchPrefix(e+i,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let i="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{i+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),i},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,i){return t.matchPrefix(e+i,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,i){const n=t.matchPrefix(e+i,"a=ice-ufrag:")[0],r=t.matchPrefix(e+i,"a=ice-pwd:")[0];return n&&r?{usernameFragment:n.substring(12),password:r.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const i={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=t.splitLines(e)[0].split(" ");i.profile=n[2];for(let r=3;r<n.length;r++){const s=n[r],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){const n=t.parseRtpMap(o),r=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(n.parameters=r.length?t.parseFmtp(r[0]):{},n.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),i.codecs.push(n),n.name.toUpperCase()){case"RED":case"ULPFEC":i.fecMechanisms.push(n.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{i.headerExtensions.push(t.parseExtmap(e))}));const r=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return i.codecs.forEach((e=>{r.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),i},t.writeRtpDescription=function(e,i){let n="";n+="m="+e+" ",n+=i.codecs.length>0?"9":"0",n+=" "+(i.profile||"UDP/TLS/RTP/SAVPF")+" ",n+=i.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",i.codecs.forEach((e=>{n+=t.writeRtpMap(e),n+=t.writeFmtp(e),n+=t.writeRtcpFb(e)}));let r=0;return i.codecs.forEach((e=>{e.maxptime>r&&(r=e.maxptime)})),r>0&&(n+="a=maxptime:"+r+"\r\n"),i.headerExtensions&&i.headerExtensions.forEach((e=>{n+=t.writeExtmap(e)})),n},t.parseRtpEncodingParameters=function(e){const i=[],n=t.parseRtpParameters(e),r=-1!==n.fecMechanisms.indexOf("RED"),s=-1!==n.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),a=o.length>0&&o[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===a&&(c=d[0][1]),n.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&c&&(t.rtx={ssrc:c}),i.push(t),r&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:s?"red+ulpfec":"red"},i.push(t))}})),0===i.length&&a&&i.push({ssrc:a});let u=t.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substring(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substring(5),10)*.95-16e3:void 0,i.forEach((e=>{e.maxBitrate=u}))),i},t.parseRtcpParameters=function(e){const i={},n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];n&&(i.cname=n.value,i.ssrc=n.ssrc);const r=t.matchPrefix(e,"a=rtcp-rsize");i.reducedSize=r.length>0,i.compound=0===r.length;const s=t.matchPrefix(e,"a=rtcp-mux");return i.mux=s.length>0,i},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let i;const n=t.matchPrefix(e,"a=msid:");if(1===n.length)return i=n[0].substring(7).split(" "),{stream:i[0],track:i[1]};const r=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return r.length>0?(i=r[0].value.split(" "),{stream:i[0],track:i[1]}):void 0},t.parseSctpDescription=function(e){const i=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");let r;n.length>0&&(r=parseInt(n[0].substring(19),10)),isNaN(r)&&(r=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:i.fmt,maxMessageSize:r};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:r}}},t.writeSctpDescription=function(e,t){let i=[];return i="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&i.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),i.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,i,n){let r;const s=void 0!==i?i:2;r=e||t.generateSessionId();return"v=0\r\no="+(n||"thisisadapterortc")+" "+r+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,i){const n=t.splitLines(e);for(let e=0;e<n.length;e++)switch(n[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[e].substring(2)}return i?t.getDirection(i):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const i=t.splitLines(e)[0].substring(2).split(" ");return{kind:i[0],port:parseInt(i[1],10),protocol:i[2],fmt:i.slice(3).join(" ")}},t.parseOLine=function(e){const i=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:i[0],sessionId:i[1],sessionVersion:parseInt(i[2],10),netType:i[3],addressType:i[4],address:i[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const i=t.splitLines(e);for(let e=0;e<i.length;e++)if(i[e].length<2||"="!==i[e].charAt(1))return!1;return!0},e.exports=t}(Ii);var Di=Ii.exports,_i=n(Di),Li=t({__proto__:null,default:_i},[Di]);function Ni(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const i=new t(e),n=_i.parseCandidate(e.candidate);for(const e in n)e in i||Object.defineProperty(i,e,{value:n[e]});return i.toJSON=function(){return{candidate:i.candidate,sdpMid:i.sdpMid,sdpMLineIndex:i.sdpMLineIndex,usernameFragment:i.usernameFragment}},i}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,Ft(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Ai(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Ft(e,"icecandidate",(e=>{if(e.candidate){const t=_i.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function Mi(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=_i.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=_i.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const i=parseInt(t[1],10);return i!=i?-1:i}(arguments[0]),i=function(e){let i=65536;return"firefox"===t.browser&&(i=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),i}(e),n=function(e,i){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);const r=_i.matchPrefix(e.sdp,"a=max-message-size:");return r.length>0?n=parseInt(r[0].substring(19),10):"firefox"===t.browser&&-1!==i&&(n=2147483637),n}(arguments[0],e);let r;r=0===i&&0===n?Number.POSITIVE_INFINITY:0===i||0===n?Math.max(i,n):Math.min(i,n);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>r}),this._sctp=s}return i.apply(this,arguments)}}function Oi(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const i=e.send;e.send=function(){const n=arguments[0],r=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&r>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return i.apply(e,arguments)}}const i=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=i.apply(this,arguments);return t(e,this),e},Ft(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function xi(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const i=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const i=new Event("connectionstatechange",e);t.dispatchEvent(i)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),i.apply(this,arguments)}}))}function Ui(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const i=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:i}):t.sdp=i}return i.apply(this,arguments)}}function Bi(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const i=e.RTCPeerConnection.prototype.addIceCandidate;i&&0!==i.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():i.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Fi(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const i=e.RTCPeerConnection.prototype.setLocalDescription;i&&0!==i.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return i.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return i.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>i.apply(this,[e])))})}var Ji,ji,Vi,qi,Ki=Object.freeze({__proto__:null,removeExtmapAllowMixed:Ui,shimAddIceCandidateNullOrEmpty:Bi,shimConnectionState:xi,shimMaxMessageSize:Mi,shimParameterlessSetLocalDescription:Fi,shimRTCIceCandidate:Ni,shimRTCIceCandidateRelayProtocol:Ai,shimSendThrowTypeError:Oi});!function(){let{window:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0};const i=Vt,n=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:i}=e;if(i.mozGetUserMedia)t.browser="firefox",t.version=Bt(i.userAgent,/Firefox\/(\d+)\./,1);else if(i.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=Bt(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!i.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=Bt(i.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),r={browserDetails:n,commonShim:Ki,extractVersion:Bt,disableLog:Jt,disableWarnings:jt,sdp:Li};switch(n.browser){case"chrome":if(!si||!ni||!t.shimChrome)return i("Chrome shim is not included in this adapter release."),r;if(null===n.version)return i("Chrome shim can not determine version, not shimming."),r;i("adapter.js shimming chrome."),r.browserShim=si,Bi(e,n),Fi(e),Qt(e,n),Yt(e),ni(e,n),Xt(e),ii(e,n),Zt(e),$t(e),ei(e),ri(e,n),Ni(e),Ai(e),xi(e),Mi(e,n),Oi(e),Ui(e,n);break;case"firefox":if(!gi||!ci||!t.shimFirefox)return i("Firefox shim is not included in this adapter release."),r;i("adapter.js shimming firefox."),r.browserShim=gi,Bi(e,n),Fi(e),oi(e,n),ci(e,n),ai(e),li(e),di(e),ui(e),hi(e),pi(e),mi(e),fi(e),vi(e),Ni(e),xi(e),Mi(e,n),Oi(e);break;case"safari":if(!Ri||!t.shimSafari)return i("Safari shim is not included in this adapter release."),r;i("adapter.js shimming safari."),r.browserShim=Ri,Bi(e,n),Fi(e),wi(e),Ci(e),bi(e),yi(e),ki(e),Ei(e),Ti(e),Pi(e),Ni(e),Ai(e),Mi(e,n),Oi(e),Ui(e,n);break;default:i("Unsupported browser!")}}({window:"undefined"==typeof window?void 0:window}),function(e){e[e.PUBLISHER=0]="PUBLISHER",e[e.SUBSCRIBER=1]="SUBSCRIBER"}(Ji||(Ji={})),Ee.util.setEnumType(Ji,"livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),function(e){e[e.ACTIVE=0]="ACTIVE",e[e.PAUSED=1]="PAUSED"}(ji||(ji={})),Ee.util.setEnumType(ji,"livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),function(e){e[e.UDP=0]="UDP",e[e.TCP=1]="TCP",e[e.TLS=2]="TLS"}(Vi||(Vi={})),Ee.util.setEnumType(Vi,"livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]);class Wi extends w{constructor(e){super(),this.message={case:void 0},Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Wi).fromBinary(e,t)}static fromJson(e,t){return(new Wi).fromJson(e,t)}static fromJsonString(e,t){return(new Wi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Wi,e,t)}}Wi.runtime=Ee,Wi.typeName="livekit.SignalRequest",Wi.fields=Ee.util.newFieldList((()=>[{no:1,name:"offer",kind:"message",T:tn,oneof:"message"},{no:2,name:"answer",kind:"message",T:tn,oneof:"message"},{no:3,name:"trickle",kind:"message",T:Qi,oneof:"message"},{no:4,name:"add_track",kind:"message",T:zi,oneof:"message"},{no:5,name:"mute",kind:"message",T:Yi,oneof:"message"},{no:6,name:"subscription",kind:"message",T:rn,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:sn,oneof:"message"},{no:8,name:"leave",kind:"message",T:on,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:an,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:bn,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:Sn,oneof:"message"},{no:13,name:"simulate",kind:"message",T:En,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:cn,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:Cn,oneof:"message"}]));class Hi extends w{constructor(e){super(),this.message={case:void 0},Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Hi).fromBinary(e,t)}static fromJson(e,t){return(new Hi).fromJson(e,t)}static fromJsonString(e,t){return(new Hi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Hi,e,t)}}Hi.runtime=Ee,Hi.typeName="livekit.SignalResponse",Hi.fields=Ee.util.newFieldList((()=>[{no:1,name:"join",kind:"message",T:Xi,oneof:"message"},{no:2,name:"answer",kind:"message",T:tn,oneof:"message"},{no:3,name:"offer",kind:"message",T:tn,oneof:"message"},{no:4,name:"trickle",kind:"message",T:Qi,oneof:"message"},{no:5,name:"update",kind:"message",T:nn,oneof:"message"},{no:6,name:"track_published",kind:"message",T:$i,oneof:"message"},{no:8,name:"leave",kind:"message",T:on,oneof:"message"},{no:9,name:"mute",kind:"message",T:Yi,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:un,oneof:"message"},{no:11,name:"room_update",kind:"message",T:ln,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:pn,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:fn,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:yn,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Tn,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:en,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:Zi,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:Pn,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:Dn,oneof:"message"}]));class Gi extends w{constructor(e){super(),this.codec="",this.cid="",this.enableSimulcastLayers=!1,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Gi).fromBinary(e,t)}static fromJson(e,t){return(new Gi).fromJson(e,t)}static fromJsonString(e,t){return(new Gi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Gi,e,t)}}Gi.runtime=Ee,Gi.typeName="livekit.SimulcastCodec",Gi.fields=Ee.util.newFieldList((()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9},{no:3,name:"enable_simulcast_layers",kind:"scalar",T:8}]));class zi extends w{constructor(e){super(),this.cid="",this.name="",this.type=Le.AUDIO,this.width=0,this.height=0,this.muted=!1,this.disableDtx=!1,this.source=Ne.UNKNOWN,this.layers=[],this.simulcastCodecs=[],this.sid="",this.stereo=!1,this.disableRed=!1,this.encryption=Ge.NONE,this.stream="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new zi).fromBinary(e,t)}static fromJson(e,t){return(new zi).fromJson(e,t)}static fromJsonString(e,t){return(new zi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(zi,e,t)}}zi.runtime=Ee,zi.typeName="livekit.AddTrackRequest",zi.fields=Ee.util.newFieldList((()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:Ee.getEnumType(Le)},{no:4,name:"width",kind:"scalar",T:13},{no:5,name:"height",kind:"scalar",T:13},{no:6,name:"muted",kind:"scalar",T:8},{no:7,name:"disable_dtx",kind:"scalar",T:8},{no:8,name:"source",kind:"enum",T:Ee.getEnumType(Ne)},{no:9,name:"layers",kind:"message",T:et,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:Gi,repeated:!0},{no:11,name:"sid",kind:"scalar",T:9},{no:12,name:"stereo",kind:"scalar",T:8},{no:13,name:"disable_red",kind:"scalar",T:8},{no:14,name:"encryption",kind:"enum",T:Ee.getEnumType(Ge)},{no:15,name:"stream",kind:"scalar",T:9}]));class Qi extends w{constructor(e){super(),this.candidateInit="",this.target=Ji.PUBLISHER,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Qi).fromBinary(e,t)}static fromJson(e,t){return(new Qi).fromJson(e,t)}static fromJsonString(e,t){return(new Qi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Qi,e,t)}}Qi.runtime=Ee,Qi.typeName="livekit.TrickleRequest",Qi.fields=Ee.util.newFieldList((()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:Ee.getEnumType(Ji)}]));class Yi extends w{constructor(e){super(),this.sid="",this.muted=!1,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Yi).fromBinary(e,t)}static fromJson(e,t){return(new Yi).fromJson(e,t)}static fromJsonString(e,t){return(new Yi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Yi,e,t)}}Yi.runtime=Ee,Yi.typeName="livekit.MuteTrackRequest",Yi.fields=Ee.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]));class Xi extends w{constructor(e){super(),this.otherParticipants=[],this.serverVersion="",this.iceServers=[],this.subscriberPrimary=!1,this.alternativeUrl="",this.serverRegion="",this.pingTimeout=0,this.pingInterval=0,this.sifTrailer=new Uint8Array(0),Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Xi).fromBinary(e,t)}static fromJson(e,t){return(new Xi).fromJson(e,t)}static fromJsonString(e,t){return(new Xi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Xi,e,t)}}Xi.runtime=Ee,Xi.typeName="livekit.JoinResponse",Xi.fields=Ee.util.newFieldList((()=>[{no:1,name:"room",kind:"message",T:je},{no:2,name:"participant",kind:"message",T:We},{no:3,name:"other_participants",kind:"message",T:We,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:dn,repeated:!0},{no:6,name:"subscriber_primary",kind:"scalar",T:8},{no:7,name:"alternative_url",kind:"scalar",T:9},{no:8,name:"client_configuration",kind:"message",T:ct},{no:9,name:"server_region",kind:"scalar",T:9},{no:10,name:"ping_timeout",kind:"scalar",T:5},{no:11,name:"ping_interval",kind:"scalar",T:5},{no:12,name:"server_info",kind:"message",T:ot},{no:13,name:"sif_trailer",kind:"scalar",T:12}]));class Zi extends w{constructor(e){super(),this.iceServers=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Zi).fromBinary(e,t)}static fromJson(e,t){return(new Zi).fromJson(e,t)}static fromJsonString(e,t){return(new Zi).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Zi,e,t)}}Zi.runtime=Ee,Zi.typeName="livekit.ReconnectResponse",Zi.fields=Ee.util.newFieldList((()=>[{no:1,name:"ice_servers",kind:"message",T:dn,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:ct}]));class $i extends w{constructor(e){super(),this.cid="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new $i).fromBinary(e,t)}static fromJson(e,t){return(new $i).fromJson(e,t)}static fromJsonString(e,t){return(new $i).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals($i,e,t)}}$i.runtime=Ee,$i.typeName="livekit.TrackPublishedResponse",$i.fields=Ee.util.newFieldList((()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:$e}]));class en extends w{constructor(e){super(),this.trackSid="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new en).fromBinary(e,t)}static fromJson(e,t){return(new en).fromJson(e,t)}static fromJsonString(e,t){return(new en).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(en,e,t)}}en.runtime=Ee,en.typeName="livekit.TrackUnpublishedResponse",en.fields=Ee.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]));class tn extends w{constructor(e){super(),this.type="",this.sdp="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new tn).fromBinary(e,t)}static fromJson(e,t){return(new tn).fromJson(e,t)}static fromJsonString(e,t){return(new tn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(tn,e,t)}}tn.runtime=Ee,tn.typeName="livekit.SessionDescription",tn.fields=Ee.util.newFieldList((()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9}]));class nn extends w{constructor(e){super(),this.participants=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new nn).fromBinary(e,t)}static fromJson(e,t){return(new nn).fromJson(e,t)}static fromJsonString(e,t){return(new nn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(nn,e,t)}}nn.runtime=Ee,nn.typeName="livekit.ParticipantUpdate",nn.fields=Ee.util.newFieldList((()=>[{no:1,name:"participants",kind:"message",T:We,repeated:!0}]));class rn extends w{constructor(e){super(),this.trackSids=[],this.subscribe=!1,this.participantTracks=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new rn).fromBinary(e,t)}static fromJson(e,t){return(new rn).fromJson(e,t)}static fromJsonString(e,t){return(new rn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(rn,e,t)}}rn.runtime=Ee,rn.typeName="livekit.UpdateSubscription",rn.fields=Ee.util.newFieldList((()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"participant_tracks",kind:"message",T:st,repeated:!0}]));class sn extends w{constructor(t){super(),this.trackSids=[],this.disabled=!1,this.quality=e.VideoQuality.LOW,this.width=0,this.height=0,this.fps=0,this.priority=0,Ee.util.initPartial(t,this)}static fromBinary(e,t){return(new sn).fromBinary(e,t)}static fromJson(e,t){return(new sn).fromJson(e,t)}static fromJsonString(e,t){return(new sn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(sn,e,t)}}sn.runtime=Ee,sn.typeName="livekit.UpdateTrackSettings",sn.fields=Ee.util.newFieldList((()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:3,name:"disabled",kind:"scalar",T:8},{no:4,name:"quality",kind:"enum",T:Ee.getEnumType(e.VideoQuality)},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"fps",kind:"scalar",T:13},{no:8,name:"priority",kind:"scalar",T:13}]));class on extends w{constructor(t){super(),this.canReconnect=!1,this.reason=e.DisconnectReason.UNKNOWN_REASON,Ee.util.initPartial(t,this)}static fromBinary(e,t){return(new on).fromBinary(e,t)}static fromJson(e,t){return(new on).fromJson(e,t)}static fromJsonString(e,t){return(new on).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(on,e,t)}}on.runtime=Ee,on.typeName="livekit.LeaveRequest",on.fields=Ee.util.newFieldList((()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:Ee.getEnumType(e.DisconnectReason)}]));class an extends w{constructor(e){super(),this.trackSid="",this.layers=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new an).fromBinary(e,t)}static fromJson(e,t){return(new an).fromJson(e,t)}static fromJsonString(e,t){return(new an).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(an,e,t)}}an.runtime=Ee,an.typeName="livekit.UpdateVideoLayers",an.fields=Ee.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:et,repeated:!0}]));class cn extends w{constructor(e){super(),this.metadata="",this.name="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new cn).fromBinary(e,t)}static fromJson(e,t){return(new cn).fromJson(e,t)}static fromJsonString(e,t){return(new cn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(cn,e,t)}}cn.runtime=Ee,cn.typeName="livekit.UpdateParticipantMetadata",cn.fields=Ee.util.newFieldList((()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9}]));class dn extends w{constructor(e){super(),this.urls=[],this.username="",this.credential="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new dn).fromBinary(e,t)}static fromJson(e,t){return(new dn).fromJson(e,t)}static fromJsonString(e,t){return(new dn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(dn,e,t)}}dn.runtime=Ee,dn.typeName="livekit.ICEServer",dn.fields=Ee.util.newFieldList((()=>[{no:1,name:"urls",kind:"scalar",T:9,repeated:!0},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"credential",kind:"scalar",T:9}]));class un extends w{constructor(e){super(),this.speakers=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new un).fromBinary(e,t)}static fromJson(e,t){return(new un).fromJson(e,t)}static fromJsonString(e,t){return(new un).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(un,e,t)}}un.runtime=Ee,un.typeName="livekit.SpeakersChanged",un.fields=Ee.util.newFieldList((()=>[{no:1,name:"speakers",kind:"message",T:nt,repeated:!0}]));class ln extends w{constructor(e){super(),Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new ln).fromBinary(e,t)}static fromJson(e,t){return(new ln).fromJson(e,t)}static fromJsonString(e,t){return(new ln).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(ln,e,t)}}ln.runtime=Ee,ln.typeName="livekit.RoomUpdate",ln.fields=Ee.util.newFieldList((()=>[{no:1,name:"room",kind:"message",T:je}]));class hn extends w{constructor(e){super(),this.participantSid="",this.quality=Me.POOR,this.score=0,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new hn).fromBinary(e,t)}static fromJson(e,t){return(new hn).fromJson(e,t)}static fromJsonString(e,t){return(new hn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(hn,e,t)}}hn.runtime=Ee,hn.typeName="livekit.ConnectionQualityInfo",hn.fields=Ee.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:Ee.getEnumType(Me)},{no:3,name:"score",kind:"scalar",T:2}]));class pn extends w{constructor(e){super(),this.updates=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new pn).fromBinary(e,t)}static fromJson(e,t){return(new pn).fromJson(e,t)}static fromJsonString(e,t){return(new pn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(pn,e,t)}}pn.runtime=Ee,pn.typeName="livekit.ConnectionQualityUpdate",pn.fields=Ee.util.newFieldList((()=>[{no:1,name:"updates",kind:"message",T:hn,repeated:!0}]));class mn extends w{constructor(e){super(),this.participantSid="",this.trackSid="",this.state=ji.ACTIVE,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new mn).fromBinary(e,t)}static fromJson(e,t){return(new mn).fromJson(e,t)}static fromJsonString(e,t){return(new mn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(mn,e,t)}}mn.runtime=Ee,mn.typeName="livekit.StreamStateInfo",mn.fields=Ee.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:Ee.getEnumType(ji)}]));class fn extends w{constructor(e){super(),this.streamStates=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new fn).fromBinary(e,t)}static fromJson(e,t){return(new fn).fromJson(e,t)}static fromJsonString(e,t){return(new fn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(fn,e,t)}}fn.runtime=Ee,fn.typeName="livekit.StreamStateUpdate",fn.fields=Ee.util.newFieldList((()=>[{no:1,name:"stream_states",kind:"message",T:mn,repeated:!0}]));class vn extends w{constructor(t){super(),this.quality=e.VideoQuality.LOW,this.enabled=!1,Ee.util.initPartial(t,this)}static fromBinary(e,t){return(new vn).fromBinary(e,t)}static fromJson(e,t){return(new vn).fromJson(e,t)}static fromJsonString(e,t){return(new vn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(vn,e,t)}}vn.runtime=Ee,vn.typeName="livekit.SubscribedQuality",vn.fields=Ee.util.newFieldList((()=>[{no:1,name:"quality",kind:"enum",T:Ee.getEnumType(e.VideoQuality)},{no:2,name:"enabled",kind:"scalar",T:8}]));class gn extends w{constructor(e){super(),this.codec="",this.qualities=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new gn).fromBinary(e,t)}static fromJson(e,t){return(new gn).fromJson(e,t)}static fromJsonString(e,t){return(new gn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(gn,e,t)}}gn.runtime=Ee,gn.typeName="livekit.SubscribedCodec",gn.fields=Ee.util.newFieldList((()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:vn,repeated:!0}]));class yn extends w{constructor(e){super(),this.trackSid="",this.subscribedQualities=[],this.subscribedCodecs=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new yn).fromBinary(e,t)}static fromJson(e,t){return(new yn).fromJson(e,t)}static fromJsonString(e,t){return(new yn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(yn,e,t)}}yn.runtime=Ee,yn.typeName="livekit.SubscribedQualityUpdate",yn.fields=Ee.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:vn,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:gn,repeated:!0}]));class kn extends w{constructor(e){super(),this.participantSid="",this.allTracks=!1,this.trackSids=[],this.participantIdentity="",Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new kn).fromBinary(e,t)}static fromJson(e,t){return(new kn).fromJson(e,t)}static fromJsonString(e,t){return(new kn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(kn,e,t)}}kn.runtime=Ee,kn.typeName="livekit.TrackPermission",kn.fields=Ee.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"all_tracks",kind:"scalar",T:8},{no:3,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"participant_identity",kind:"scalar",T:9}]));class bn extends w{constructor(e){super(),this.allParticipants=!1,this.trackPermissions=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new bn).fromBinary(e,t)}static fromJson(e,t){return(new bn).fromJson(e,t)}static fromJsonString(e,t){return(new bn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(bn,e,t)}}bn.runtime=Ee,bn.typeName="livekit.SubscriptionPermission",bn.fields=Ee.util.newFieldList((()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:kn,repeated:!0}]));class Tn extends w{constructor(e){super(),this.participantSid="",this.trackSid="",this.allowed=!1,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Tn).fromBinary(e,t)}static fromJson(e,t){return(new Tn).fromJson(e,t)}static fromJsonString(e,t){return(new Tn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Tn,e,t)}}Tn.runtime=Ee,Tn.typeName="livekit.SubscriptionPermissionUpdate",Tn.fields=Ee.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"allowed",kind:"scalar",T:8}]));class Sn extends w{constructor(e){super(),this.publishTracks=[],this.dataChannels=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Sn).fromBinary(e,t)}static fromJson(e,t){return(new Sn).fromJson(e,t)}static fromJsonString(e,t){return(new Sn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Sn,e,t)}}Sn.runtime=Ee,Sn.typeName="livekit.SyncState",Sn.fields=Ee.util.newFieldList((()=>[{no:1,name:"answer",kind:"message",T:tn},{no:2,name:"subscription",kind:"message",T:rn},{no:3,name:"publish_tracks",kind:"message",T:$i,repeated:!0},{no:4,name:"data_channels",kind:"message",T:wn,repeated:!0},{no:5,name:"offer",kind:"message",T:tn}]));class wn extends w{constructor(e){super(),this.label="",this.id=0,this.target=Ji.PUBLISHER,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new wn).fromBinary(e,t)}static fromJson(e,t){return(new wn).fromJson(e,t)}static fromJsonString(e,t){return(new wn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(wn,e,t)}}wn.runtime=Ee,wn.typeName="livekit.DataChannelInfo",wn.fields=Ee.util.newFieldList((()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:Ee.getEnumType(Ji)}]));class En extends w{constructor(e){super(),this.scenario={case:void 0},Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new En).fromBinary(e,t)}static fromJson(e,t){return(new En).fromJson(e,t)}static fromJsonString(e,t){return(new En).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(En,e,t)}}En.runtime=Ee,En.typeName="livekit.SimulateScenario",En.fields=Ee.util.newFieldList((()=>[{no:1,name:"speaker_update",kind:"scalar",T:5,oneof:"scenario"},{no:2,name:"node_failure",kind:"scalar",T:8,oneof:"scenario"},{no:3,name:"migration",kind:"scalar",T:8,oneof:"scenario"},{no:4,name:"server_leave",kind:"scalar",T:8,oneof:"scenario"},{no:5,name:"switch_candidate_protocol",kind:"enum",T:Ee.getEnumType(Vi),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"}]));class Cn extends w{constructor(e){super(),this.timestamp=O.zero,this.rtt=O.zero,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Cn).fromBinary(e,t)}static fromJson(e,t){return(new Cn).fromJson(e,t)}static fromJsonString(e,t){return(new Cn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Cn,e,t)}}Cn.runtime=Ee,Cn.typeName="livekit.Ping",Cn.fields=Ee.util.newFieldList((()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]));class Pn extends w{constructor(e){super(),this.lastPingTimestamp=O.zero,this.timestamp=O.zero,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Pn).fromBinary(e,t)}static fromJson(e,t){return(new Pn).fromJson(e,t)}static fromJsonString(e,t){return(new Pn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Pn,e,t)}}Pn.runtime=Ee,Pn.typeName="livekit.Pong",Pn.fields=Ee.util.newFieldList((()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]));class Rn extends w{constructor(e){super(),this.regions=[],Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Rn).fromBinary(e,t)}static fromJson(e,t){return(new Rn).fromJson(e,t)}static fromJsonString(e,t){return(new Rn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Rn,e,t)}}Rn.runtime=Ee,Rn.typeName="livekit.RegionSettings",Rn.fields=Ee.util.newFieldList((()=>[{no:1,name:"regions",kind:"message",T:In,repeated:!0}]));class In extends w{constructor(e){super(),this.region="",this.url="",this.distance=O.zero,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new In).fromBinary(e,t)}static fromJson(e,t){return(new In).fromJson(e,t)}static fromJsonString(e,t){return(new In).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(In,e,t)}}In.runtime=Ee,In.typeName="livekit.RegionInfo",In.fields=Ee.util.newFieldList((()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}]));class Dn extends w{constructor(e){super(),this.trackSid="",this.err=Be.SE_UNKNOWN,Ee.util.initPartial(e,this)}static fromBinary(e,t){return(new Dn).fromBinary(e,t)}static fromJson(e,t){return(new Dn).fromJson(e,t)}static fromJsonString(e,t){return(new Dn).fromJsonString(e,t)}static equals(e,t){return Ee.util.equals(Dn,e,t)}}Dn.runtime=Ee,Dn.typeName="livekit.SubscriptionResponse",Dn.fields=Ee.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:Ee.getEnumType(Be)}]));class _n extends Error{constructor(e,t){super(t||"an error has occured"),this.code=e}}class Ln extends _n{constructor(e,t,i){super(1,e),this.status=i,this.reason=t}}class Nn extends _n{constructor(e){super(21,null!=e?e:"device is unsupported")}}class An extends _n{constructor(e){super(20,null!=e?e:"track is invalid")}}class Mn extends _n{constructor(e){super(10,null!=e?e:"unsupported server")}}class On extends _n{constructor(e){super(12,null!=e?e:"unexpected connection state")}}class xn extends _n{constructor(e){super(13,null!=e?e:"unable to negotiate")}}e.MediaDeviceFailure=void 0,(qi=e.MediaDeviceFailure||(e.MediaDeviceFailure={})).PermissionDenied="PermissionDenied",qi.NotFound="NotFound",qi.DeviceInUse="DeviceInUse",qi.Other="Other",function(e){e.getFailure=function(t){if(t&&"name"in t)return"NotFoundError"===t.name||"DevicesNotFoundError"===t.name?e.NotFound:"NotAllowedError"===t.name||"PermissionDeniedError"===t.name?e.PermissionDenied:"NotReadableError"===t.name||"TrackStartError"===t.name?e.DeviceInUse:e.Other}}(e.MediaDeviceFailure||(e.MediaDeviceFailure={}));class Un{}Un.setTimeout=function(){return setTimeout(...arguments)},Un.setInterval=function(){return setInterval(...arguments)},Un.clearTimeout=function(){return clearTimeout(...arguments)},Un.clearInterval=function(){return clearInterval(...arguments)};const Bn=/version\/(\d+(\.?_?\d+)+)/i;let Fn;function Jn(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===e&&"undefined"==typeof navigator)return;const i=(null!=e?e:navigator.userAgent).toLowerCase();if(void 0===Fn||t){const e=jn.find((e=>{let{test:t}=e;return t.test(i)}));Fn=null==e?void 0:e.describe(i)}return Fn}const jn=[{test:/firefox|iceweasel|fxios/i,describe:e=>({name:"Firefox",version:Vn(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("fxios")?"iOS":void 0})},{test:/chrom|crios|crmo/i,describe:e=>({name:"Chrome",version:Vn(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("crios")?"iOS":void 0})},{test:/safari|applewebkit/i,describe:e=>({name:"Safari",version:Vn(Bn,e),os:e.includes("mobile/")?"iOS":"macOS"})}];function Vn(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const n=t.match(e);return n&&n.length>=i&&n[i]||""}const qn="1.13.2";class Kn{constructor(e,t,i,n,r){this.width=e,this.height=t,this.encoding={maxBitrate:i,maxFramerate:n,priority:r}}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.width/this.height}}}const Wn=["vp8","h264"],Hn=["vp8","h264","vp9","av1"];function Gn(e){return!!Wn.find((t=>t===e))}function zn(e,t){return(null==e?void 0:e.toLowerCase().replace(/audio\/|video\//y,""))===(null==t?void 0:t.toLowerCase().replace(/audio\/|video\//y,""))}var Qn;e.AudioPresets=void 0,(Qn=e.AudioPresets||(e.AudioPresets={})).telephone={maxBitrate:12e3},Qn.speech={maxBitrate:2e4},Qn.music={maxBitrate:32e3},Qn.musicStereo={maxBitrate:48e3},Qn.musicHighQuality={maxBitrate:64e3},Qn.musicHighQualityStereo={maxBitrate:96e3};const Yn={h90:new Kn(160,90,9e4,20),h180:new Kn(320,180,16e4,20),h216:new Kn(384,216,18e4,20),h360:new Kn(640,360,45e4,20),h540:new Kn(960,540,8e5,25),h720:new Kn(1280,720,17e5,30),h1080:new Kn(1920,1080,3e6,30),h1440:new Kn(2560,1440,5e6,30),h2160:new Kn(3840,2160,8e6,30)},Xn={h120:new Kn(160,120,7e4,20),h180:new Kn(240,180,125e3,20),h240:new Kn(320,240,14e4,20),h360:new Kn(480,360,225e3,20),h480:new Kn(640,480,5e5,20),h540:new Kn(720,540,6e5,25),h720:new Kn(960,720,13e5,30),h1080:new Kn(1440,1080,23e5,30),h1440:new Kn(1920,1440,38e5,30)},Zn={h360fps3:new Kn(640,360,2e5,3,"medium"),h720fps5:new Kn(1280,720,4e5,5,"medium"),h720fps15:new Kn(1280,720,15e5,15,"medium"),h720fps30:new Kn(1280,720,2e6,30,"medium"),h1080fps15:new Kn(1920,1080,25e5,15,"medium"),h1080fps30:new Kn(1920,1080,4e6,30,"medium")};var $n,er,tr,ir;e.RoomEvent=void 0,($n=e.RoomEvent||(e.RoomEvent={})).Connected="connected",$n.Reconnecting="reconnecting",$n.Reconnected="reconnected",$n.Disconnected="disconnected",$n.ConnectionStateChanged="connectionStateChanged",$n.StateChanged="connectionStateChanged",$n.MediaDevicesChanged="mediaDevicesChanged",$n.ParticipantConnected="participantConnected",$n.ParticipantDisconnected="participantDisconnected",$n.TrackPublished="trackPublished",$n.TrackSubscribed="trackSubscribed",$n.TrackSubscriptionFailed="trackSubscriptionFailed",$n.TrackUnpublished="trackUnpublished",$n.TrackUnsubscribed="trackUnsubscribed",$n.TrackMuted="trackMuted",$n.TrackUnmuted="trackUnmuted",$n.LocalTrackPublished="localTrackPublished",$n.LocalTrackUnpublished="localTrackUnpublished",$n.LocalAudioSilenceDetected="localAudioSilenceDetected",$n.ActiveSpeakersChanged="activeSpeakersChanged",$n.ParticipantMetadataChanged="participantMetadataChanged",$n.ParticipantNameChanged="participantNameChanged",$n.RoomMetadataChanged="roomMetadataChanged",$n.DataReceived="dataReceived",$n.ConnectionQualityChanged="connectionQualityChanged",$n.TrackStreamStateChanged="trackStreamStateChanged",$n.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",$n.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",$n.AudioPlaybackStatusChanged="audioPlaybackChanged",$n.MediaDevicesError="mediaDevicesError",$n.ParticipantPermissionsChanged="participantPermissionsChanged",$n.SignalConnected="signalConnected",$n.RecordingStatusChanged="recordingStatusChanged",$n.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",$n.EncryptionError="encryptionError",$n.DCBufferStatusChanged="dcBufferStatusChanged",$n.ActiveDeviceChanged="activeDeviceChanged",e.ParticipantEvent=void 0,(er=e.ParticipantEvent||(e.ParticipantEvent={})).TrackPublished="trackPublished",er.TrackSubscribed="trackSubscribed",er.TrackSubscriptionFailed="trackSubscriptionFailed",er.TrackUnpublished="trackUnpublished",er.TrackUnsubscribed="trackUnsubscribed",er.TrackMuted="trackMuted",er.TrackUnmuted="trackUnmuted",er.LocalTrackPublished="localTrackPublished",er.LocalTrackUnpublished="localTrackUnpublished",er.ParticipantMetadataChanged="participantMetadataChanged",er.ParticipantNameChanged="participantNameChanged",er.DataReceived="dataReceived",er.IsSpeakingChanged="isSpeakingChanged",er.ConnectionQualityChanged="connectionQualityChanged",er.TrackStreamStateChanged="trackStreamStateChanged",er.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",er.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",er.MediaDevicesError="mediaDevicesError",er.ParticipantPermissionsChanged="participantPermissionsChanged",er.PCTrackAdded="pcTrackAdded",e.EngineEvent=void 0,(tr=e.EngineEvent||(e.EngineEvent={})).TransportsCreated="transportsCreated",tr.Connected="connected",tr.Disconnected="disconnected",tr.Resuming="resuming",tr.Resumed="resumed",tr.Restarting="restarting",tr.Restarted="restarted",tr.SignalResumed="signalResumed",tr.SignalRestarted="signalRestarted",tr.Closing="closing",tr.MediaTrackAdded="mediaTrackAdded",tr.ActiveSpeakersUpdate="activeSpeakersUpdate",tr.DataPacketReceived="dataPacketReceived",tr.RTPVideoMapUpdate="rtpVideoMapUpdate",tr.DCBufferStatusChanged="dcBufferStatusChanged",tr.ParticipantUpdate="participantUpdate",tr.RoomUpdate="roomUpdate",tr.SpeakersChanged="speakersChanged",tr.StreamStateChanged="streamStateChanged",tr.ConnectionQualityUpdate="connectionQualityUpdate",tr.SubscriptionError="subscriptionError",tr.SubscriptionPermissionUpdate="subscriptionPermissionUpdate",e.TrackEvent=void 0,(ir=e.TrackEvent||(e.TrackEvent={})).Message="message",ir.Muted="muted",ir.Unmuted="unmuted",ir.Restarted="restarted",ir.Ended="ended",ir.Subscribed="subscribed",ir.Unsubscribed="unsubscribed",ir.UpdateSettings="updateSettings",ir.UpdateSubscription="updateSubscription",ir.AudioPlaybackStarted="audioPlaybackStarted",ir.AudioPlaybackFailed="audioPlaybackFailed",ir.AudioSilenceDetected="audioSilenceDetected",ir.VisibilityChanged="visibilityChanged",ir.VideoDimensionsChanged="videoDimensionsChanged",ir.ElementAttached="elementAttached",ir.ElementDetached="elementDetached",ir.UpstreamPaused="upstreamPaused",ir.UpstreamResumed="upstreamResumed",ir.SubscriptionPermissionChanged="subscriptionPermissionChanged",ir.SubscriptionStatusChanged="subscriptionStatusChanged",ir.SubscriptionFailed="subscriptionFailed";const nr=[];class rr extends Ot.EventEmitter{constructor(e,t){super(),this.attachedElements=[],this.isMuted=!1,this.streamState=rr.StreamState.Active,this.isInBackground=!1,this._currentBitrate=0,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),"hidden"===document.visibilityState?this.backgroundTimeout=setTimeout((()=>this.handleAppVisibilityChanged()),5e3):this.handleAppVisibilityChanged()},this.setMaxListeners(100),this.kind=t,this._mediaStreamTrack=e,this._mediaStreamID=e.id,this.source=rr.Source.Unknown}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(t){let i="audio";this.kind===rr.Kind.Video&&(i="video"),0===this.attachedElements.length&&rr.Kind.Video&&this.addAppVisibilityListener(),t||("audio"===i&&(nr.forEach((e=>{null!==e.parentElement||t||(t=e)})),t&&nr.splice(nr.indexOf(t),1)),t||(t=document.createElement(i))),this.attachedElements.includes(t)||this.attachedElements.push(t),sr(this.mediaStreamTrack,t);const n=t.srcObject.getTracks();return n.some((e=>"audio"===e.kind))&&t.play().then((()=>{this.emit(e.TrackEvent.AudioPlaybackStarted)})).catch((i=>{"NotAllowedError"===i.name?this.emit(e.TrackEvent.AudioPlaybackFailed,i):a.warn("could not playback audio",i),t&&n.some((e=>"video"===e.kind))&&"NotAllowedError"===i.name&&(t.muted=!0,t.play().catch((()=>{})))})),this.emit(e.TrackEvent.ElementAttached,t),t}detach(t){try{if(t){or(this.mediaStreamTrack,t);const i=this.attachedElements.indexOf(t);return i>=0&&(this.attachedElements.splice(i,1),this.recycleElement(t),this.emit(e.TrackEvent.ElementDetached,t)),t}const i=[];return this.attachedElements.forEach((t=>{or(this.mediaStreamTrack,t),i.push(t),this.recycleElement(t),this.emit(e.TrackEvent.ElementDetached,t)})),this.attachedElements=[],i}finally{0===this.attachedElements.length&&this.removeAppVisibilityListener()}}stop(){this.stopMonitor(),this._mediaStreamTrack.stop()}enable(){this._mediaStreamTrack.enabled=!0}disable(){this._mediaStreamTrack.enabled=!1}stopMonitor(){this.monitorInterval&&clearInterval(this.monitorInterval)}recycleElement(e){if(e instanceof HTMLAudioElement){let t=!0;e.pause(),nr.forEach((e=>{e.parentElement||(t=!1)})),t&&nr.push(e)}}handleAppVisibilityChanged(){return vt(this,void 0,void 0,(function*(){this.isInBackground="hidden"===document.visibilityState}))}addAppVisibilityListener(){Er()?(this.isInBackground="hidden"===document.visibilityState,document.addEventListener("visibilitychange",this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){Er()&&document.removeEventListener("visibilitychange",this.appVisibilityChangedListener)}}function sr(e,t){let i,n;i=t.srcObject instanceof MediaStream?t.srcObject:new MediaStream,n="audio"===e.kind?i.getAudioTracks():i.getVideoTracks(),n.includes(e)||(n.forEach((e=>{i.removeTrack(e)})),i.addTrack(e)),t.autoplay=!0,t.muted=0===i.getAudioTracks().length,t instanceof HTMLVideoElement&&(t.playsInline=!0),t.srcObject!==i&&(t.srcObject=i,(Sr()||Tr())&&t instanceof HTMLVideoElement&&setTimeout((()=>{t.srcObject=i,t.play().catch((()=>{}))}),0))}function or(e,t){if(t.srcObject instanceof MediaStream){const i=t.srcObject;i.removeTrack(e),i.getTracks().length>0?t.srcObject=i:t.srcObject=null}}function ar(e,t,i){const n=Object.assign({},e);return!0===n.audio&&(n.audio={}),!0===n.video&&(n.video={}),n.audio&&cr(n.audio,t),n.video&&cr(n.video,i),n}function cr(e,t){return Object.keys(t).forEach((i=>{void 0===e[i]&&(e[i]=t[i])})),e}function dr(e){const t={};if(e.video)if("object"==typeof e.video){const i={},n=i,r=e.video;Object.keys(r).forEach((e=>{if("resolution"===e)cr(n,r.resolution);else n[e]=r[e]})),t.video=i}else t.video=e.video;else t.video=!1;return e.audio?"object"==typeof e.audio?t.audio=e.audio:t.audio=!0:t.audio=!1,t}function ur(){const e="undefined"!=typeof window&&(window.AudioContext||window.webkitAudioContext);if(e)return new e({latencyHint:"interactive"})}function lr(e){var t,i;let n=null===(t=e.video)||void 0===t||t;return e.resolution&&(n="boolean"==typeof n?{}:n,n=Sr()?Object.assign(Object.assign({},n),{width:{max:e.resolution.width},height:{max:e.resolution.height},frameRate:e.resolution.frameRate}):Object.assign(Object.assign({},n),{width:{ideal:e.resolution.width},height:{ideal:e.resolution.height},frameRate:e.resolution.frameRate})),{audio:null!==(i=e.audio)&&void 0!==i&&i,video:n,controller:e.controller,selfBrowserSurface:e.selfBrowserSurface,surfaceSwitching:e.surfaceSwitching,systemAudio:e.systemAudio}}!function(e){let t,i,n;!function(e){e.Audio="audio",e.Video="video",e.Unknown="unknown"}(t=e.Kind||(e.Kind={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenShare="screen_share",e.ScreenShareAudio="screen_share_audio",e.Unknown="unknown"}(i=e.Source||(e.Source={})),function(e){e.Active="active",e.Paused="paused",e.Unknown="unknown"}(n=e.StreamState||(e.StreamState={})),e.kindToProto=function(e){switch(e){case t.Audio:return Le.AUDIO;case t.Video:return Le.VIDEO;default:return Le.DATA}},e.kindFromProto=function(e){switch(e){case Le.AUDIO:return t.Audio;case Le.VIDEO:return t.Video;default:return t.Unknown}},e.sourceToProto=function(e){switch(e){case i.Camera:return Ne.CAMERA;case i.Microphone:return Ne.MICROPHONE;case i.ScreenShare:return Ne.SCREEN_SHARE;case i.ScreenShareAudio:return Ne.SCREEN_SHARE_AUDIO;default:return Ne.UNKNOWN}},e.sourceFromProto=function(e){switch(e){case Ne.CAMERA:return i.Camera;case Ne.MICROPHONE:return i.Microphone;case Ne.SCREEN_SHARE:return i.ScreenShare;case Ne.SCREEN_SHARE_AUDIO:return i.ScreenShareAudio;default:return i.Unknown}},e.streamStateFromProto=function(e){switch(e){case ji.ACTIVE:return n.Active;case ji.PAUSED:return n.Paused;default:return n.Unknown}}}(rr||(rr={}));const hr="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension";function pr(e){return vt(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}function mr(){return"addTransceiver"in RTCPeerConnection.prototype}function fr(){return"addTrack"in RTCPeerConnection.prototype}function vr(){if(!("getCapabilities"in RTCRtpSender))return!1;const e=RTCRtpSender.getCapabilities("video");let t=!1;if(e)for(const i of e.codecs)if("video/AV1"===i.mimeType){t=!0;break}return t}function gr(){if(!("getCapabilities"in RTCRtpSender))return!1;const e=RTCRtpSender.getCapabilities("video");let t=!1;if(e)for(const i of e.codecs)if("video/VP9"===i.mimeType){t=!0;break}return t}function yr(e){return"av1"===e||"vp9"===e}function kr(e){return!!document&&(e||(e=document.createElement("audio")),"setSinkId"in e)}const br={Chrome:"100",Safari:"15",Firefox:"100"};function Tr(){var e;return"Firefox"===(null===(e=Jn())||void 0===e?void 0:e.name)}function Sr(){var e;return"Safari"===(null===(e=Jn())||void 0===e?void 0:e.name)}function wr(){return!!Er()&&/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent)}function Er(){return"undefined"!=typeof document}function Cr(){return"ReactNative"==navigator.product}function Pr(e){return e.hostname.endsWith(".livekit.cloud")||e.hostname.endsWith(".livekit.run")}function Rr(){if(global&&global.LiveKitReactNativeGlobal)return global.LiveKitReactNativeGlobal}function Ir(){if(!Cr())return;let e=Rr();return e?e.platform:void 0}function Dr(){if(Er())return window.devicePixelRatio;if(Cr()){let e=Rr();if(e)return e.devicePixelRatio}return 1}function _r(e,t){const i=e.split("."),n=t.split("."),r=Math.min(i.length,n.length);for(let e=0;e<r;++e){const t=parseInt(i[e],10),s=parseInt(n[e],10);if(t>s)return 1;if(t<s)return-1;if(e===r-1&&t===s)return 0}return""===e&&""!==t?-1:""===t?1:i.length==n.length?0:i.length<n.length?-1:1}function Lr(e){for(const t of e)t.target.handleResize(t)}function Nr(e){for(const t of e)t.target.handleVisibilityChanged(t)}let Ar=null;const Mr=()=>(Ar||(Ar=new ResizeObserver(Lr)),Ar);let Or=null;const xr=()=>(Or||(Or=new IntersectionObserver(Nr,{root:null,rootMargin:"0px"})),Or);let Ur,Br;function Fr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=document.createElement("canvas");r.width=e,r.height=t;const s=r.getContext("2d");null==s||s.fillRect(0,0,r.width,r.height),n&&s&&(s.beginPath(),s.arc(e/2,t/2,50,0,2*Math.PI,!0),s.closePath(),s.fillStyle="grey",s.fill());const o=r.captureStream(),[a]=o.getTracks();if(!a)throw Error("Could not get empty media stream video track");return a.enabled=i,a}function Jr(){if(!Br){const e=new AudioContext,t=e.createOscillator(),i=e.createGain();i.gain.setValueAtTime(0,0);const n=e.createMediaStreamDestination();if(t.connect(i),i.connect(n),t.start(),[Br]=n.stream.getAudioTracks(),!Br)throw Error("Could not get empty media stream audio track");Br.enabled=!1}return Br.clone()}class jr{constructor(e,t){this.onFinally=t,this.promise=new Promise(((t,i)=>vt(this,void 0,void 0,(function*(){this.resolve=t,this.reject=i,e&&(yield e(t,i))})))).finally((()=>{var e;return null===(e=this.onFinally)||void 0===e?void 0:e.call(this)}))}}class Vr{constructor(){this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){let e;this._locks+=1;const t=new Promise((t=>e=()=>{this._locks-=1,t()})),i=this._locking.then((()=>e));return this._locking=this._locking.then((()=>t)),i}}function qr(e){if("string"==typeof e)return e;if(Array.isArray(e))return e[0];if(e.exact)return Array.isArray(e.exact)?e.exact[0]:e.exact;if(e.ideal)return Array.isArray(e.ideal)?e.ideal[0]:e.ideal;throw Error("could not unwrap constraint")}function Kr(e){return e.startsWith("ws")?e.replace(/^(ws)/,"http"):e}var Wr;!function(e){e[e.WAITING=0]="WAITING",e[e.RUNNING=1]="RUNNING",e[e.COMPLETED=2]="COMPLETED"}(Wr||(Wr={}));class Hr{constructor(){this.pendingTasks=new Map,this.taskMutex=new Vr,this.nextTaskIndex=0}run(e){return vt(this,void 0,void 0,(function*(){const t={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:Wr.WAITING};this.pendingTasks.set(t.id,t);const i=yield this.taskMutex.lock();try{return t.executedAt=Date.now(),t.status=Wr.RUNNING,yield e()}finally{t.status=Wr.COMPLETED,this.pendingTasks.delete(t.id),i()}}))}flush(){return vt(this,void 0,void 0,(function*(){return this.run((()=>vt(this,void 0,void 0,(function*(){}))))}))}snapshot(){return Array.from(this.pendingTasks.values())}}const Gr=["syncState","trickle","offer","answer","simulate","leave"];class zr{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.rtt=0,this.resetCallbacks=()=>{this.onAnswer=void 0,this.onLeave=void 0,this.onLocalTrackPublished=void 0,this.onLocalTrackUnpublished=void 0,this.onNegotiateRequested=void 0,this.onOffer=void 0,this.onRemoteMuteChanged=void 0,this.onSubscribedQualityUpdate=void 0,this.onTokenRefresh=void 0,this.onTrickle=void 0,this.onClose=void 0},this.isConnected=!1,this.isReconnecting=!1,this.useJSON=e,this.requestQueue=new Hr,this.queuedRequests=[],this.closingLock=new Vr}join(e,t,i,n){return vt(this,void 0,void 0,(function*(){this.isConnected=!1,this.options=i;return yield this.connect(e,t,i,n)}))}reconnect(e,t,i,n){return vt(this,void 0,void 0,(function*(){if(!this.options)return void a.warn("attempted to reconnect without signal options being set, ignoring");this.isReconnecting=!0,this.clearPingInterval();return yield this.connect(e,t,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:i,reconnectReason:n}))}))}connect(e,t,i,n){this.connectOptions=i,e=(e=function(e){return e.startsWith("http")?e.replace(/^(http)/,"ws"):e}(e)).replace(/\/$/,""),e+="/rtc";const r=function(e,t,i){var n;const r=new URLSearchParams;r.set("access_token",e),i.reconnect&&(r.set("reconnect","1"),i.sid&&r.set("sid",i.sid));r.set("auto_subscribe",i.autoSubscribe?"1":"0"),r.set("sdk",Cr()?"reactnative":"js"),r.set("version",t.version),r.set("protocol",t.protocol.toString()),t.deviceModel&&r.set("device_model",t.deviceModel);t.os&&r.set("os",t.os);t.osVersion&&r.set("os_version",t.osVersion);t.browser&&r.set("browser",t.browser);t.browserVersion&&r.set("browser_version",t.browserVersion);void 0!==i.publishOnly&&r.set("publish",i.publishOnly);i.adaptiveStream&&r.set("adaptive_stream","1");i.reconnectReason&&r.set("reconnect_reason",i.reconnectReason.toString());(null===(n=navigator.connection)||void 0===n?void 0:n.type)&&r.set("network",navigator.connection.type);return"?".concat(r.toString())}(t,function(){var e;const t=new at({sdk:Ye.JS,protocol:9,version:qn});return Cr()&&(t.os=null!==(e=Ir())&&void 0!==e?e:""),t}(),i);return new Promise(((t,s)=>vt(this,void 0,void 0,(function*(){const o=()=>vt(this,void 0,void 0,(function*(){this.close(),clearTimeout(c),s(new Ln("room connection has been cancelled (signal)"))})),c=setTimeout((()=>{this.close(),s(new Ln("room connection has timed out (signal)"))}),i.websocketTimeout);(null==n?void 0:n.aborted)&&o(),null==n||n.addEventListener("abort",o),a.debug("connecting to ".concat(e+r)),this.ws&&(yield this.close()),this.ws=new WebSocket(e+r),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{clearTimeout(c)},this.ws.onerror=t=>vt(this,void 0,void 0,(function*(){if(this.isConnected)this.handleWSError(t);else{clearTimeout(c);try{const t=yield fetch("http".concat(e.substring(2),"/validate").concat(r));if(t.status.toFixed(0).startsWith("4")){const e=yield t.text();s(new Ln(e,0,t.status))}else s(new Ln("Internal error",2,t.status))}catch(e){s(new Ln("server was not reachable",1))}}})),this.ws.onmessage=e=>vt(this,void 0,void 0,(function*(){var r,c,d,u;let l;if("string"==typeof e.data){const t=JSON.parse(e.data);l=Hi.fromJson(t)}else{if(!(e.data instanceof ArrayBuffer))return void a.error("could not decode websocket message: ".concat(typeof e.data));l=Hi.fromBinary(new Uint8Array(e.data))}if(!this.isConnected){let e=!1;if("join"===(null===(r=l.message)||void 0===r?void 0:r.case)?(this.isConnected=!0,null==n||n.removeEventListener("abort",o),this.pingTimeoutDuration=l.message.value.pingTimeout,this.pingIntervalDuration=l.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&(a.debug("ping config",{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration}),this.startPingInterval()),t(l.message.value)):i.reconnect?(this.isConnected=!0,null==n||n.removeEventListener("abort",o),this.startPingInterval(),"reconnect"===(null===(c=l.message)||void 0===c?void 0:c.case)?t(null===(d=l.message)||void 0===d?void 0:d.value):(t(),e=!0)):i.reconnect||s(new Ln("did not receive join response, got ".concat(null===(u=l.message)||void 0===u?void 0:u.case," instead"))),!e)return}this.signalLatency&&(yield pr(this.signalLatency)),this.handleSignalResponse(l)})),this.ws.onclose=e=>{a.warn("websocket closed",{ev:e}),this.handleOnClose(e.reason)}}))))}close(){return vt(this,void 0,void 0,(function*(){const e=yield this.closingLock.lock();try{if(this.isConnected=!1,this.ws){this.ws.onmessage=null,this.ws.onopen=null,this.ws.onclose=null;const e=new Promise((e=>{this.ws?this.ws.onclose=()=>{e()}:e()}));this.ws.readyState<this.ws.CLOSING&&(this.ws.close(),yield Promise.race([e,pr(250)])),this.ws=void 0}}finally{this.clearPingInterval(),e()}}))}sendOffer(e){a.debug("sending offer",e),this.sendRequest({case:"offer",value:Yr(e)})}sendAnswer(e){return a.debug("sending answer"),this.sendRequest({case:"answer",value:Yr(e)})}sendIceCandidate(e,t){return a.trace("sending ice candidate",e),this.sendRequest({case:"trickle",value:new Qi({candidateInit:JSON.stringify(e),target:t})})}sendMuteTrack(e,t){return this.sendRequest({case:"mute",value:new Yi({sid:e,muted:t})})}sendAddTrack(e){return this.sendRequest({case:"addTrack",value:e})}sendUpdateLocalMetadata(e,t){return this.sendRequest({case:"updateMetadata",value:new cn({metadata:e,name:t})})}sendUpdateTrackSettings(e){this.sendRequest({case:"trackSetting",value:e})}sendUpdateSubscription(e){return this.sendRequest({case:"subscription",value:e})}sendSyncState(e){return this.sendRequest({case:"syncState",value:e})}sendUpdateVideoLayers(e,t){return this.sendRequest({case:"updateLayers",value:new an({trackSid:e,layers:t})})}sendUpdateSubscriptionPermissions(e,t){return this.sendRequest({case:"subscriptionPermission",value:new bn({allParticipants:e,trackPermissions:t})})}sendSimulateScenario(e){return this.sendRequest({case:"simulate",value:e})}sendPing(){return Promise.all([this.sendRequest({case:"ping",value:O.parse(Date.now())}),this.sendRequest({case:"pingReq",value:new Cn({timestamp:O.parse(Date.now()),rtt:O.parse(this.rtt)})})])}sendLeave(){return this.sendRequest({case:"leave",value:new on({canReconnect:!1,reason:e.DisconnectReason.CLIENT_INITIATED})})}sendRequest(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return vt(this,void 0,void 0,(function*(){const i=!t&&!function(e){const t=Gr.indexOf(e.case)>=0;return a.trace("request allowed to bypass queue:",{canPass:t,req:e}),t}(e);if(i&&this.isReconnecting)return void this.queuedRequests.push((()=>vt(this,void 0,void 0,(function*(){yield this.sendRequest(e,!0)}))));if(t||(yield this.requestQueue.flush()),this.signalLatency&&(yield pr(this.signalLatency)),!this.ws||this.ws.readyState!==this.ws.OPEN)return void a.error("cannot send signal request before connected, type: ".concat(null==e?void 0:e.case));const n=new Wi({message:e});try{this.useJSON?this.ws.send(n.toJsonString()):this.ws.send(n.toBinary())}catch(e){a.error("error sending signal message",{error:e})}}))}handleSignalResponse(e){var t,i;const n=e.message;if(null!=n)if("answer"===n.case){const e=Qr(n.value);this.onAnswer&&this.onAnswer(e)}else if("offer"===n.case){const e=Qr(n.value);this.onOffer&&this.onOffer(e)}else if("trickle"===n.case){const e=JSON.parse(n.value.candidateInit);this.onTrickle&&this.onTrickle(e,n.value.target)}else"update"===n.case?this.onParticipantUpdate&&this.onParticipantUpdate(null!==(t=n.value.participants)&&void 0!==t?t:[]):"trackPublished"===n.case?this.onLocalTrackPublished&&this.onLocalTrackPublished(n.value):"speakersChanged"===n.case?this.onSpeakersChanged&&this.onSpeakersChanged(null!==(i=n.value.speakers)&&void 0!==i?i:[]):"leave"===n.case?this.onLeave&&this.onLeave(n.value):"mute"===n.case?this.onRemoteMuteChanged&&this.onRemoteMuteChanged(n.value.sid,n.value.muted):"roomUpdate"===n.case?this.onRoomUpdate&&n.value.room&&this.onRoomUpdate(n.value.room):"connectionQuality"===n.case?this.onConnectionQuality&&this.onConnectionQuality(n.value):"streamStateUpdate"===n.case?this.onStreamStateUpdate&&this.onStreamStateUpdate(n.value):"subscribedQualityUpdate"===n.case?this.onSubscribedQualityUpdate&&this.onSubscribedQualityUpdate(n.value):"subscriptionPermissionUpdate"===n.case?this.onSubscriptionPermissionUpdate&&this.onSubscriptionPermissionUpdate(n.value):"refreshToken"===n.case?this.onTokenRefresh&&this.onTokenRefresh(n.value):"trackUnpublished"===n.case?this.onLocalTrackUnpublished&&this.onLocalTrackUnpublished(n.value):"subscriptionResponse"===n.case?this.onSubscriptionError&&this.onSubscriptionError(n.value):"pong"===n.case?this.resetPingTimeout():"pongResp"===n.case?(this.rtt=Date.now()-Number.parseInt(n.value.lastPingTimestamp.toString()),this.resetPingTimeout()):a.debug("unsupported message",n);else a.debug("received unsupported message")}setReconnected(){for(;this.queuedRequests.length>0;){const e=this.queuedRequests.shift();e&&this.requestQueue.run(e)}this.isReconnecting=!1}handleOnClose(e){return vt(this,void 0,void 0,(function*(){if(!this.isConnected)return;const t=this.onClose;yield this.close(),a.debug("websocket connection closed: ".concat(e)),t&&t(e)}))}handleWSError(e){a.error("websocket error",e)}resetPingTimeout(){this.clearPingTimeout(),this.pingTimeoutDuration?this.pingTimeout=Un.setTimeout((()=>{a.warn("ping timeout triggered. last pong received at: ".concat(new Date(Date.now()-1e3*this.pingTimeoutDuration).toUTCString())),this.handleOnClose("ping timeout")}),1e3*this.pingTimeoutDuration):a.warn("ping timeout duration not set")}clearPingTimeout(){this.pingTimeout&&Un.clearTimeout(this.pingTimeout)}startPingInterval(){this.clearPingInterval(),this.resetPingTimeout(),this.pingIntervalDuration?(a.debug("start ping interval"),this.pingInterval=Un.setInterval((()=>{this.sendPing()}),1e3*this.pingIntervalDuration)):a.warn("ping interval duration not set")}clearPingInterval(){a.debug("clearing ping interval"),this.clearPingTimeout(),this.pingInterval&&Un.clearInterval(this.pingInterval)}}function Qr(e){const t={type:"offer",sdp:e.sdp};switch(e.type){case"answer":case"offer":case"pranswer":case"rollback":t.type=e.type}return t}function Yr(e){return new tn({sdp:e.sdp,type:e.type})}const Xr="AES-GCM",Zr="lk_e2ee",$r={sharedKey:!1,ratchetSalt:"LKFrameEncryptionKey",ratchetWindowSize:8,failureTolerance:10};var es,ts;function is(){return rs()||ns()}function ns(){return void 0!==window.RTCRtpScriptTransform}function rs(){return void 0!==window.RTCRtpSender&&void 0!==window.RTCRtpSender.prototype.createEncodedStreams}function ss(e){return vt(this,void 0,void 0,(function*(){let t=new TextEncoder;return yield crypto.subtle.importKey("raw",t.encode(e),{name:"PBKDF2"},!1,["deriveBits","deriveKey"])}))}function os(e){return vt(this,void 0,void 0,(function*(){return yield crypto.subtle.importKey("raw",e,"HKDF",!1,["deriveBits","deriveKey"])}))}function as(e,t){const i=(new TextEncoder).encode(t);switch(e){case"HKDF":return{name:"HKDF",salt:i,hash:"SHA-256",info:new ArrayBuffer(128)};case"PBKDF2":return{name:"PBKDF2",salt:i,hash:"SHA-256",iterations:1e5};default:throw new Error("algorithm ".concat(e," is currently unsupported"))}}function cs(e){const t=e.split("/")[1].toLowerCase();if(!Hn.includes(t))throw Error("Video codec not supported: ".concat(t));return t}e.KeyProviderEvent=void 0,(es=e.KeyProviderEvent||(e.KeyProviderEvent={})).SetKey="setKey",es.RatchetRequest="ratchetRequest",es.KeyRatcheted="keyRatcheted",e.KeyHandlerEvent=void 0,(e.KeyHandlerEvent||(e.KeyHandlerEvent={})).KeyRatcheted="keyRatcheted",e.EncryptionEvent=void 0,(ts=e.EncryptionEvent||(e.EncryptionEvent={})).ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",ts.EncryptionError="encryptionError",e.CryptorEvent=void 0,(e.CryptorEvent||(e.CryptorEvent={})).Error="cryptorError";class ds extends Ot.EventEmitter{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this.onKeyRatcheted=(e,t)=>{a.debug("key ratcheted event received",{material:e,keyIndex:t})},this.keyInfoMap=new Map,this.options=Object.assign(Object.assign({},$r),t),this.on(e.KeyProviderEvent.KeyRatcheted,this.onKeyRatcheted)}onSetEncryptionKey(t,i,n){const r={key:t,participantIdentity:i,keyIndex:n};this.keyInfoMap.set("".concat(null!=i?i:"shared","-").concat(null!=n?n:0),r),this.emit(e.KeyProviderEvent.SetKey,r)}getKeys(){return Array.from(this.keyInfoMap.values())}getOptions(){return this.options}ratchetKey(t,i){this.emit(e.KeyProviderEvent.RatchetRequest,t,i)}}function us(e,t,i){var n,r,s;void 0===t&&(t=50),void 0===i&&(i={});var o=null!=(n=i.isImmediate)&&n,a=null!=(r=i.callback)&&r,c=i.maxWait,d=Date.now(),u=[];function l(){if(void 0!==c){var e=Date.now()-d;if(e+t>=c)return c-e}return t}var h=function(){var t=[].slice.call(arguments),i=this;return new Promise((function(n,r){var c=o&&void 0===s;if(void 0!==s&&clearTimeout(s),s=setTimeout((function(){if(s=void 0,d=Date.now(),!o){var n=e.apply(i,t);a&&a(n),u.forEach((function(e){return(0,e.resolve)(n)})),u=[]}}),l()),c){var h=e.apply(i,t);return a&&a(h),n(h)}u.push({resolve:n,reject:r})}))};return h.cancel=function(e){void 0!==s&&clearTimeout(s),u.forEach((function(t){return(0,t.reject)(e)})),u=[]},h}const ls="default";class hs{static getInstance(){return void 0===this.instance&&(this.instance=new hs),this.instance}getDevices(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];var i;return vt(this,void 0,void 0,(function*(){if((null===(i=hs.userMediaPromiseMap)||void 0===i?void 0:i.size)>0){a.debug("awaiting getUserMedia promise");try{e?yield hs.userMediaPromiseMap.get(e):yield Promise.all(hs.userMediaPromiseMap.values())}catch(e){a.warn("error waiting for media permissons")}}let n=yield navigator.mediaDevices.enumerateDevices();if(t&&(!Sr()||!this.hasDeviceInUse(e))){if(0===n.length||n.some((t=>{const i=""===t.label,n=!e||t.kind===e;return i&&n}))){const t={video:"audioinput"!==e&&"audiooutput"!==e,audio:"videoinput"!==e},i=yield navigator.mediaDevices.getUserMedia(t);n=yield navigator.mediaDevices.enumerateDevices(),i.getTracks().forEach((e=>{e.stop()}))}}return e&&(n=n.filter((t=>t.kind===e))),n}))}normalizeDeviceId(e,t,i){return vt(this,void 0,void 0,(function*(){if(t!==ls)return t;const n=(yield this.getDevices(e)).find((e=>e.groupId===i&&e.deviceId!==ls));return null==n?void 0:n.deviceId}))}hasDeviceInUse(e){return e?hs.userMediaPromiseMap.has(e):hs.userMediaPromiseMap.size>0}}hs.mediaDeviceKinds=["audioinput","audiooutput","videoinput"],hs.userMediaPromiseMap=new Map;class ps extends rr{get constraints(){return this._constraints}constructor(t,i,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];super(t,i),this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch((()=>a.debug("track mute bounce got cancelled by an unmute event"))),this.debouncedTrackMuteHandler=us((()=>vt(this,void 0,void 0,(function*(){yield this.pauseUpstream()}))),5e3),this.handleTrackUnmuteEvent=()=>vt(this,void 0,void 0,(function*(){this.debouncedTrackMuteHandler.cancel("unmute"),yield this.resumeUpstream()})),this.handleEnded=()=>{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.emit(e.TrackEvent.Ended,this)},this.reacquireTrack=!1,this.providedByUser=r,this.muteLock=new Vr,this.pauseUpstreamLock=new Vr,this.processorLock=new Vr,this.setMediaStreamTrack(t,!0),this._constraints=t.getConstraints(),n&&(this._constraints=n)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==rr.Kind.Video)return;const{width:e,height:t}=this._mediaStreamTrack.getSettings();return e&&t?{width:e,height:t}:void 0}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){var e,t;return null!==(t=null===(e=this.processor)||void 0===e?void 0:e.processedTrack)&&void 0!==t?t:this._mediaStreamTrack}setMediaStreamTrack(e,t){return vt(this,void 0,void 0,(function*(){if(e===this._mediaStreamTrack&&!t)return;let i;if(this._mediaStreamTrack&&(this.attachedElements.forEach((e=>{or(this._mediaStreamTrack,e)})),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.providedByUser||this._mediaStreamTrack===e||this._mediaStreamTrack.stop()),this.mediaStream=new MediaStream([e]),e&&(e.addEventListener("ended",this.handleEnded),e.addEventListener("mute",this.handleTrackMuteEvent),e.addEventListener("unmute",this.handleTrackUnmuteEvent),this._constraints=e.getConstraints()),this.processor&&e&&this.processorElement){if(a.debug("restarting processor"),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");sr(e,this.processorElement),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement}),i=this.processor.processedTrack}this.sender&&(yield this.sender.replaceTrack(null!=i?i:e)),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach((t=>{sr(null!=i?i:e,t)})))}))}waitForDimensions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;return vt(this,void 0,void 0,(function*(){if(this.kind===rr.Kind.Audio)throw new Error("cannot get dimensions for audio tracks");const t=Date.now();for(;Date.now()-t<e;){const e=this.dimensions;if(e)return e;yield pr(50)}throw new An("unable to get track dimensions after timeout")}))}getDeviceId(){return vt(this,void 0,void 0,(function*(){if(this.source===rr.Source.ScreenShare)return;const{deviceId:e,groupId:t}=this._mediaStreamTrack.getSettings(),i=this.kind===rr.Kind.Audio?"audioinput":"videoinput";return hs.getInstance().normalizeDeviceId(i,e,t)}))}mute(){return vt(this,void 0,void 0,(function*(){return this.setTrackMuted(!0),this}))}unmute(){return vt(this,void 0,void 0,(function*(){return this.setTrackMuted(!1),this}))}replaceTrack(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return vt(this,void 0,void 0,(function*(){if(!this.sender)throw new An("unable to replace an unpublished track");return a.debug("replace MediaStreamTrack"),yield this.setMediaStreamTrack(e),this.providedByUser=t,this.processor&&(yield this.stopProcessor()),this}))}restart(t){return vt(this,void 0,void 0,(function*(){t||(t=this._constraints),a.debug("restarting track with constraints",t);const i={audio:!1,video:!1};this.kind===rr.Kind.Video?i.video=t:i.audio=t,this.attachedElements.forEach((e=>{or(this.mediaStreamTrack,e)})),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.stop();const n=(yield navigator.mediaDevices.getUserMedia(i)).getTracks()[0];return n.addEventListener("ended",this.handleEnded),a.debug("re-acquired MediaStreamTrack"),yield this.setMediaStreamTrack(n),this._constraints=t,this.emit(e.TrackEvent.Restarted,this),this}))}setTrackMuted(t){a.debug("setting ".concat(this.kind," track ").concat(t?"muted":"unmuted")),this.isMuted===t&&this._mediaStreamTrack.enabled!==t||(this.isMuted=t,this._mediaStreamTrack.enabled=!t,this.emit(t?e.TrackEvent.Muted:e.TrackEvent.Unmuted,this))}get needsReAcquisition(){return"live"!==this._mediaStreamTrack.readyState||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return vt(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),wr()&&(a.debug("visibility changed, is in Background: ".concat(this.isInBackground)),this.isInBackground||!this.needsReAcquisition||this.isUserProvided||this.isMuted||(a.debug("track needs to be reacquired, restarting ".concat(this.source)),yield this.restart(),this.reacquireTrack=!1))}))}stop(){var e;super.stop(),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),null===(e=this.processor)||void 0===e||e.destroy(),this.processor=void 0}pauseUpstream(){return vt(this,void 0,void 0,(function*(){const t=yield this.pauseUpstreamLock.lock();try{if(!0===this._isUpstreamPaused)return;if(!this.sender)return void a.warn("unable to pause upstream for an unpublished track");this._isUpstreamPaused=!0,this.emit(e.TrackEvent.UpstreamPaused,this);const t=Jn();if("Safari"===(null==t?void 0:t.name)&&_r(t.version,"12.0")<0)throw new Nn("pauseUpstream is not supported on Safari < 12.");yield this.sender.replaceTrack(null)}finally{t()}}))}resumeUpstream(){return vt(this,void 0,void 0,(function*(){const t=yield this.pauseUpstreamLock.lock();try{if(!1===this._isUpstreamPaused)return;if(!this.sender)return void a.warn("unable to resume upstream for an unpublished track");this._isUpstreamPaused=!1,this.emit(e.TrackEvent.UpstreamResumed,this),yield this.sender.replaceTrack(this._mediaStreamTrack)}finally{t()}}))}setProcessor(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];var i,n;return vt(this,void 0,void 0,(function*(){const r=yield this.processorLock.lock();try{if(a.debug("setting up processor"),this.processor&&(yield this.stopProcessor()),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");this.processorElement=null!==(i=this.processorElement)&&void 0!==i?i:document.createElement(this.kind),this.processorElement.muted=!0,sr(this._mediaStreamTrack,this.processorElement),this.processorElement.play().catch((e=>a.error("failed to play processor element",{error:e})));const r={kind:this.kind,track:this._mediaStreamTrack,element:this.processorElement};if(yield e.init(r),this.processor=e,this.processor.processedTrack){for(const e of this.attachedElements)e!==this.processorElement&&t&&(or(this._mediaStreamTrack,e),sr(this.processor.processedTrack,e));yield null===(n=this.sender)||void 0===n?void 0:n.replaceTrack(this.processor.processedTrack)}}finally{r()}}))}getProcessor(){return this.processor}stopProcessor(){var e,t;return vt(this,void 0,void 0,(function*(){this.processor&&(a.debug("stopping processor"),null===(e=this.processor.processedTrack)||void 0===e||e.stop(),yield this.processor.destroy(),this.processor=void 0,null===(t=this.processorElement)||void 0===t||t.remove(),this.processorElement=void 0,yield this.restart())}))}}class ms extends Ot.EventEmitter{constructor(t){super(),this.onWorkerMessage=t=>{var i,n;const{kind:r,data:s}=t.data;switch(r){case"error":a.error(s.error.message),this.emit(e.EncryptionEvent.EncryptionError,s.error);break;case"initAck":s.enabled&&this.keyProvider.getKeys().forEach((e=>{this.postKey(e)}));break;case"enable":if(this.encryptionEnabled!==s.enabled&&s.participantIdentity===(null===(i=this.room)||void 0===i?void 0:i.localParticipant.identity))this.emit(e.EncryptionEvent.ParticipantEncryptionStatusChanged,s.enabled,this.room.localParticipant),this.encryptionEnabled=s.enabled;else if(s.participantIdentity){const t=null===(n=this.room)||void 0===n?void 0:n.getParticipantByIdentity(s.participantIdentity);if(!t)throw TypeError("couldn't set encryption status, participant not found".concat(s.participantIdentity));this.emit(e.EncryptionEvent.ParticipantEncryptionStatusChanged,s.enabled,t)}this.encryptionEnabled&&this.keyProvider.getKeys().forEach((e=>{this.postKey(e)}));break;case"ratchetKey":this.keyProvider.emit(e.KeyProviderEvent.KeyRatcheted,s.material,s.keyIndex)}},this.onWorkerError=t=>{a.error("e2ee worker encountered an error:",{error:t.error}),this.emit(e.EncryptionEvent.EncryptionError,t.error)},this.keyProvider=t.keyProvider,this.worker=t.worker,this.encryptionEnabled=!1}setup(e){if(!is())throw new Nn("tried to setup end-to-end encryption on an unsupported browser");if(a.info("setting up e2ee"),e!==this.room){this.room=e,this.setupEventListeners(e,this.keyProvider);const t={kind:"init",data:{keyProviderOptions:this.keyProvider.getOptions()}};this.worker&&(a.info("initializing worker",{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(t))}}setParticipantCryptorEnabled(e,t){a.debug("set e2ee to ".concat(e," for participant ").concat(t)),this.postEnable(e,t)}setSifTrailer(e){e&&0!==e.length?this.postSifTrailer(e):a.warn("ignoring server sent trailer as it's empty")}setupEngine(t){t.on(e.EngineEvent.RTPVideoMapUpdate,(e=>{this.postRTPMap(e)}))}setupEventListeners(t,i){t.on(e.RoomEvent.TrackPublished,((e,t)=>this.setParticipantCryptorEnabled(e.trackInfo.encryption!==Ge.NONE,t.identity))),t.on(e.RoomEvent.ConnectionStateChanged,(i=>{i===e.ConnectionState.Connected&&t.participants.forEach((e=>{e.tracks.forEach((t=>{this.setParticipantCryptorEnabled(t.trackInfo.encryption!==Ge.NONE,e.identity)}))}))})).on(e.RoomEvent.TrackUnsubscribed,((e,t,i)=>{var n;const r={kind:"removeTransform",data:{participantIdentity:i.identity,trackId:e.mediaStreamID}};null===(n=this.worker)||void 0===n||n.postMessage(r)})).on(e.RoomEvent.TrackSubscribed,((e,t,i)=>{this.setupE2EEReceiver(e,i.identity,t.trackInfo)})).on(e.RoomEvent.SignalConnected,(()=>{if(!this.room)throw new TypeError("expected room to be present on signal connect");this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity),i.getKeys().forEach((e=>{this.postKey(e)}))})),t.localParticipant.on(e.ParticipantEvent.LocalTrackPublished,(e=>vt(this,void 0,void 0,(function*(){this.setupE2EESender(e.track,e.track.sender)})))),i.on(e.KeyProviderEvent.SetKey,(e=>this.postKey(e))).on(e.KeyProviderEvent.RatchetRequest,((e,t)=>this.postRatchetRequest(e,t)))}postRatchetRequest(e,t){if(!this.worker)throw Error("could not ratchet key, worker is missing");const i={kind:"ratchetRequest",data:{participantIdentity:e,keyIndex:t}};this.worker.postMessage(i)}postKey(e){let{key:t,participantIdentity:i,keyIndex:n}=e;var r;if(!this.worker)throw Error("could not set key, worker is missing");const s={kind:"setKey",data:{participantIdentity:i,isPublisher:i===(null===(r=this.room)||void 0===r?void 0:r.localParticipant.identity),key:t,keyIndex:n}};this.worker.postMessage(s)}postEnable(e,t){if(!this.worker)throw new ReferenceError("failed to enable e2ee, worker is not ready");{const i={kind:"enable",data:{enabled:e,participantIdentity:t}};this.worker.postMessage(i)}}postRTPMap(e){var t;if(!this.worker)throw TypeError("could not post rtp map, worker is missing");if(!(null===(t=this.room)||void 0===t?void 0:t.localParticipant.identity))throw TypeError("could not post rtp map, local participant identity is missing");const i={kind:"setRTPMap",data:{map:e,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(i)}postSifTrailer(e){if(!this.worker)throw Error("could not post SIF trailer, worker is missing");const t={kind:"setSifTrailer",data:{trailer:e}};this.worker.postMessage(t)}setupE2EEReceiver(e,t,i){if(e.receiver){if(!(null==i?void 0:i.mimeType)||""===i.mimeType)throw new TypeError("MimeType missing from trackInfo, cannot set up E2EE cryptor");this.handleReceiver(e.receiver,e.mediaStreamID,t,"video"===e.kind?cs(i.mimeType):void 0)}}setupE2EESender(e,t){e instanceof ps&&t?this.handleSender(t,e.mediaStreamID,void 0):t||a.warn("early return because sender is not ready")}handleReceiver(e,t,i,n){return vt(this,void 0,void 0,(function*(){if(this.worker){if(ns()){const r={kind:"decode",participantIdentity:i,trackId:t,codec:n};e.transform=new RTCRtpScriptTransform(this.worker,r)}else{if(Zr in e&&n){const e={kind:"updateCodec",data:{trackId:t,codec:n,participantIdentity:i}};return void this.worker.postMessage(e)}let r=e.writableStream,s=e.readableStream;if(!r||!s){const t=e.createEncodedStreams();e.writableStream=t.writable,r=t.writable,e.readableStream=t.readable,s=t.readable}const o={kind:"decode",data:{readableStream:s,writableStream:r,trackId:t,codec:n,participantIdentity:i}};this.worker.postMessage(o,[s,r])}e[Zr]=!0}}))}handleSender(e,t,i){var n;if(!(Zr in e)&&this.worker){if(!(null===(n=this.room)||void 0===n?void 0:n.localParticipant.identity)||""===this.room.localParticipant.identity)throw TypeError("local identity needs to be known in order to set up encrypted sender");if(ns()){a.info("initialize script transform");const n={kind:"encode",participantIdentity:this.room.localParticipant.identity,trackId:t,codec:i};e.transform=new RTCRtpScriptTransform(this.worker,n)}else{a.info("initialize encoded streams");const n=e.createEncodedStreams(),r={kind:"encode",data:{readableStream:n.readable,writableStream:n.writable,codec:i,trackId:t,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(r,[n.readable,n.writable])}e[Zr]=!0}}}var fs={},vs={exports:{}},gs=vs.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(gs).forEach((function(e){gs[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var ys=vs.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},i=function(e,i,n){var r=e.name&&e.names;e.push&&!i[e.push]?i[e.push]=[]:r&&!i[e.name]&&(i[e.name]={});var s=e.push?{}:r?i[e.name]:i;!function(e,i,n,r){if(r&&!n)i[r]=t(e[1]);else for(var s=0;s<n.length;s+=1)null!=e[s+1]&&(i[n[s]]=t(e[s+1]))}(n.match(e.reg),s,e.names,e.name),e.push&&i[e.push].push(s)},n=ys,r=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(r).forEach((function(e){var t=e[0],r=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),o=s[s.length-1]);for(var a=0;a<(n[t]||[]).length;a+=1){var c=n[t][a];if(c.reg.test(r))return i(c,o,r)}})),t.media=s,t};var s=function(e,i){var n=i.split(/=(.+)/,2);return 2===n.length?e[n[0]]=t(n[1]):1===n.length&&i.length>1&&(e[n[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var i=[],n=e.split(" ").map(t),r=0;r<n.length;r+=3)i.push({component:n[r],ip:n[r+1],port:n[r+2]});return i},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var i,n=!1;return"~"!==e[0]?i=t(e):(i=t(e.substring(1,e.length)),n=!0),{scid:i,paused:n}}))}))}}(fs);var ks=ys,bs=/%[sdv%]/g,Ts=function(e){var t=1,i=arguments,n=i.length;return e.replace(bs,(function(e){if(t>=n)return e;var r=i[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(r);case"%d":return Number(r);case"%v":return""}}))},Ss=function(e,t,i){var n=[e+"="+(t.format instanceof Function?t.format(t.push?i:i[t.name]):t.format)];if(t.names)for(var r=0;r<t.names.length;r+=1){var s=t.names[r];t.name?n.push(i[t.name][s]):n.push(i[t.names[r]])}else n.push(i[t.name]);return Ts.apply(null,n)},ws=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Es=["i","c","b","a"],Cs=fs,Ps=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var i=t.outerOrder||ws,n=t.innerOrder||Es,r=[];return i.forEach((function(t){ks[t].forEach((function(i){i.name in e&&null!=e[i.name]?r.push(Ss(t,i,e)):i.push in e&&null!=e[i.push]&&e[i.push].forEach((function(e){r.push(Ss(t,i,e))}))}))})),e.media.forEach((function(e){r.push(Ss("m",ks.m[0],e)),n.forEach((function(t){ks[t].forEach((function(i){i.name in e&&null!=e[i.name]?r.push(Ss(t,i,e)):i.push in e&&null!=e[i.push]&&e[i.push].forEach((function(e){r.push(Ss(t,i,e))}))}))}))})),r.join("\r\n")+"\r\n"},Rs=Ps,Is=Cs.parse;const Ds="negotiationStarted",_s="negotiationComplete",Ls="rtpVideoPayloadTypes";class Ns extends Ot.EventEmitter{get pc(){if(this._pc)return this._pc;throw new On("Expected peer connection to be available")}constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var i;super(),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=us((e=>{this.emit(Ds);try{this.createAndSendOffer()}catch(t){if(!e)throw t;e(t)}}),100),this._pc="Chrome"===(null===(i=Jn())||void 0===i?void 0:i.name)?new RTCPeerConnection(e,t):new RTCPeerConnection(e)}get isICEConnected(){return null!==this._pc&&("connected"===this.pc.iceConnectionState||"completed"===this.pc.iceConnectionState)}addIceCandidate(e){return vt(this,void 0,void 0,(function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.pendingCandidates.push(e)}))}setRemoteDescription(e){var t;return vt(this,void 0,void 0,(function*(){let i;if("offer"===e.type){let{stereoMids:t,nackMids:i}=function(e){var t;const i=[],n=[],r=Is(null!==(t=e.sdp)&&void 0!==t?t:"");let s=0;return r.media.forEach((e=>{var t;"audio"===e.type&&(e.rtp.some((e=>"opus"===e.codec&&(s=e.payload,!0))),(null===(t=e.rtcpFb)||void 0===t?void 0:t.some((e=>e.payload===s&&"nack"===e.type)))&&n.push(e.mid),e.fmtp.some((t=>t.payload===s&&(t.config.includes("sprop-stereo=1")&&i.push(e.mid),!0))))})),{stereoMids:i,nackMids:n}}(e);this.remoteStereoMids=t,this.remoteNackMids=i}else if("answer"===e.type){const n=Is(null!==(t=e.sdp)&&void 0!==t?t:"");n.media.forEach((e=>{"audio"===e.type&&this.trackBitrates.some((t=>{if(!t.transceiver||e.mid!=t.transceiver.mid)return!1;let i=0;if(e.rtp.some((e=>e.codec.toUpperCase()===t.codec.toUpperCase()&&(i=e.payload,!0))),0===i)return!0;let n=!1;for(const r of e.fmtp)if(r.payload===i){r.config=r.config.split(";").filter((e=>!e.includes("maxaveragebitrate"))).join(";"),t.maxbr>0&&(r.config+=";maxaveragebitrate=".concat(1e3*t.maxbr)),n=!0;break}return n||t.maxbr>0&&e.fmtp.push({payload:i,config:"maxaveragebitrate=".concat(1e3*t.maxbr)}),!0}))})),i=Rs(n)}if(yield this.setMungedSDP(e,i,!0),this.pendingCandidates.forEach((e=>{this.pc.addIceCandidate(e)})),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate)this.renegotiate=!1,this.createAndSendOffer();else if("answer"===e.type&&(this.emit(_s),e.sdp)){Is(e.sdp).media.forEach((e=>{"video"===e.type&&this.emit(Ls,e.rtp)}))}}))}createAndSendOffer(e){var t;return vt(this,void 0,void 0,(function*(){if(void 0===this.onOffer)return;if((null==e?void 0:e.iceRestart)&&(a.debug("restarting ICE"),this.restartingIce=!0),this._pc&&"have-local-offer"===this._pc.signalingState){const t=this.pc.remoteDescription;if(!(null==e?void 0:e.iceRestart)||!t)return void(this.renegotiate=!0);yield this.pc.setRemoteDescription(t)}else if(!this._pc||"closed"===this._pc.signalingState)return void a.warn("could not createOffer with closed peer connection");a.debug("starting to negotiate");const i=yield this.pc.createOffer(e),n=Is(null!==(t=i.sdp)&&void 0!==t?t:"");n.media.forEach((e=>{"audio"===e.type?As(e,[],[]):"video"===e.type&&(!function(e){var t,i,n,r;const s=null===(i=null===(t=e.rtp[0])||void 0===t?void 0:t.codec)||void 0===i?void 0:i.toLowerCase();if(!yr(s))return;let o=0;const a=null===(n=e.ext)||void 0===n?void 0:n.some((e=>e.uri===hr||(e.value>o&&(o=e.value),!1)));a||null===(r=e.ext)||void 0===r||r.push({value:o+1,uri:hr})}(e),this.trackBitrates.some((t=>{if(!e.msid||!t.cid||!e.msid.includes(t.cid))return!1;let i=0;if(e.rtp.some((e=>e.codec.toUpperCase()===t.codec.toUpperCase()&&(i=e.payload,!0))),0===i)return!0;let n=!1;for(const r of e.fmtp)if(r.payload===i){r.config.includes("x-google-start-bitrate")||(r.config+=";x-google-start-bitrate=".concat(.7*t.maxbr)),r.config.includes("x-google-max-bitrate")||(r.config+=";x-google-max-bitrate=".concat(t.maxbr)),n=!0;break}return n||e.fmtp.push({payload:i,config:"x-google-start-bitrate=".concat(.7*t.maxbr,";x-google-max-bitrate=").concat(t.maxbr)}),!0})))})),yield this.setMungedSDP(i,Rs(n)),this.onOffer(i)}))}createAndSetAnswer(){var e;return vt(this,void 0,void 0,(function*(){const t=yield this.pc.createAnswer(),i=Is(null!==(e=t.sdp)&&void 0!==e?e:"");return i.media.forEach((e=>{"audio"===e.type&&As(e,this.remoteStereoMids,this.remoteNackMids)})),yield this.setMungedSDP(t,Rs(i)),t}))}setTrackCodecBitrate(e){this.trackBitrates.push(e)}close(){this._pc&&(this._pc.close(),this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.ondatachannel=null,this._pc.onnegotiationneeded=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null,this._pc.ontrack=null,this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc=null)}setMungedSDP(e,t,i){return vt(this,void 0,void 0,(function*(){if(t){const n=e.sdp;e.sdp=t;try{return a.debug("setting munged ".concat(i?"remote":"local"," description")),void(i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e))}catch(i){a.warn("not able to set ".concat(e.type,", falling back to unmodified sdp"),{error:i,sdp:t}),e.sdp=n}}try{i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e)}catch(t){let n="unknown error";t instanceof Error?n=t.message:"string"==typeof t&&(n=t);const r={error:n,sdp:e.sdp};throw!i&&this.pc.remoteDescription&&(r.remoteSdp=this.pc.remoteDescription),a.error("unable to set ".concat(e.type),r),new xn(n)}}))}}function As(e,t,i){let n=0;e.rtp.some((e=>"opus"===e.codec&&(n=e.payload,!0))),n>0&&(e.rtcpFb||(e.rtcpFb=[]),i.includes(e.mid)&&!e.rtcpFb.some((e=>e.payload===n&&"nack"===e.type))&&e.rtcpFb.push({payload:n,type:"nack"}),t.includes(e.mid)&&e.fmtp.some((e=>e.payload===n&&(e.config.includes("stereo=1")||(e.config+=";stereo=1"),!0))))}const Ms={audioBitrate:e.AudioPresets.music.maxBitrate,audioPreset:e.AudioPresets.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:Zn.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:"vp8",backupCodec:!1},Os={autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0},xs={resolution:Yn.h720.resolution},Us={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new ft,disconnectOnPageLeave:!0,expWebAudioMix:!1},Bs={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3},Fs="_lossy",Js="_reliable",js="leave-reconnect";var Vs;!function(e){e[e.New=0]="New",e[e.Connected=1]="Connected",e[e.Disconnected=2]="Disconnected",e[e.Reconnecting=3]="Reconnecting",e[e.Closed=4]="Closed"}(Vs||(Vs={}));class qs extends Ot.EventEmitter{get isClosed(){return this._isClosed}constructor(t){super(),this.options=t,this.rtcConfig={},this.peerConnectionTimeout=Bs.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.subscriberPrimary=!1,this.pcState=Vs.New,this._isClosed=!0,this.pendingTrackResolvers={},this.hasPublished=!1,this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.handleDataChannel=e=>{let{channel:t}=e;return vt(this,void 0,void 0,(function*(){if(t){if(t.label===Js)this.reliableDCSub=t;else{if(t.label!==Fs)return;this.lossyDCSub=t}a.debug("on data channel ".concat(t.id,", ").concat(t.label)),t.onmessage=this.handleDataMessage}}))},this.handleDataMessage=t=>vt(this,void 0,void 0,(function*(){var i,n;const r=yield this.dataProcessLock.lock();try{let r;if(t.data instanceof ArrayBuffer)r=t.data;else{if(!(t.data instanceof Blob))return void a.error("unsupported data type",t.data);r=yield t.data.arrayBuffer()}const s=tt.fromBinary(new Uint8Array(r));"speaker"===(null===(i=s.value)||void 0===i?void 0:i.case)?this.emit(e.EngineEvent.ActiveSpeakersUpdate,s.value.value.speakers):"user"===(null===(n=s.value)||void 0===n?void 0:n.case)&&this.emit(e.EngineEvent.DataPacketReceived,s.value.value,s.kind)}finally{r()}})),this.handleDataError=e=>{const t=0===e.currentTarget.maxRetransmits?"lossy":"reliable";if(e instanceof ErrorEvent&&e.error){const{error:i}=e.error;a.error("DataChannel error on ".concat(t,": ").concat(e.message),i)}else a.error("Unknown DataChannel error on ".concat(t),e)},this.handleBufferedAmountLow=t=>{const i=0===t.currentTarget.maxRetransmits?e.DataPacket_Kind.LOSSY:e.DataPacket_Kind.RELIABLE;this.updateAndEmitDCBufferStatus(i)},this.handleDisconnect=(t,i)=>{if(this._isClosed)return;a.warn("".concat(t," disconnected")),0===this.reconnectAttempts&&(this.reconnectStart=Date.now());const n=t=>{a.warn("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(t,"ms. giving up")),this.emit(e.EngineEvent.Disconnected),this.close()},r=Date.now()-this.reconnectStart;let s=this.getNextRetryDelay({elapsedMs:r,retryCount:this.reconnectAttempts});null!==s?(t===js&&(s=0),a.debug("reconnecting in ".concat(s,"ms")),this.clearReconnectTimeout(),this.token&&this.regionUrlProvider&&this.regionUrlProvider.updateToken(this.token),this.reconnectTimeout=Un.setTimeout((()=>this.attemptReconnect(i)),s)):n(r)},this.waitForRestarted=()=>new Promise(((t,i)=>{this.pcState===Vs.Connected&&t();const n=()=>{this.off(e.EngineEvent.Disconnected,r),t()},r=()=>{this.off(e.EngineEvent.Restarted,n),i()};this.once(e.EngineEvent.Restarted,n),this.once(e.EngineEvent.Disconnected,r)})),this.updateAndEmitDCBufferStatus=t=>{const i=this.isBufferStatusLow(t);void 0!==i&&i!==this.dcBufferStatus.get(t)&&(this.dcBufferStatus.set(t,i),this.emit(e.EngineEvent.DCBufferStatusChanged,i,t))},this.isBufferStatusLow=e=>{const t=this.dataChannelForKind(e);if(t)return t.bufferedAmount<=t.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>{this.client.isReconnecting&&(this.clearReconnectTimeout(),this.attemptReconnect(Ue.RR_SIGNAL_DISCONNECTED))},this.client=new zr,this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.registerOnLineListener(),this.closingLock=new Vr,this.dataProcessLock=new Vr,this.dcBufferStatus=new Map([[e.DataPacket_Kind.LOSSY,!0],[e.DataPacket_Kind.RELIABLE,!0]]),this.client.onParticipantUpdate=t=>this.emit(e.EngineEvent.ParticipantUpdate,t),this.client.onConnectionQuality=t=>this.emit(e.EngineEvent.ConnectionQualityUpdate,t),this.client.onRoomUpdate=t=>this.emit(e.EngineEvent.RoomUpdate,t),this.client.onSubscriptionError=t=>this.emit(e.EngineEvent.SubscriptionError,t),this.client.onSubscriptionPermissionUpdate=t=>this.emit(e.EngineEvent.SubscriptionPermissionUpdate,t),this.client.onSpeakersChanged=t=>this.emit(e.EngineEvent.SpeakersChanged,t),this.client.onStreamStateUpdate=t=>this.emit(e.EngineEvent.StreamStateChanged,t)}join(e,t,i,n){return vt(this,void 0,void 0,(function*(){this.url=e,this.token=t,this.signalOpts=i,this.maxJoinAttempts=i.maxRetries;try{this.joinAttempts+=1,this.setupSignalClientCallbacks();const r=yield this.client.join(e,t,i,n);return this._isClosed=!1,this.latestJoinResponse=r,this.subscriberPrimary=r.subscriberPrimary,this.publisher||this.configure(r),this.subscriberPrimary||this.negotiate(),this.clientConfiguration=r.clientConfiguration,r}catch(r){if(r instanceof Ln&&1===r.reason&&(a.warn("Couldn't connect to server, attempt ".concat(this.joinAttempts," of ").concat(this.maxJoinAttempts)),this.joinAttempts<this.maxJoinAttempts))return this.join(e,t,i,n);throw r}}))}close(){return vt(this,void 0,void 0,(function*(){const t=yield this.closingLock.lock();if(this.isClosed)t();else try{this._isClosed=!0,this.emit(e.EngineEvent.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),yield this.cleanupPeerConnections(),yield this.cleanupClient()}finally{t()}}))}cleanupPeerConnections(){return vt(this,void 0,void 0,(function*(){this.publisher&&"closed"!==this.publisher.pc.signalingState&&this.publisher.pc.getSenders().forEach((e=>{var t,i;try{(null===(t=this.publisher)||void 0===t?void 0:t.pc.removeTrack)&&(null===(i=this.publisher)||void 0===i||i.pc.removeTrack(e))}catch(e){a.warn("could not removeTrack",{error:e})}})),this.publisher&&(this.publisher.close(),this.publisher=void 0),this.subscriber&&(this.subscriber.close(),this.subscriber=void 0),this.primaryPC=void 0;const e=e=>{e&&(e.close(),e.onbufferedamountlow=null,e.onclose=null,e.onclosing=null,e.onerror=null,e.onmessage=null,e.onopen=null)};e(this.lossyDC),e(this.lossyDCSub),e(this.reliableDC),e(this.reliableDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0}))}cleanupClient(){return vt(this,void 0,void 0,(function*(){yield this.client.close(),this.client.resetCallbacks()}))}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new An("a track with the same ID has already been published");return new Promise(((t,i)=>{const n=setTimeout((()=>{delete this.pendingTrackResolvers[e.cid],i(new Ln("publication of local track timed out, no response from server"))}),1e4);this.pendingTrackResolvers[e.cid]={resolve:e=>{clearTimeout(n),t(e)},reject:()=>{clearTimeout(n),i(new Error("Cancelled publication by calling unpublish"))}},this.client.sendAddTrack(e)}))}removeTrack(e){var t;if(e.track&&this.pendingTrackResolvers[e.track.id]){const{reject:t}=this.pendingTrackResolvers[e.track.id];t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return null===(t=this.publisher)||void 0===t||t.pc.removeTrack(e),!0}catch(e){a.warn("failed to remove track",{error:e,method:"removeTrack"})}return!1}updateMuteStatus(e,t){this.client.sendMuteTrack(e,t)}get dataSubscriberReadyState(){var e;return null===(e=this.reliableDCSub)||void 0===e?void 0:e.readyState}getConnectedServerAddress(){return vt(this,void 0,void 0,(function*(){if(void 0!==this.primaryPC)return function(e){var t;return vt(this,void 0,void 0,(function*(){let i="";const n=new Map,r=new Map;if((yield e.getStats()).forEach((e=>{switch(e.type){case"transport":i=e.selectedCandidatePairId;break;case"candidate-pair":""===i&&e.selected&&(i=e.id),n.set(e.id,e);break;case"remote-candidate":r.set(e.id,"".concat(e.address,":").concat(e.port))}})),""===i)return;const s=null===(t=n.get(i))||void 0===t?void 0:t.remoteCandidateId;return void 0!==s?r.get(s):void 0}))}(this.primaryPC)}))}setRegionUrlProvider(e){this.regionUrlProvider=e}configure(t){var i,n;if(this.publisher||this.subscriber)return;this.participantSid=null===(i=t.participant)||void 0===i?void 0:i.sid;const r=this.makeRTCConfiguration(t);(null===(n=this.signalOpts)||void 0===n?void 0:n.e2eeEnabled)&&(a.debug("E2EE - setting up transports with insertable streams"),r.encodedInsertableStreams=!0);this.publisher=new Ns(r,{optional:[{googDscp:!0}]}),this.subscriber=new Ns(r),this.emit(e.EngineEvent.TransportsCreated,this.publisher,this.subscriber),this.publisher.pc.onicecandidate=e=>{e.candidate&&(a.trace("adding ICE candidate for peer",e.candidate),this.client.sendIceCandidate(e.candidate,Ji.PUBLISHER))},this.subscriber.pc.onicecandidate=e=>{e.candidate&&this.client.sendIceCandidate(e.candidate,Ji.SUBSCRIBER)},this.publisher.onOffer=e=>{this.client.sendOffer(e)};let s=this.publisher.pc,o=this.subscriber.pc,c=t.subscriberPrimary;c&&(s=this.subscriber.pc,o=this.publisher.pc,this.subscriber.pc.ondatachannel=this.handleDataChannel),this.primaryPC=s,s.onconnectionstatechange=()=>vt(this,void 0,void 0,(function*(){if(a.debug("primary PC state changed ".concat(s.connectionState)),"connected"===s.connectionState){const i=this.pcState===Vs.New;this.pcState=Vs.Connected,i&&this.emit(e.EngineEvent.Connected,t)}else"failed"===s.connectionState&&this.pcState===Vs.Connected&&(this.pcState=Vs.Disconnected,this.handleDisconnect("primary peerconnection",c?Ue.RR_SUBSCRIBER_FAILED:Ue.RR_PUBLISHER_FAILED))})),o.onconnectionstatechange=()=>vt(this,void 0,void 0,(function*(){a.debug("secondary PC state changed ".concat(o.connectionState)),"failed"===o.connectionState&&this.handleDisconnect("secondary peerconnection",c?Ue.RR_PUBLISHER_FAILED:Ue.RR_SUBSCRIBER_FAILED)})),this.subscriber.pc.ontrack=t=>{this.emit(e.EngineEvent.MediaTrackAdded,t.track,t.streams[0],t.receiver)},this.createDataChannels()}setupSignalClientCallbacks(){this.client.onAnswer=e=>vt(this,void 0,void 0,(function*(){this.publisher&&(a.debug("received server answer",{RTCSdpType:e.type,signalingState:this.publisher.pc.signalingState.toString()}),yield this.publisher.setRemoteDescription(e))})),this.client.onTrickle=(e,t)=>{this.publisher&&this.subscriber&&(a.trace("got ICE candidate from peer",{candidate:e,target:t}),t===Ji.PUBLISHER?this.publisher.addIceCandidate(e):this.subscriber.addIceCandidate(e))},this.client.onOffer=e=>vt(this,void 0,void 0,(function*(){if(!this.subscriber)return;a.debug("received server offer",{RTCSdpType:e.type,signalingState:this.subscriber.pc.signalingState.toString()}),yield this.subscriber.setRemoteDescription(e);const t=yield this.subscriber.createAndSetAnswer();this.client.sendAnswer(t)})),this.client.onLocalTrackPublished=e=>{if(a.debug("received trackPublishedResponse",e),!this.pendingTrackResolvers[e.cid])return void a.error("missing track resolver for ".concat(e.cid));const{resolve:t}=this.pendingTrackResolvers[e.cid];delete this.pendingTrackResolvers[e.cid],t(e.track)},this.client.onTokenRefresh=e=>{this.token=e},this.client.onClose=()=>{this.handleDisconnect("signal",Ue.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=t=>{(null==t?void 0:t.canReconnect)?(this.fullReconnectOnNext=!0,this.primaryPC=void 0,this.handleDisconnect(js)):(this.emit(e.EngineEvent.Disconnected,null==t?void 0:t.reason),this.close()),a.trace("leave request",{leave:t})}}makeRTCConfiguration(e){const t=Object.assign({},this.rtcConfig);if(e.iceServers&&!t.iceServers){const i=[];e.iceServers.forEach((e=>{const t={urls:e.urls};e.username&&(t.username=e.username),e.credential&&(t.credential=e.credential),i.push(t)})),t.iceServers=i}return e.clientConfiguration&&e.clientConfiguration.forceRelay===Oe.ENABLED&&(t.iceTransportPolicy="relay"),t.sdpSemantics="unified-plan",t.continualGatheringPolicy="gather_continually",t}createDataChannels(){this.publisher&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.lossyDC=this.publisher.pc.createDataChannel(Fs,{ordered:!0,maxRetransmits:0}),this.reliableDC=this.publisher.pc.createDataChannel(Js,{ordered:!0}),this.lossyDC.onmessage=this.handleDataMessage,this.reliableDC.onmessage=this.handleDataMessage,this.lossyDC.onerror=this.handleDataError,this.reliableDC.onerror=this.handleDataError,this.lossyDC.bufferedAmountLowThreshold=65535,this.reliableDC.bufferedAmountLowThreshold=65535,this.lossyDC.onbufferedamountlow=this.handleBufferedAmountLow,this.reliableDC.onbufferedamountlow=this.handleBufferedAmountLow)}setPreferredCodec(e,t,i){if(!("getCapabilities"in RTCRtpSender))return;const n=RTCRtpSender.getCapabilities(t);if(!n)return;a.debug("get capabilities",n);const r=[],s=[],o=[];n.codecs.forEach((e=>{const t=e.mimeType.toLowerCase();if("audio/opus"===t)return void r.push(e);t==="video/".concat(i)?"h264"!==i||e.sdpFmtpLine&&e.sdpFmtpLine.includes("profile-level-id=42e01f")?r.push(e):s.push(e):o.push(e)})),function(e){if(!Er())return!1;if(!("setCodecPreferences"in e))return!1;const t=Jn();if(!(null==t?void 0:t.name)||!t.version)return!1;const i=br[t.name];return!!i&&_r(t.version,i)>=0}(e)&&e.setCodecPreferences(r.concat(s,o))}createSender(e,t,i){return vt(this,void 0,void 0,(function*(){if(mr()){return yield this.createTransceiverRTCRtpSender(e,t,i)}if(fr()){a.warn("using add-track fallback");return yield this.createRTCRtpSender(e.mediaStreamTrack)}throw new On("Required webRTC APIs not supported on this device")}))}createSimulcastSender(e,t,i,n){return vt(this,void 0,void 0,(function*(){if(mr())return this.createSimulcastTransceiverSender(e,t,i,n);if(fr())return a.debug("using add-track fallback"),this.createRTCRtpSender(e.mediaStreamTrack);throw new On("Cannot stream on this device")}))}createTransceiverRTCRtpSender(e,t,i){return vt(this,void 0,void 0,(function*(){if(!this.publisher)throw new On("publisher is closed");const n=[];e.mediaStream&&n.push(e.mediaStream);const r={direction:"sendonly",streams:n};i&&(r.sendEncodings=i);const s=yield this.publisher.pc.addTransceiver(e.mediaStreamTrack,r);return e.kind===rr.Kind.Video&&t.videoCodec&&(this.setPreferredCodec(s,e.kind,t.videoCodec),e.codec=t.videoCodec),s.sender}))}createSimulcastTransceiverSender(e,t,i,n){return vt(this,void 0,void 0,(function*(){if(!this.publisher)throw new On("publisher is closed");const r={direction:"sendonly"};n&&(r.sendEncodings=n);const s=yield this.publisher.pc.addTransceiver(t.mediaStreamTrack,r);if(i.videoCodec)return this.setPreferredCodec(s,e.kind,i.videoCodec),e.setSimulcastTrackSender(i.videoCodec,s.sender),s.sender}))}createRTCRtpSender(e){return vt(this,void 0,void 0,(function*(){if(!this.publisher)throw new On("publisher is closed");return this.publisher.pc.addTrack(e)}))}attemptReconnect(t){var i,n,r;return vt(this,void 0,void 0,(function*(){if(!this._isClosed&&!this.attemptingReconnect){(null===(i=this.clientConfiguration)||void 0===i?void 0:i.resumeConnection)!==Oe.DISABLED&&"closed"!==(null!==(r=null===(n=this.primaryPC)||void 0===n?void 0:n.signalingState)&&void 0!==r?r:"closed")||(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(t),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(t){this.reconnectAttempts+=1;let i=!0;t instanceof On?(a.debug("received unrecoverable error",{error:t}),i=!1):t instanceof Ks||(this.fullReconnectOnNext=!0),i?this.handleDisconnect("reconnect",Ue.RR_UNKNOWN):(a.info("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms. giving up")),this.emit(e.EngineEvent.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}}))}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(e){a.warn("encountered error in reconnect policy",{error:e})}return null}restartConnection(t){var i,n,r;return vt(this,void 0,void 0,(function*(){try{if(!this.url||!this.token)throw new On("could not reconnect, url or token not saved");let n;a.info("reconnecting, attempt: ".concat(this.reconnectAttempts)),this.emit(e.EngineEvent.Restarting),this.client.isConnected&&(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();try{if(!this.signalOpts)throw a.warn("attempted connection restart, without signal options present"),new Ks;n=yield this.join(null!=t?t:this.url,this.token,this.signalOpts)}catch(e){if(e instanceof Ln&&0===e.reason)throw new On("could not reconnect, token might be expired");throw new Ks}if(this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");this.client.setReconnected(),this.emit(e.EngineEvent.SignalRestarted,n),yield this.waitForPCReconnected(),null===(i=this.regionUrlProvider)||void 0===i||i.resetAttempts(),this.emit(e.EngineEvent.Restarted)}catch(e){const t=yield null===(n=this.regionUrlProvider)||void 0===n?void 0:n.getNextBestRegionUrl();if(t)return void(yield this.restartConnection(t));throw null===(r=this.regionUrlProvider)||void 0===r||r.resetAttempts(),e}}))}resumeConnection(t){var i;return vt(this,void 0,void 0,(function*(){if(!this.url||!this.token)throw new On("could not reconnect, url or token not saved");if(!this.publisher||!this.subscriber)throw new On("publisher and subscriber connections unset");a.info("resuming signal connection, attempt ".concat(this.reconnectAttempts)),this.emit(e.EngineEvent.Resuming);try{this.setupSignalClientCallbacks();const e=yield this.client.reconnect(this.url,this.token,this.participantSid,t);if(e){const t=this.makeRTCConfiguration(e);this.publisher.pc.setConfiguration(t),this.subscriber.pc.setConfiguration(t)}}catch(e){let t="";if(e instanceof Error&&(t=e.message),e instanceof Ln&&0===e.reason)throw new On("could not reconnect, token might be expired");throw new Ks(t)}if(this.emit(e.EngineEvent.SignalResumed),this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");this.subscriber.restartingIce=!0,this.hasPublished&&(yield this.publisher.createAndSendOffer({iceRestart:!0})),yield this.waitForPCReconnected(),this.client.setReconnected(),"open"===(null===(i=this.reliableDC)||void 0===i?void 0:i.readyState)&&null===this.reliableDC.id&&this.createDataChannels(),this.emit(e.EngineEvent.Resumed)}))}waitForPCInitialConnection(t,i){return vt(this,void 0,void 0,(function*(){if(this.pcState!==Vs.Connected){if(this.pcState!==Vs.New)throw new On("Expected peer connection to be new on initial connection");return new Promise(((n,r)=>{const s=()=>{a.warn("closing engine"),Un.clearTimeout(c),r(new Ln("room connection has been cancelled",3))};(null==i?void 0:i.signal.aborted)&&s(),null==i||i.signal.addEventListener("abort",s);const o=()=>{Un.clearTimeout(c),null==i||i.signal.removeEventListener("abort",s),n()},c=Un.setTimeout((()=>{this.off(e.EngineEvent.Connected,o),r(new Ln("could not establish pc connection"))}),null!=t?t:this.peerConnectionTimeout);this.once(e.EngineEvent.Connected,o)}))}}))}waitForPCReconnected(){var e;return vt(this,void 0,void 0,(function*(){const t=Date.now();let i=t;for(this.pcState=Vs.Reconnecting,a.debug("waiting for peer connection to reconnect");i-t<this.peerConnectionTimeout&&void 0!==this.primaryPC;){if(i-t>2e3&&"connected"===(null===(e=this.primaryPC)||void 0===e?void 0:e.connectionState)&&(this.pcState=Vs.Connected),this.pcState===Vs.Connected)return;yield pr(100),i=Date.now()}throw new Ln("could not establish PC connection")}))}sendDataPacket(e,t){return vt(this,void 0,void 0,(function*(){const i=e.toBinary();yield this.ensurePublisherConnected(t);const n=this.dataChannelForKind(t);n&&n.send(i),this.updateAndEmitDCBufferStatus(t)}))}ensureDataTransportConnected(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.subscriberPrimary;var i,n,r;return vt(this,void 0,void 0,(function*(){const s=t?this.subscriber:this.publisher,o=t?"Subscriber":"Publisher";if(!s)throw new Ln("".concat(o," connection not set"));t||(null===(i=this.publisher)||void 0===i?void 0:i.isICEConnected)||"checking"===(null===(n=this.publisher)||void 0===n?void 0:n.pc.iceConnectionState)||this.negotiate();const a=this.dataChannelForKind(e,t);if("open"===(null==a?void 0:a.readyState))return;const c=(new Date).getTime()+this.peerConnectionTimeout;for(;(new Date).getTime()<c;){if(s.isICEConnected&&"open"===(null===(r=this.dataChannelForKind(e,t))||void 0===r?void 0:r.readyState))return;yield pr(50)}throw new Ln("could not establish ".concat(o," connection, state: ").concat(s.pc.iceConnectionState))}))}ensurePublisherConnected(e){return vt(this,void 0,void 0,(function*(){yield this.ensureDataTransportConnected(e,!1)}))}verifyTransport(){if(!this.primaryPC)return!1;if("closed"===this.primaryPC.connectionState||"failed"===this.primaryPC.connectionState)return!1;if(this.hasPublished&&this.subscriberPrimary){if(!this.publisher)return!1;if("closed"===this.publisher.pc.connectionState||"failed"===this.publisher.pc.connectionState)return!1}return!(!this.client.ws||this.client.ws.readyState===WebSocket.CLOSED)}negotiate(){return new Promise(((t,i)=>{if(!this.publisher)return void i(new xn("publisher is not defined"));this.hasPublished=!0;const n=()=>{a.debug("engine disconnected while negotiation was ongoing"),s(),t()};this.isClosed&&i("cannot negotiate on closed engine"),this.on(e.EngineEvent.Closing,n);const r=setTimeout((()=>{i("negotiation timed out"),this.handleDisconnect("negotiation",Ue.RR_SIGNAL_DISCONNECTED)}),this.peerConnectionTimeout),s=()=>{clearTimeout(r),this.off(e.EngineEvent.Closing,n)};this.publisher.once(Ds,(()=>{var e;null===(e=this.publisher)||void 0===e||e.once(_s,(()=>{s(),t()}))})),this.publisher.once(Ls,(t=>{const i=new Map;t.forEach((e=>{const t=e.codec.toLowerCase();var n;n=t,Hn.includes(n)&&i.set(e.payload,t)})),this.emit(e.EngineEvent.RTPVideoMapUpdate,i)})),this.publisher.negotiate((e=>{s(),i(e),e instanceof xn&&(this.fullReconnectOnNext=!0),this.handleDisconnect("negotiation",Ue.RR_UNKNOWN)}))}))}dataChannelForKind(t,i){if(i){if(t===e.DataPacket_Kind.LOSSY)return this.lossyDCSub;if(t===e.DataPacket_Kind.RELIABLE)return this.reliableDCSub}else{if(t===e.DataPacket_Kind.LOSSY)return this.lossyDC;if(t===e.DataPacket_Kind.RELIABLE)return this.reliableDC}}failNext(){this.shouldFailNext=!0}clearReconnectTimeout(){this.reconnectTimeout&&Un.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){Er()&&window.addEventListener("online",this.handleBrowserOnLine)}deregisterOnLineListener(){Er()&&window.removeEventListener("online",this.handleBrowserOnLine)}}class Ks extends Error{}class Ws{constructor(e,t){this.lastUpdateAt=0,this.settingsCacheTime=3e3,this.attemptedRegions=[],this.serverUrl=new URL(e),this.token=t}updateToken(e){this.token=e}isCloud(){return Pr(this.serverUrl)}getServerUrl(){return this.serverUrl}getNextBestRegionUrl(e){return vt(this,void 0,void 0,(function*(){if(!this.isCloud())throw Error("region availability is only supported for LiveKit Cloud domains");(!this.regionSettings||Date.now()-this.lastUpdateAt>this.settingsCacheTime)&&(this.regionSettings=yield this.fetchRegionSettings(e));const t=this.regionSettings.regions.filter((e=>!this.attemptedRegions.find((t=>t.url===e.url))));if(t.length>0){const e=t[0];return this.attemptedRegions.push(e),a.debug("next region: ".concat(e.region)),e.url}return null}))}resetAttempts(){this.attemptedRegions=[]}fetchRegionSettings(e){return vt(this,void 0,void 0,(function*(){const t=yield fetch("".concat((i=this.serverUrl,"".concat(i.protocol.replace("ws","http"),"//").concat(i.host,"/settings")),"/regions"),{headers:{authorization:"Bearer ".concat(this.token)},signal:e});var i;if(t.ok){const e=yield t.json();return this.lastUpdateAt=Date.now(),e}throw new Ln("Could not fetch region settings: ".concat(t.statusText),401===t.status?0:void 0,t.status)}))}}const Hs=2e3;function Gs(e,t){if(!t)return 0;let i,n;return"bytesReceived"in e?(i=e.bytesReceived,n=t.bytesReceived):"bytesSent"in e&&(i=e.bytesSent,n=t.bytesSent),void 0===i||void 0===n||void 0===e.timestamp||void 0===t.timestamp?0:8*(i-n)*1e3/(e.timestamp-t.timestamp)}class zs extends ps{constructor(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>3?arguments[3]:void 0;super(e,rr.Kind.Audio,t,i),this.stopOnMute=!1,this.monitorSender=()=>vt(this,void 0,void 0,(function*(){if(!this.sender)return void(this._currentBitrate=0);let e;try{e=yield this.getSenderStats()}catch(e){return void a.error("could not get audio sender stats",{error:e})}e&&this.prevStats&&(this._currentBitrate=Gs(e,this.prevStats)),this.prevStats=e})),this.audioContext=n,this.checkForSilence()}setDeviceId(e){return vt(this,void 0,void 0,(function*(){return this._constraints.deviceId===e||(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||qr(e)===this.mediaStreamTrack.getSettings().deviceId)}))}mute(){const e=Object.create(null,{mute:{get:()=>super.mute}});return vt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{return this.source===rr.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(a.debug("stopping mic track"),this._mediaStreamTrack.stop()),yield e.mute.call(this),this}finally{t()}}))}unmute(){const e=Object.create(null,{unmute:{get:()=>super.unmute}});return vt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{const t=this._constraints.deviceId&&this._mediaStreamTrack.getSettings().deviceId!==qr(this._constraints.deviceId);return this.source!==rr.Source.Microphone||!this.stopOnMute&&"ended"!==this._mediaStreamTrack.readyState&&!t||this.isUserProvided||(a.debug("reacquiring mic track"),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}}))}restartTrack(e){return vt(this,void 0,void 0,(function*(){let t;if(e){const i=dr({audio:e});"boolean"!=typeof i.audio&&(t=i.audio)}yield this.restart(t)}))}restart(e){const t=Object.create(null,{restart:{get:()=>super.restart}});return vt(this,void 0,void 0,(function*(){const i=yield t.restart.call(this,e);return this.checkForSilence(),i}))}startMonitor(){Er()&&(this.monitorInterval||(this.monitorInterval=setInterval((()=>{this.monitorSender()}),Hs)))}setProcessor(e){var t;return vt(this,void 0,void 0,(function*(){const i=yield this.processorLock.lock();try{if(!this.audioContext)throw Error("Audio context needs to be set on LocalAudioTrack in order to enable processors");if(this.processor&&(yield this.stopProcessor()),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");const i={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext};a.debug("setting up audio processor ".concat(e.name)),yield e.init(i),this.processor=e,this.processor.processedTrack&&(yield null===(t=this.sender)||void 0===t?void 0:t.replaceTrack(this.processor.processedTrack))}finally{i()}}))}setAudioContext(e){this.audioContext=e}getSenderStats(){var e;return vt(this,void 0,void 0,(function*(){if(!(null===(e=this.sender)||void 0===e?void 0:e.getStats))return;let t;return(yield this.sender.getStats()).forEach((e=>{"outbound-rtp"===e.type&&(t={type:"audio",streamId:e.id,packetsSent:e.packetsSent,packetsLost:e.packetsLost,bytesSent:e.bytesSent,timestamp:e.timestamp,roundTripTime:e.roundTripTime,jitter:e.jitter})})),t}))}checkForSilence(){return vt(this,void 0,void 0,(function*(){const t=yield function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;return vt(this,void 0,void 0,(function*(){const i=ur();if(i){const n=i.createAnalyser();n.fftSize=2048;const r=n.frequencyBinCount,s=new Uint8Array(r);i.createMediaStreamSource(new MediaStream([e.mediaStreamTrack])).connect(n),yield pr(t),n.getByteTimeDomainData(s);const o=s.some((e=>128!==e&&0!==e));return i.close(),!o}return!1}))}(this);return t&&(this.isMuted||a.warn("silence detected on local audio track"),this.emit(e.TrackEvent.AudioSilenceDetected)),t}))}}function Qs(e,t){switch(e.kind){case"audio":return new zs(e,t,!1);case"video":return new uo(e,t,!1);default:throw new An("unsupported track type: ".concat(e.kind))}}const Ys=Object.values(Yn),Xs=Object.values(Xn),Zs=Object.values(Zn),$s=[Yn.h180,Yn.h360],eo=[Xn.h180,Xn.h360],to=e=>[{scaleResolutionDownBy:2,fps:3}].map((t=>{var i;return new Kn(Math.floor(e.width/t.scaleResolutionDownBy),Math.floor(e.height/t.scaleResolutionDownBy),Math.max(15e4,Math.floor(e.encoding.maxBitrate/(Math.pow(t.scaleResolutionDownBy,2)*((null!==(i=e.encoding.maxFramerate)&&void 0!==i?i:30)/t.fps)))),t.fps,e.encoding.priority)})),io=["q","h","f"];function no(e,t,i,n){var r,s;let o=null==n?void 0:n.videoEncoding;e&&(o=null==n?void 0:n.screenShareEncoding);const c=null==n?void 0:n.simulcast,d=null==n?void 0:n.scalabilityMode,u=null==n?void 0:n.videoCodec;if(!o&&!c&&!d||!t||!i)return[{}];o||(o=function(e,t,i,n){const r=function(e,t,i){if(e)return Zs;const n=t>i?t/i:i/t;if(Math.abs(n-16/9)<Math.abs(n-4/3))return Ys;return Xs}(e,t,i);let{encoding:s}=r[0];const o=Math.max(t,i);for(let e=0;e<r.length;e+=1){const t=r[e];if(s=t.encoding,t.width>=o)break}if(n)switch(n){case"av1":s=Object.assign({},s),s.maxBitrate=.7*s.maxBitrate;break;case"vp9":s=Object.assign({},s),s.maxBitrate=.85*s.maxBitrate}return s}(e,t,i,u),a.debug("using video encoding",o));const l=new Kn(t,i,o.maxBitrate,o.maxFramerate,o.priority);if(d&&yr(u)){a.debug("using svc with scalabilityMode ".concat(d));const e=new co(d),t=[];if(e.spatial>3)throw new Error("unsupported scalabilityMode: ".concat(d));for(let i=0;i<e.spatial;i+=1)t.push({rid:io[2-i],maxBitrate:o.maxBitrate/Math.pow(3,i),maxFramerate:l.encoding.maxFramerate});return t[0].scalabilityMode=d,a.debug("encodings",t),t}if(!c)return[o];let h,p=[];if(p=e?null!==(r=ao(null==n?void 0:n.screenShareSimulcastLayers))&&void 0!==r?r:so(e,l):null!==(s=ao(null==n?void 0:n.videoSimulcastLayers))&&void 0!==s?s:so(e,l),p.length>0){const e=p[0];p.length>1&&([,h]=p);const n=Math.max(t,i);if(n>=960&&h)return oo(t,i,[e,h,l]);if(n>=480)return oo(t,i,[e,l])}return oo(t,i,[l])}function ro(e,t,i){var n,r,s,o;if(!i.backupCodec||i.backupCodec.codec===i.videoCodec)return;t!==i.backupCodec.codec&&a.warn("requested a different codec than specified as backup",{serverRequested:t,backup:i.backupCodec.codec}),i.videoCodec=t,i.videoEncoding=i.backupCodec.encoding;const c=e.mediaStreamTrack.getSettings(),d=null!==(n=c.width)&&void 0!==n?n:null===(r=e.dimensions)||void 0===r?void 0:r.width,u=null!==(s=c.height)&&void 0!==s?s:null===(o=e.dimensions)||void 0===o?void 0:o.height;return no(e.source===rr.Source.ScreenShare,d,u,i)}function so(e,t){if(e)return to(t);const{width:i,height:n}=t,r=i>n?i/n:n/i;return Math.abs(r-16/9)<Math.abs(r-4/3)?$s:eo}function oo(e,t,i){const n=[];if(i.forEach(((i,r)=>{if(r>=io.length)return;const s=Math.min(e,t),o={rid:io[r],scaleResolutionDownBy:Math.max(1,s/Math.min(i.width,i.height)),maxBitrate:i.encoding.maxBitrate};i.encoding.maxFramerate&&(o.maxFramerate=i.encoding.maxFramerate);const a=Tr()||0===r;i.encoding.priority&&a&&(o.priority=i.encoding.priority,o.networkPriority=i.encoding.priority),n.push(o)})),Cr()&&"ios"===Ir()){let e;n.forEach((t=>{e?t.maxFramerate&&t.maxFramerate>e&&(e=t.maxFramerate):e=t.maxFramerate}));let t=!0;n.forEach((i=>{var n;i.maxFramerate!=e&&(t&&(t=!1,a.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.")),a.info('Setting framerate of encoding "'.concat(null!==(n=i.rid)&&void 0!==n?n:"",'" to ').concat(e)),i.maxFramerate=e)}))}return n}function ao(e){if(e)return e.sort(((e,t)=>{const{encoding:i}=e,{encoding:n}=t;return i.maxBitrate>n.maxBitrate?1:i.maxBitrate<n.maxBitrate?-1:i.maxBitrate===n.maxBitrate&&i.maxFramerate&&n.maxFramerate?i.maxFramerate>n.maxFramerate?1:-1:0}))}class co{constructor(e){const t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw new Error("invalid scalability mode");if(this.spatial=parseInt(t[1]),this.temporal=parseInt(t[2]),t.length>3)switch(t[3]){case"h":case"_KEY":case"_KEY_SHIFT":this.suffix=t[3]}}toString(){var e;return"L".concat(this.spatial,"T").concat(this.temporal).concat(null!==(e=this.suffix)&&void 0!==e?e:"")}}class uo extends ps{constructor(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,rr.Kind.Video,t,i),this.simulcastCodecs=new Map,this.monitorSender=()=>vt(this,void 0,void 0,(function*(){if(!this.sender)return void(this._currentBitrate=0);let e;try{e=yield this.getSenderStats()}catch(e){return void a.error("could not get audio sender stats",{error:e})}const t=new Map(e.map((e=>[e.rid,e])));if(this.prevStats){let e=0;t.forEach(((t,i)=>{var n;const r=null===(n=this.prevStats)||void 0===n?void 0:n.get(i);e+=Gs(t,r)})),this._currentBitrate=e}this.prevStats=t})),this.senderLock=new Vr}get isSimulcast(){return!!(this.sender&&this.sender.getParameters().encodings.length>1)}startMonitor(e){var t;if(this.signalClient=e,!Er())return;const i=null===(t=this.sender)||void 0===t?void 0:t.getParameters();i&&(this.encodings=i.encodings),this.monitorInterval||(this.monitorInterval=setInterval((()=>{this.monitorSender()}),Hs))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach((e=>{e.mediaStreamTrack.stop()})),super.stop()}pauseUpstream(){const e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});var t,i,n,r,s;return vt(this,void 0,void 0,(function*(){yield e.pauseUpstream.call(this);try{for(var o,a=!0,c=yt(this.simulcastCodecs.values());o=yield c.next(),!(t=o.done);a=!0){r=o.value,a=!1;const e=r;yield null===(s=e.sender)||void 0===s?void 0:s.replaceTrack(null)}}catch(e){i={error:e}}finally{try{a||t||!(n=c.return)||(yield n.call(c))}finally{if(i)throw i.error}}}))}resumeUpstream(){const e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});var t,i,n,r,s;return vt(this,void 0,void 0,(function*(){yield e.resumeUpstream.call(this);try{for(var o,a=!0,c=yt(this.simulcastCodecs.values());o=yield c.next(),!(t=o.done);a=!0){r=o.value,a=!1;const e=r;yield null===(s=e.sender)||void 0===s?void 0:s.replaceTrack(e.mediaStreamTrack)}}catch(e){i={error:e}}finally{try{a||t||!(n=c.return)||(yield n.call(c))}finally{if(i)throw i.error}}}))}mute(){const e=Object.create(null,{mute:{get:()=>super.mute}});return vt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{return this.source!==rr.Source.Camera||this.isUserProvided||(a.debug("stopping camera track"),this._mediaStreamTrack.stop()),yield e.mute.call(this),this}finally{t()}}))}unmute(){const e=Object.create(null,{unmute:{get:()=>super.unmute}});return vt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{return this.source!==rr.Source.Camera||this.isUserProvided||(a.debug("reacquiring camera track"),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}}))}setTrackMuted(e){super.setTrackMuted(e);for(const t of this.simulcastCodecs.values())t.mediaStreamTrack.enabled=!e}getSenderStats(){var e;return vt(this,void 0,void 0,(function*(){if(!(null===(e=this.sender)||void 0===e?void 0:e.getStats))return[];const t=[],i=yield this.sender.getStats();return i.forEach((e=>{var n;if("outbound-rtp"===e.type){const r={type:"video",streamId:e.id,frameHeight:e.frameHeight,frameWidth:e.frameWidth,firCount:e.firCount,pliCount:e.pliCount,nackCount:e.nackCount,packetsSent:e.packetsSent,bytesSent:e.bytesSent,framesSent:e.framesSent,timestamp:e.timestamp,rid:null!==(n=e.rid)&&void 0!==n?n:e.id,retransmittedPacketsSent:e.retransmittedPacketsSent,qualityLimitationReason:e.qualityLimitationReason,qualityLimitationResolutionChanges:e.qualityLimitationResolutionChanges},s=i.get(e.remoteId);s&&(r.jitter=s.jitter,r.packetsLost=s.packetsLost,r.roundTripTime=s.roundTripTime),t.push(r)}})),t}))}setPublishingQuality(t){const i=[];for(let n=e.VideoQuality.LOW;n<=e.VideoQuality.HIGH;n+=1)i.push(new vn({quality:n,enabled:n<=t}));a.debug("setting publishing quality. max quality ".concat(t)),this.setPublishingLayers(i)}setDeviceId(e){return vt(this,void 0,void 0,(function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===qr(e)||(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||qr(e)===this._mediaStreamTrack.getSettings().deviceId)}))}restartTrack(e){var t,i,n,r;return vt(this,void 0,void 0,(function*(){let s;if(e){const t=dr({video:e});"boolean"!=typeof t.video&&(s=t.video)}yield this.restart(s);try{for(var o,a=!0,c=yt(this.simulcastCodecs.values());o=yield c.next(),!(t=o.done);a=!0){r=o.value,a=!1;const e=r;e.sender&&(e.mediaStreamTrack=this.mediaStreamTrack.clone(),yield e.sender.replaceTrack(e.mediaStreamTrack))}}catch(e){i={error:e}}finally{try{a||t||!(n=c.return)||(yield n.call(c))}finally{if(i)throw i.error}}}))}setProcessor(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const i=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});var n,r,s,o,a,c;return vt(this,void 0,void 0,(function*(){if(yield i.setProcessor.call(this,e,t),null===(a=this.processor)||void 0===a?void 0:a.processedTrack)try{for(var d,u=!0,l=yt(this.simulcastCodecs.values());d=yield l.next(),!(n=d.done);u=!0){o=d.value,u=!1;const e=o;yield null===(c=e.sender)||void 0===c?void 0:c.replaceTrack(this.processor.processedTrack)}}catch(e){r={error:e}}finally{try{u||n||!(s=l.return)||(yield s.call(l))}finally{if(r)throw r.error}}}))}addSimulcastTrack(e,t){if(this.simulcastCodecs.has(e))throw new Error("".concat(e," already added"));const i={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,i),i}setSimulcastTrackSender(e,t){const i=this.simulcastCodecs.get(e);i&&(i.sender=t,setTimeout((()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)}),5e3))}setPublishingCodecs(e){var t,i,n,r,s,o,c;return vt(this,void 0,void 0,(function*(){if(a.debug("setting publishing codecs",{codecs:e,currentCodec:this.codec}),!this.codec&&e.length>0)return yield this.setPublishingLayers(e[0].qualities),[];this.subscribedCodecs=e;const d=[];try{for(t=!0,i=yt(e);n=yield i.next(),!(r=n.done);t=!0){c=n.value,t=!1;const e=c;if(this.codec&&this.codec!==e.codec){const t=this.simulcastCodecs.get(e.codec);if(a.debug("try setPublishingCodec for ".concat(e.codec),t),t&&t.sender)t.encodings&&(a.debug("try setPublishingLayersForSender ".concat(e.codec)),yield lo(t.sender,t.encodings,e.qualities,this.senderLock));else for(const t of e.qualities)if(t.enabled){d.push(e.codec);break}}else yield this.setPublishingLayers(e.qualities)}}catch(e){s={error:e}}finally{try{t||r||!(o=i.return)||(yield o.call(i))}finally{if(s)throw s.error}}return d}))}setPublishingLayers(e){return vt(this,void 0,void 0,(function*(){a.debug("setting publishing layers",e),this.sender&&this.encodings&&(yield lo(this.sender,this.encodings,e,this.senderLock))}))}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return vt(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),wr()&&this.isInBackground&&this.source===rr.Source.Camera&&(this._mediaStreamTrack.enabled=!1)}))}}function lo(e,t,i,n){return vt(this,void 0,void 0,(function*(){const r=yield n.lock();a.debug("setPublishingLayersForSender",{sender:e,qualities:i,senderEncodings:t});try{const n=e.getParameters(),{encodings:r}=n;if(!r)return;if(r.length!==t.length)return void a.warn("cannot set publishing layers, encodings mismatch");let s=!1;!1&&r[0].scalabilityMode||r.forEach(((e,n)=>{var r;let o=null!==(r=e.rid)&&void 0!==r?r:"";""===o&&(o="q");const c=ho(o),d=i.find((e=>e.quality===c));d&&e.active!==d.enabled&&(s=!0,e.active=d.enabled,a.debug("setting layer ".concat(d.quality," to ").concat(e.active?"enabled":"disabled")),Tr()&&(d.enabled?(e.scaleResolutionDownBy=t[n].scaleResolutionDownBy,e.maxBitrate=t[n].maxBitrate,e.maxFrameRate=t[n].maxFrameRate):(e.scaleResolutionDownBy=4,e.maxBitrate=10,e.maxFrameRate=2)))})),s&&(n.encodings=r,a.debug("setting encodings",n.encodings),yield e.setParameters(n))}finally{r()}}))}function ho(t){switch(t){case"f":default:return e.VideoQuality.HIGH;case"h":return e.VideoQuality.MEDIUM;case"q":return e.VideoQuality.LOW}}function po(t,i,n,r){if(!n)return[new et({quality:e.VideoQuality.HIGH,width:t,height:i,bitrate:0,ssrc:0})];if(r){const r=n[0].scalabilityMode,s=new co(r),o=[];for(let r=0;r<s.spatial;r+=1)o.push(new et({quality:e.VideoQuality.HIGH-r,width:Math.ceil(t/Math.pow(2,r)),height:Math.ceil(i/Math.pow(2,r)),bitrate:n[0].maxBitrate?Math.ceil(n[0].maxBitrate/Math.pow(3,r)):0,ssrc:0}));return o}return n.map((e=>{var n,r,s;const o=null!==(n=e.scaleResolutionDownBy)&&void 0!==n?n:1;let a=ho(null!==(r=e.rid)&&void 0!==r?r:"");return new et({quality:a,width:Math.ceil(t/o),height:Math.ceil(i/o),bitrate:null!==(s=e.maxBitrate)&&void 0!==s?s:0,ssrc:0})}))}class mo extends rr{constructor(e,t,i,n){super(e,i),this.sid=t,this.receiver=n}setMuted(t){this.isMuted!==t&&(this.isMuted=t,this._mediaStreamTrack.enabled=!t,this.emit(t?e.TrackEvent.Muted:e.TrackEvent.Unmuted,this))}setMediaStream(t){this.mediaStream=t,t.onremovetrack=()=>{this.receiver=void 0,this._currentBitrate=0,this.emit(e.TrackEvent.Ended,this)}}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}startMonitor(){this.monitorInterval||(this.monitorInterval=setInterval((()=>this.monitorReceiver()),Hs))}}class fo extends mo{constructor(e,t,i,n,r){super(e,t,rr.Kind.Audio,i),this.monitorReceiver=()=>vt(this,void 0,void 0,(function*(){if(!this.receiver)return void(this._currentBitrate=0);const e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=Gs(e,this.prevStats)),this.prevStats=e})),this.audioContext=n,this.webAudioPluginNodes=[],r&&(this.sinkId=r.deviceId)}setVolume(e){var t;for(const i of this.attachedElements)this.audioContext?null===(t=this.gainNode)||void 0===t||t.gain.setTargetAtTime(e,0,.1):i.volume=e;Cr()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(Cr())return 1;let e=0;return this.attachedElements.forEach((t=>{t.volume>e&&(e=t.volume)})),e}setSinkId(e){return vt(this,void 0,void 0,(function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map((t=>{if(kr(t))return t.setSinkId(e)})))}))}attach(e){const t=0===this.attachedElements.length;return e?super.attach(e):e=super.attach(),this.elementVolume&&(e.volume=this.elementVolume),this.sinkId&&kr(e)&&e.setSinkId(this.sinkId),this.audioContext&&t&&(a.debug("using audio context mapping"),this.connectWebAudio(this.audioContext,e),e.volume=0,e.muted=!0),e}detach(e){let t;return e?(t=super.detach(e),this.audioContext&&(this.attachedElements.length>0?this.connectWebAudio(this.audioContext,this.attachedElements[0]):this.disconnectWebAudio())):(t=super.detach(),this.disconnectWebAudio()),t}setAudioContext(e){this.audioContext=e,e&&this.attachedElements.length>0?this.connectWebAudio(e,this.attachedElements[0]):e||this.disconnectWebAudio()}setWebAudioPlugins(e){this.webAudioPluginNodes=e,this.attachedElements.length>0&&this.audioContext&&this.connectWebAudio(this.audioContext,this.attachedElements[0])}connectWebAudio(t,i){this.disconnectWebAudio(),this.sourceNode=t.createMediaStreamSource(i.srcObject);let n=this.sourceNode;this.webAudioPluginNodes.forEach((e=>{n.connect(e),n=e})),this.gainNode=t.createGain(),n.connect(this.gainNode),this.gainNode.connect(t.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),"running"!==t.state&&t.resume().then((()=>{"running"!==t.state&&this.emit(e.TrackEvent.AudioPlaybackFailed,new Error("Audio Context couldn't be started automatically"))})).catch((t=>{this.emit(e.TrackEvent.AudioPlaybackFailed,t)}))}disconnectWebAudio(){var e,t;null===(e=this.gainNode)||void 0===e||e.disconnect(),null===(t=this.sourceNode)||void 0===t||t.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return vt(this,void 0,void 0,(function*(){if(!this.receiver||!this.receiver.getStats)return;let e;return(yield this.receiver.getStats()).forEach((t=>{"inbound-rtp"===t.type&&(e={type:"audio",timestamp:t.timestamp,jitter:t.jitter,bytesReceived:t.bytesReceived,concealedSamples:t.concealedSamples,concealmentEvents:t.concealmentEvents,silentConcealedSamples:t.silentConcealedSamples,silentConcealmentEvents:t.silentConcealmentEvents,totalAudioEnergy:t.totalAudioEnergy,totalSamplesDuration:t.totalSamplesDuration})})),e}))}}class vo extends mo{constructor(e,t,i,n){super(e,t,rr.Kind.Video,i),this.elementInfos=[],this.monitorReceiver=()=>vt(this,void 0,void 0,(function*(){if(!this.receiver)return void(this._currentBitrate=0);const e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=Gs(e,this.prevStats)),this.prevStats=e})),this.debouncedHandleResize=us((()=>{this.updateDimensions()}),100),this.adaptiveStreamSettings=n}get isAdaptiveStream(){return void 0!==this.adaptiveStreamSettings}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(e){super.setMuted(e),this.attachedElements.forEach((t=>{e?or(this._mediaStreamTrack,t):sr(this._mediaStreamTrack,t)}))}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&void 0===this.elementInfos.find((t=>t.element===e))){const t=new go(e);this.observeElementInfo(t)}return e}observeElementInfo(e){this.adaptiveStreamSettings&&void 0===this.elementInfos.find((t=>t===e))?(e.handleResize=()=>{this.debouncedHandleResize()},e.handleVisibilityChanged=()=>{this.updateVisibility()},this.elementInfos.push(e),e.observe(),this.debouncedHandleResize(),this.updateVisibility()):a.warn("visibility resize observer not triggered")}stopObservingElementInfo(e){if(!this.isAdaptiveStream)return void a.warn("stopObservingElementInfo ignored");const t=this.elementInfos.filter((t=>t===e));for(const e of t)e.stopObserving();this.elementInfos=this.elementInfos.filter((t=>t!==e)),this.updateVisibility(),this.debouncedHandleResize()}detach(e){let t=[];if(e)return this.stopObservingElement(e),super.detach(e);t=super.detach();for(const e of t)this.stopObservingElement(e);return t}getDecoderImplementation(){var e;return null===(e=this.prevStats)||void 0===e?void 0:e.decoderImplementation}getReceiverStats(){return vt(this,void 0,void 0,(function*(){if(!this.receiver||!this.receiver.getStats)return;let e;return(yield this.receiver.getStats()).forEach((t=>{"inbound-rtp"===t.type&&(e={type:"video",framesDecoded:t.framesDecoded,framesDropped:t.framesDropped,framesReceived:t.framesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,frameWidth:t.frameWidth,frameHeight:t.frameHeight,pliCount:t.pliCount,firCount:t.firCount,nackCount:t.nackCount,jitter:t.jitter,timestamp:t.timestamp,bytesReceived:t.bytesReceived,decoderImplementation:t.decoderImplementation})})),e}))}stopObservingElement(e){const t=this.elementInfos.filter((t=>t.element===e));for(const e of t)this.stopObservingElementInfo(e)}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return vt(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()}))}updateVisibility(){var t,i;const n=this.elementInfos.reduce(((e,t)=>Math.max(e,t.visibilityChangedAt||0)),0),r=!(null!==(i=null===(t=this.adaptiveStreamSettings)||void 0===t?void 0:t.pauseVideoInBackground)&&void 0!==i&&!i)&&this.isInBackground,s=this.elementInfos.some((e=>e.pictureInPicture)),o=this.elementInfos.some((e=>e.visible))&&!r||s;this.lastVisible!==o&&(!o&&Date.now()-n<100?Un.setTimeout((()=>{this.updateVisibility()}),100):(this.lastVisible=o,this.emit(e.TrackEvent.VisibilityChanged,o,this)))}updateDimensions(){var t,i;let n=0,r=0;const s=this.getPixelDensity();for(const e of this.elementInfos){const t=e.width()*s,i=e.height()*s;t+i>n+r&&(n=t,r=i)}(null===(t=this.lastDimensions)||void 0===t?void 0:t.width)===n&&(null===(i=this.lastDimensions)||void 0===i?void 0:i.height)===r||(this.lastDimensions={width:n,height:r},this.emit(e.TrackEvent.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){var e;const t=null===(e=this.adaptiveStreamSettings)||void 0===e?void 0:e.pixelDensity;if("screen"===t)return Dr();if(!t){return Dr()>2?2:1}return t}}class go{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=e=>{var t;const{target:i,isIntersecting:n}=e;i===this.element&&(this.isIntersecting=n,this.visibilityChangedAt=Date.now(),null===(t=this.handleVisibilityChanged)||void 0===t||t.call(this))},this.onEnterPiP=()=>{var e;this.isPiP=!0,null===(e=this.handleVisibilityChanged)||void 0===e||e.call(this)},this.onLeavePiP=()=>{var e;this.isPiP=!1,null===(e=this.handleVisibilityChanged)||void 0===e||e.call(this)},this.element=e,this.isIntersecting=null!=t?t:yo(e),this.isPiP=Er()&&document.pictureInPictureElement===e,this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){this.isIntersecting=yo(this.element),this.isPiP=document.pictureInPictureElement===this.element,this.element.handleResize=()=>{var e;null===(e=this.handleResize)||void 0===e||e.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,xr().observe(this.element),Mr().observe(this.element),this.element.addEventListener("enterpictureinpicture",this.onEnterPiP),this.element.addEventListener("leavepictureinpicture",this.onLeavePiP)}stopObserving(){var e,t;null===(e=xr())||void 0===e||e.unobserve(this.element),null===(t=Mr())||void 0===t||t.unobserve(this.element),this.element.removeEventListener("enterpictureinpicture",this.onEnterPiP),this.element.removeEventListener("leavepictureinpicture",this.onLeavePiP)}}function yo(e){let t=e.offsetTop,i=e.offsetLeft;const n=e.offsetWidth,r=e.offsetHeight,{hidden:s}=e,{opacity:o,display:a}=getComputedStyle(e);for(;e.offsetParent;)t+=(e=e.offsetParent).offsetTop,i+=e.offsetLeft;return t<window.pageYOffset+window.innerHeight&&i<window.pageXOffset+window.innerWidth&&t+r>window.pageYOffset&&i+n>window.pageXOffset&&!s&&(""===o||parseFloat(o)>0)&&"none"!==a}class ko extends Ot.EventEmitter{constructor(t,i,n){super(),this.metadataMuted=!1,this.encryption=Ge.NONE,this.handleMuted=()=>{this.emit(e.TrackEvent.Muted)},this.handleUnmuted=()=>{this.emit(e.TrackEvent.Unmuted)},this.setMaxListeners(100),this.kind=t,this.trackSid=i,this.trackName=n,this.source=rr.Source.Unknown}setTrack(t){this.track&&(this.track.off(e.TrackEvent.Muted,this.handleMuted),this.track.off(e.TrackEvent.Unmuted,this.handleUnmuted)),this.track=t,t&&(t.on(e.TrackEvent.Muted,this.handleMuted),t.on(e.TrackEvent.Unmuted,this.handleUnmuted))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return void 0!==this.track}get isEncrypted(){return this.encryption!==Ge.NONE}get audioTrack(){if(this.track instanceof zs||this.track instanceof fo)return this.track}get videoTrack(){if(this.track instanceof uo||this.track instanceof vo)return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=rr.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===rr.Kind.Video&&e.width>0&&(this.dimensions={width:e.width,height:e.height},this.simulcasted=e.simulcast),this.encryption=e.encryption,this.trackInfo=e,a.debug("update publication info",{info:e})}}!function(e){var t,i;(t=e.SubscriptionStatus||(e.SubscriptionStatus={})).Desired="desired",t.Subscribed="subscribed",t.Unsubscribed="unsubscribed",(i=e.PermissionStatus||(e.PermissionStatus={})).Allowed="allowed",i.NotAllowed="not_allowed"}(ko||(ko={}));class bo extends ko{get isUpstreamPaused(){var e;return null===(e=this.track)||void 0===e?void 0:e.isUpstreamPaused}constructor(t,i,n){super(t,i.sid,i.name),this.track=void 0,this.handleTrackEnded=()=>{this.emit(e.TrackEvent.Ended)},this.updateInfo(i),this.setTrack(n)}setTrack(t){this.track&&this.track.off(e.TrackEvent.Ended,this.handleTrackEnded),super.setTrack(t),t&&t.on(e.TrackEvent.Ended,this.handleTrackEnded)}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}mute(){var e;return vt(this,void 0,void 0,(function*(){return null===(e=this.track)||void 0===e?void 0:e.mute()}))}unmute(){var e;return vt(this,void 0,void 0,(function*(){return null===(e=this.track)||void 0===e?void 0:e.unmute()}))}pauseUpstream(){var e;return vt(this,void 0,void 0,(function*(){yield null===(e=this.track)||void 0===e?void 0:e.pauseUpstream()}))}resumeUpstream(){var e;return vt(this,void 0,void 0,(function*(){yield null===(e=this.track)||void 0===e?void 0:e.resumeUpstream()}))}}e.ConnectionQuality=void 0,function(e){e.Excellent="excellent",e.Good="good",e.Poor="poor",e.Unknown="unknown"}(e.ConnectionQuality||(e.ConnectionQuality={}));class To extends Ot.EventEmitter{get isEncrypted(){return this.tracks.size>0&&Array.from(this.tracks.values()).every((e=>e.isEncrypted))}constructor(t,i,n,r){super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=e.ConnectionQuality.Unknown,this.setMaxListeners(100),this.sid=t,this.identity=i,this.name=n,this.metadata=r,this.audioTracks=new Map,this.videoTracks=new Map,this.tracks=new Map}getTracks(){return Array.from(this.tracks.values())}getTrack(e){for(const[,t]of this.tracks)if(t.source===e)return t}getTrackByName(e){for(const[,t]of this.tracks)if(t.trackName===e)return t}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){var e;const t=this.getTrack(rr.Source.Camera);return!(null===(e=null==t?void 0:t.isMuted)||void 0===e||e)}get isMicrophoneEnabled(){var e;const t=this.getTrack(rr.Source.Microphone);return!(null===(e=null==t?void 0:t.isMuted)||void 0===e||e)}get isScreenShareEnabled(){return!!this.getTrack(rr.Source.ScreenShare)}get isLocal(){return!1}get joinedAt(){return this.participantInfo?new Date(1e3*Number.parseInt(this.participantInfo.joinedAt.toString())):new Date}updateInfo(e){return!(this.participantInfo&&this.participantInfo.sid===e.sid&&this.participantInfo.version>e.version)&&(this.identity=e.identity,this.sid=e.sid,this.setName(e.name),this.setMetadata(e.metadata),e.permission&&this.setPermissions(e.permission),this.participantInfo=e,a.trace("update participant info",{info:e}),!0)}setMetadata(t){const i=this.metadata!==t,n=this.metadata;this.metadata=t,i&&this.emit(e.ParticipantEvent.ParticipantMetadataChanged,n)}setName(t){const i=this.name!==t;this.name=t,i&&this.emit(e.ParticipantEvent.ParticipantNameChanged,t)}setPermissions(t){var i,n,r,s,o;const a=this.permissions,c=t.canPublish!==(null===(i=this.permissions)||void 0===i?void 0:i.canPublish)||t.canSubscribe!==(null===(n=this.permissions)||void 0===n?void 0:n.canSubscribe)||t.canPublishData!==(null===(r=this.permissions)||void 0===r?void 0:r.canPublishData)||t.hidden!==(null===(s=this.permissions)||void 0===s?void 0:s.hidden)||t.recorder!==(null===(o=this.permissions)||void 0===o?void 0:o.recorder)||t.canPublishSources.length!==this.permissions.canPublishSources.length||t.canPublishSources.some(((e,t)=>{var i;return e!==(null===(i=this.permissions)||void 0===i?void 0:i.canPublishSources[t])}));return this.permissions=t,c&&this.emit(e.ParticipantEvent.ParticipantPermissionsChanged,a),c}setIsSpeaking(t){t!==this.isSpeaking&&(this.isSpeaking=t,t&&(this.lastSpokeAt=new Date),this.emit(e.ParticipantEvent.IsSpeakingChanged,t))}setConnectionQuality(t){const i=this._connectionQuality;this._connectionQuality=function(t){switch(t){case Me.EXCELLENT:return e.ConnectionQuality.Excellent;case Me.GOOD:return e.ConnectionQuality.Good;case Me.POOR:return e.ConnectionQuality.Poor;default:return e.ConnectionQuality.Unknown}}(t),i!==this._connectionQuality&&this.emit(e.ParticipantEvent.ConnectionQualityChanged,this._connectionQuality)}setAudioContext(e){this.audioContext=e,this.audioTracks.forEach((t=>(t.track instanceof fo||t.track instanceof zs)&&t.track.setAudioContext(e)))}addTrackPublication(t){t.on(e.TrackEvent.Muted,(()=>{this.emit(e.ParticipantEvent.TrackMuted,t)})),t.on(e.TrackEvent.Unmuted,(()=>{this.emit(e.ParticipantEvent.TrackUnmuted,t)}));const i=t;switch(i.track&&(i.track.sid=t.trackSid),this.tracks.set(t.trackSid,t),t.kind){case rr.Kind.Audio:this.audioTracks.set(t.trackSid,t);break;case rr.Kind.Video:this.videoTracks.set(t.trackSid,t)}}}class So extends ko{constructor(t,i,n){super(t,i.sid,i.name),this.track=void 0,this.allowed=!0,this.disabled=!1,this.currentVideoQuality=e.VideoQuality.HIGH,this.handleEnded=t=>{this.setTrack(void 0),this.emit(e.TrackEvent.Ended,t)},this.handleVisibilityChange=e=>{a.debug("adaptivestream video visibility ".concat(this.trackSid,", visible=").concat(e),{trackSid:this.trackSid}),this.disabled=!e,this.emitTrackUpdate()},this.handleVideoDimensionsChange=e=>{a.debug("adaptivestream video dimensions ".concat(e.width,"x").concat(e.height),{trackSid:this.trackSid}),this.videoDimensions=e,this.emitTrackUpdate()},this.subscribed=n,this.updateInfo(i)}setSubscribed(t){const i=this.subscriptionStatus,n=this.permissionStatus;this.subscribed=t,t&&(this.allowed=!0);const r=new rn({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new st({participantSid:"",trackSids:[this.trackSid]})]});this.emit(e.TrackEvent.UpdateSubscription,r),this.emitSubscriptionUpdateIfChanged(i),this.emitPermissionUpdateIfChanged(n)}get subscriptionStatus(){return!1===this.subscribed?ko.SubscriptionStatus.Unsubscribed:super.isSubscribed?ko.SubscriptionStatus.Subscribed:ko.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?ko.PermissionStatus.Allowed:ko.PermissionStatus.NotAllowed}get isSubscribed(){return!1!==this.subscribed&&super.isSubscribed}get isDesired(){return!1!==this.subscribed}get isEnabled(){return!this.disabled}setEnabled(e){this.isManualOperationAllowed()&&this.disabled!==!e&&(this.disabled=!e,this.emitTrackUpdate())}setVideoQuality(e){this.isManualOperationAllowed()&&this.currentVideoQuality!==e&&(this.currentVideoQuality=e,this.videoDimensions=void 0,this.emitTrackUpdate())}setVideoDimensions(e){var t,i;this.isManualOperationAllowed()&&((null===(t=this.videoDimensions)||void 0===t?void 0:t.width)===e.width&&(null===(i=this.videoDimensions)||void 0===i?void 0:i.height)===e.height||(this.track instanceof vo&&(this.videoDimensions=e),this.currentVideoQuality=void 0,this.emitTrackUpdate()))}setVideoFPS(e){this.isManualOperationAllowed()&&this.track instanceof vo&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){return this.currentVideoQuality}setTrack(t){const i=this.subscriptionStatus,n=this.permissionStatus,r=this.track;r!==t&&(r&&(r.off(e.TrackEvent.VideoDimensionsChanged,this.handleVideoDimensionsChange),r.off(e.TrackEvent.VisibilityChanged,this.handleVisibilityChange),r.off(e.TrackEvent.Ended,this.handleEnded),r.detach(),r.stopMonitor(),this.emit(e.TrackEvent.Unsubscribed,r)),super.setTrack(t),t&&(t.sid=this.trackSid,t.on(e.TrackEvent.VideoDimensionsChanged,this.handleVideoDimensionsChange),t.on(e.TrackEvent.VisibilityChanged,this.handleVisibilityChange),t.on(e.TrackEvent.Ended,this.handleEnded),this.emit(e.TrackEvent.Subscribed,t)),this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(i))}setAllowed(e){const t=this.subscriptionStatus,i=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(t){this.emit(e.TrackEvent.SubscriptionFailed,t)}updateInfo(t){super.updateInfo(t);const i=this.metadataMuted;this.metadataMuted=t.muted,this.track?this.track.setMuted(t.muted):i!==t.muted&&this.emit(t.muted?e.TrackEvent.Muted:e.TrackEvent.Unmuted)}emitSubscriptionUpdateIfChanged(t){const i=this.subscriptionStatus;t!==i&&this.emit(e.TrackEvent.SubscriptionStatusChanged,i,t)}emitPermissionUpdateIfChanged(t){this.permissionStatus!==t&&this.emit(e.TrackEvent.SubscriptionPermissionChanged,this.permissionStatus,t)}isManualOperationAllowed(){return this.kind===rr.Kind.Video&&this.isAdaptiveStream?(a.warn("adaptive stream is enabled, cannot change video track settings",{trackSid:this.trackSid}),!1):!!this.isDesired||(a.warn("cannot update track settings when not subscribed",{trackSid:this.trackSid}),!1)}get isAdaptiveStream(){return this.track instanceof vo&&this.track.isAdaptiveStream}emitTrackUpdate(){const t=new sn({trackSids:[this.trackSid],disabled:this.disabled,fps:this.fps});this.videoDimensions?(t.width=Math.ceil(this.videoDimensions.width),t.height=Math.ceil(this.videoDimensions.height)):void 0!==this.currentVideoQuality?t.quality=this.currentVideoQuality:t.quality=e.VideoQuality.HIGH,this.emit(e.TrackEvent.UpdateSettings,t)}}class wo extends To{static fromParticipantInfo(e,t){return new wo(e,t.sid,t.identity,t.name,t.metadata)}constructor(e,t,i,n,r){super(t,i||"",n,r),this.signalClient=e,this.tracks=new Map,this.audioTracks=new Map,this.videoTracks=new Map,this.volumeMap=new Map}addTrackPublication(t){super.addTrackPublication(t),t.on(e.TrackEvent.UpdateSettings,(e=>{a.debug("send update settings",e),this.signalClient.sendUpdateTrackSettings(e)})),t.on(e.TrackEvent.UpdateSubscription,(e=>{e.participantTracks.forEach((e=>{e.participantSid=this.sid})),this.signalClient.sendUpdateSubscription(e)})),t.on(e.TrackEvent.SubscriptionPermissionChanged,(i=>{this.emit(e.ParticipantEvent.TrackSubscriptionPermissionChanged,t,i)})),t.on(e.TrackEvent.SubscriptionStatusChanged,(i=>{this.emit(e.ParticipantEvent.TrackSubscriptionStatusChanged,t,i)})),t.on(e.TrackEvent.Subscribed,(i=>{this.emit(e.ParticipantEvent.TrackSubscribed,i,t)})),t.on(e.TrackEvent.Unsubscribed,(i=>{this.emit(e.ParticipantEvent.TrackUnsubscribed,i,t)})),t.on(e.TrackEvent.SubscriptionFailed,(i=>{this.emit(e.ParticipantEvent.TrackSubscriptionFailed,t.trackSid,i)}))}getTrack(e){const t=super.getTrack(e);if(t)return t}getTrackByName(e){const t=super.getTrackByName(e);if(t)return t}setVolume(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:rr.Source.Microphone;this.volumeMap.set(t,e);const i=this.getTrack(t);i&&i.track&&i.track.setVolume(e)}getVolume(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rr.Source.Microphone;const t=this.getTrack(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(t,i,n,r,s,o){let c=this.getTrackPublication(i);if(c||i.startsWith("TR")||this.tracks.forEach((e=>{c||t.kind!==e.kind.toString()||(c=e)})),!c)return 0===o?(a.error("could not find published track",{participant:this.sid,trackSid:i}),void this.emit(e.ParticipantEvent.TrackSubscriptionFailed,i)):(void 0===o&&(o=20),void setTimeout((()=>{this.addSubscribedMediaTrack(t,i,n,r,s,o-1)}),150));if("ended"===t.readyState)return a.error("unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()",{participant:this.sid,trackSid:i}),void this.emit(e.ParticipantEvent.TrackSubscriptionFailed,i);let d;return d="video"===t.kind?new vo(t,i,r,s):new fo(t,i,r,this.audioContext,this.audioOutput),d.source=c.source,d.isMuted=c.isMuted,d.setMediaStream(n),d.start(),c.setTrack(d),this.volumeMap.has(c.source)&&d instanceof fo&&d.setVolume(this.volumeMap.get(c.source)),c}get hasMetadata(){return!!this.participantInfo}getTrackPublication(e){return this.tracks.get(e)}updateInfo(t){if(!super.updateInfo(t))return!1;const i=new Map,n=new Map;return t.tracks.forEach((e=>{var r;let s=this.getTrackPublication(e.sid);if(s)s.updateInfo(e);else{const i=rr.kindFromProto(e.type);if(!i)return;s=new So(i,e,null===(r=this.signalClient.connectOptions)||void 0===r?void 0:r.autoSubscribe),s.updateInfo(e),n.set(e.sid,s);const o=Array.from(this.tracks.values()).find((e=>e.source===(null==s?void 0:s.source)));o&&s.source!==rr.Source.Unknown&&a.debug("received a second track publication for ".concat(this.identity," with the same source: ").concat(s.source),{oldTrack:o,newTrack:s,participant:this,participantInfo:t}),this.addTrackPublication(s)}i.set(e.sid,s)})),this.tracks.forEach((e=>{i.has(e.trackSid)||(a.trace("detected removed track on remote participant, unpublishing",{publication:e,participantSid:this.sid}),this.unpublishTrack(e.trackSid,!0))})),n.forEach((t=>{this.emit(e.ParticipantEvent.TrackPublished,t)})),!0}unpublishTrack(t,i){const n=this.tracks.get(t);if(!n)return;const{track:r}=n;switch(r&&(r.stop(),n.setTrack(void 0)),this.tracks.delete(t),n.kind){case rr.Kind.Audio:this.audioTracks.delete(t);break;case rr.Kind.Video:this.videoTracks.delete(t)}i&&this.emit(e.ParticipantEvent.TrackUnpublished,n)}setAudioOutput(e){return vt(this,void 0,void 0,(function*(){this.audioOutput=e;const t=[];this.audioTracks.forEach((i=>{var n;i.track instanceof fo&&t.push(i.track.setSinkId(null!==(n=e.deviceId)&&void 0!==n?n:"default"))})),yield Promise.all(t)}))}emit(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return a.trace("participant event",{participant:this.sid,event:e,args:i}),super.emit(e,...i)}}class Eo extends To{constructor(e,t,i,n){super(e,t),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=Ge.NONE,this.handleReconnecting=()=>{this.reconnectFuture||(this.reconnectFuture=new jr)},this.handleReconnected=()=>{var e,t;null===(t=null===(e=this.reconnectFuture)||void 0===e?void 0:e.resolve)||void 0===t||t.call(e),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleDisconnected=()=>{var e,t;this.reconnectFuture&&(this.reconnectFuture.promise.catch((e=>a.warn(e))),null===(t=null===(e=this.reconnectFuture)||void 0===e?void 0:e.reject)||void 0===t||t.call(e,"Got disconnected during reconnection attempt"),this.reconnectFuture=void 0)},this.updateTrackSubscriptionPermissions=()=>{a.debug("updating track subscription permissions",{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions}),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map((e=>function(e){var t,i,n;if(!e.participantSid&&!e.participantIdentity)throw new Error("Invalid track permission, must provide at least one of participantIdentity and participantSid");return new kn({participantIdentity:null!==(t=e.participantIdentity)&&void 0!==t?t:"",participantSid:null!==(i=e.participantSid)&&void 0!==i?i:"",allTracks:null!==(n=e.allowAll)&&void 0!==n&&n,trackSids:e.allowedTrackSids||[]})}(e))))},this.onTrackUnmuted=e=>{this.onTrackMuted(e,e.isUpstreamPaused)},this.onTrackMuted=(e,t)=>{void 0===t&&(t=!0),e.sid?this.engine.updateMuteStatus(e.sid,t):a.error("could not update mute status for unpublished track",e)},this.onTrackUpstreamPaused=e=>{a.debug("upstream paused"),this.onTrackMuted(e,!0)},this.onTrackUpstreamResumed=e=>{a.debug("upstream resumed"),this.onTrackMuted(e,e.isMuted)},this.handleSubscribedQualityUpdate=e=>vt(this,void 0,void 0,(function*(){var t,i,n,r,s,o;if(!(null===(s=this.roomOptions)||void 0===s?void 0:s.dynacast))return;const c=this.videoTracks.get(e.trackSid);if(c)if(e.subscribedCodecs.length>0){if(!c.videoTrack)return;const s=yield c.videoTrack.setPublishingCodecs(e.subscribedCodecs);try{for(var d,u=!0,l=yt(s);!(t=(d=yield l.next()).done);u=!0){r=d.value,u=!1;const e=r;Gn(e)&&(a.debug("publish ".concat(e," for ").concat(c.videoTrack.sid)),yield this.publishAdditionalCodecForTrack(c.videoTrack,e,c.options))}}catch(e){i={error:e}}finally{try{u||t||!(n=l.return)||(yield n.call(l))}finally{if(i)throw i.error}}}else e.subscribedQualities.length>0&&(yield null===(o=c.videoTrack)||void 0===o?void 0:o.setPublishingLayers(e.subscribedQualities));else a.warn("received subscribed quality update for unknown track",{method:"handleSubscribedQualityUpdate",sid:e.trackSid})})),this.handleLocalTrackUnpublished=e=>{const t=this.tracks.get(e.trackSid);t?this.unpublishTrack(t.track):a.warn("received unpublished event for unknown track",{method:"handleLocalTrackUnpublished",trackSid:e.trackSid})},this.handleTrackEnded=e=>vt(this,void 0,void 0,(function*(){if(e.source===rr.Source.ScreenShare||e.source===rr.Source.ScreenShareAudio)a.debug("unpublishing local track due to TrackEnded",{track:e.sid}),this.unpublishTrack(e);else if(e.isUserProvided)yield e.mute();else if(e instanceof zs||e instanceof uo)try{if(Er())try{const t=yield null===navigator||void 0===navigator?void 0:navigator.permissions.query({name:e.source===rr.Source.Camera?"camera":"microphone"});if(t&&"denied"===t.state)throw a.warn("user has revoked access to ".concat(e.source)),t.onchange=()=>{"denied"!==t.state&&(e.isMuted||e.restartTrack(),t.onchange=null)},new Error("GetUserMedia Permission denied")}catch(e){}e.isMuted||(a.debug("track ended, attempting to use a different device"),yield e.restartTrack())}catch(t){a.warn("could not restart track, muting instead"),yield e.mute()}})),this.audioTracks=new Map,this.videoTracks=new Map,this.tracks=new Map,this.engine=i,this.roomOptions=n,this.setupEngine(i),this.activeDeviceMap=new Map}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==Ge.NONE}getTrack(e){const t=super.getTrack(e);if(t)return t}getTrackByName(e){const t=super.getTrackByName(e);if(t)return t}setupEngine(t){this.engine=t,this.engine.client.onRemoteMuteChanged=(e,t)=>{const i=this.tracks.get(e);i&&i.track&&(t?i.mute():i.unmute())},this.engine.client.onSubscribedQualityUpdate=this.handleSubscribedQualityUpdate,this.engine.client.onLocalTrackUnpublished=this.handleLocalTrackUnpublished,this.engine.on(e.EngineEvent.Connected,this.handleReconnected).on(e.EngineEvent.Restarted,this.handleReconnected).on(e.EngineEvent.Resumed,this.handleReconnected).on(e.EngineEvent.Restarting,this.handleReconnecting).on(e.EngineEvent.Resuming,this.handleReconnecting).on(e.EngineEvent.Disconnected,this.handleDisconnected)}setMetadata(e){var t;super.setMetadata(e),this.engine.client.sendUpdateLocalMetadata(e,null!==(t=this.name)&&void 0!==t?t:"")}setName(e){var t;super.setName(e),this.engine.client.sendUpdateLocalMetadata(null!==(t=this.metadata)&&void 0!==t?t:"",e)}setCameraEnabled(e,t,i){return this.setTrackEnabled(rr.Source.Camera,e,t,i)}setMicrophoneEnabled(e,t,i){return this.setTrackEnabled(rr.Source.Microphone,e,t,i)}setScreenShareEnabled(e,t,i){return this.setTrackEnabled(rr.Source.ScreenShare,e,t,i)}setPermissions(t){const i=this.permissions,n=super.setPermissions(t);return n&&i&&this.emit(e.ParticipantEvent.ParticipantPermissionsChanged,i),n}setE2EEEnabled(e){return vt(this,void 0,void 0,(function*(){this.encryptionType=e?Ge.GCM:Ge.NONE,yield this.republishAllTracks(void 0,!1)}))}setTrackEnabled(t,i,n,r){var s,o;return vt(this,void 0,void 0,(function*(){a.debug("setTrackEnabled",{source:t,enabled:i});let c=this.getTrack(t);if(i)if(c)yield c.unmute();else{let i;if(this.pendingPublishing.has(t))return void a.info("skipping duplicate published source",{source:t});this.pendingPublishing.add(t);try{switch(t){case rr.Source.Camera:i=yield this.createTracks({video:null===(s=n)||void 0===s||s});break;case rr.Source.Microphone:i=yield this.createTracks({audio:null===(o=n)||void 0===o||o});break;case rr.Source.ScreenShare:i=yield this.createScreenTracks(Object.assign({},n));break;default:throw new An(t)}const e=[];for(const t of i)a.info("publishing track",{localTrack:t}),e.push(this.publishTrack(t,r));const d=yield Promise.all(e);[c]=d}catch(t){throw null==i||i.forEach((e=>{e.stop()})),t instanceof Error&&!(t instanceof An)&&this.emit(e.ParticipantEvent.MediaDevicesError,t),t}finally{this.pendingPublishing.delete(t)}}else if(c&&c.track)if(t===rr.Source.ScreenShare){c=yield this.unpublishTrack(c.track);const e=this.getTrack(rr.Source.ScreenShareAudio);e&&e.track&&this.unpublishTrack(e.track)}else yield c.mute();return c}))}enableCameraAndMicrophone(){return vt(this,void 0,void 0,(function*(){if(!this.pendingPublishing.has(rr.Source.Camera)&&!this.pendingPublishing.has(rr.Source.Microphone)){this.pendingPublishing.add(rr.Source.Camera),this.pendingPublishing.add(rr.Source.Microphone);try{const e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map((e=>this.publishTrack(e))))}finally{this.pendingPublishing.delete(rr.Source.Camera),this.pendingPublishing.delete(rr.Source.Microphone)}}}))}createTracks(e){var t,i;return vt(this,void 0,void 0,(function*(){const n=dr(ar(e,null===(t=this.roomOptions)||void 0===t?void 0:t.audioCaptureDefaults,null===(i=this.roomOptions)||void 0===i?void 0:i.videoCaptureDefaults));let r;try{r=yield navigator.mediaDevices.getUserMedia(n)}catch(e){throw e instanceof Error&&(n.audio&&(this.microphoneError=e),n.video&&(this.cameraError=e)),e}return n.audio&&(this.microphoneError=void 0),n.video&&(this.cameraError=void 0),r.getTracks().map((t=>{const i="audio"===t.kind;let s;i?e.audio:e.video;const o=i?n.audio:n.video;"boolean"!=typeof o&&(s=o);const a=Qs(t,s);return a.kind===rr.Kind.Video?a.source=rr.Source.Camera:a.kind===rr.Kind.Audio&&(a.source=rr.Source.Microphone),a.mediaStream=r,a}))}))}createScreenTracks(e){return vt(this,void 0,void 0,(function*(){if(void 0===e&&(e={}),void 0===e.resolution&&(e.resolution=Zn.h1080fps15.resolution),void 0===navigator.mediaDevices.getDisplayMedia)throw new Nn("getDisplayMedia not supported");const t=lr(e),i=yield navigator.mediaDevices.getDisplayMedia(t),n=i.getVideoTracks();if(0===n.length)throw new An("no video track found");const r=new uo(n[0],void 0,!1);r.source=rr.Source.ScreenShare;const s=[r];if(i.getAudioTracks().length>0){const e=new zs(i.getAudioTracks()[0],void 0,!1,this.audioContext);e.source=rr.Source.ScreenShareAudio,s.push(e)}return s}))}publishTrack(e,t){var i,n,r,s;return vt(this,void 0,void 0,(function*(){let o,c;if(yield null===(i=this.reconnectFuture)||void 0===i?void 0:i.promise,e instanceof ps&&this.pendingPublishPromises.has(e)&&(yield this.pendingPublishPromises.get(e)),e instanceof MediaStreamTrack)o=e.getConstraints();else{let t;switch(o=e.constraints,e.source){case rr.Source.Microphone:t="audioinput";break;case rr.Source.Camera:t="videoinput"}t&&this.activeDeviceMap.has(t)&&(o=Object.assign(Object.assign({},o),{deviceId:this.activeDeviceMap.get(t)}))}if(e instanceof MediaStreamTrack)switch(e.kind){case"audio":e=new zs(e,o,!0,this.audioContext);break;case"video":e=new uo(e,o,!0);break;default:throw new An("unsupported MediaStreamTrack kind ".concat(e.kind))}if(e instanceof zs&&e.setAudioContext(this.audioContext),this.tracks.forEach((t=>{t.track&&t.track===e&&(c=t)})),c)return a.warn("track has already been published, skipping"),c;const d="channelCount"in e.mediaStreamTrack.getSettings()&&2===e.mediaStreamTrack.getSettings().channelCount||2===e.mediaStreamTrack.getConstraints().channelCount,u=null!==(n=null==t?void 0:t.forceStereo)&&void 0!==n?n:d;u&&(t||(t={}),void 0===t.dtx&&a.info("Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work."),void 0===t.red&&a.info("Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work."),null!==(r=t.dtx)&&void 0!==r||(t.dtx=!1),null!==(s=t.red)&&void 0!==s||(t.red=!1));const l=Object.assign(Object.assign({},this.roomOptions.publishDefaults),t);Sr()&&this.roomOptions.e2ee&&(a.info("End-to-end encryption is set up, simulcast publishing will be disabled on Safari"),l.simulcast=!1),l.source&&(e.source=l.source);const h=this.publish(e,l,u);this.pendingPublishPromises.set(e,h);try{return yield h}catch(e){throw e}finally{this.pendingPublishPromises.delete(e)}}))}publish(t,i,n){var r,s,o,c,d,u,l,h,p,m,f,v,g,y;return vt(this,void 0,void 0,(function*(){const k=Array.from(this.tracks.values()).find((e=>t instanceof ps&&e.source===t.source));if(k&&t.source!==rr.Source.Unknown)try{throw Error("publishing a second track with the same source: ".concat(t.source))}catch(e){e instanceof Error&&a.warn(e.message,{oldTrack:k,newTrack:t,trace:e.stack})}i.stopMicTrackOnMute&&t instanceof zs&&(t.stopOnMute=!0),t.source===rr.Source.ScreenShare&&Tr()&&(i.simulcast=!1),"av1"!==i.videoCodec||vr()||(i.videoCodec=void 0),"vp9"!==i.videoCodec||gr()||(i.videoCodec=void 0),t.on(e.TrackEvent.Muted,this.onTrackMuted),t.on(e.TrackEvent.Unmuted,this.onTrackUnmuted),t.on(e.TrackEvent.Ended,this.handleTrackEnded),t.on(e.TrackEvent.UpstreamPaused,this.onTrackUpstreamPaused),t.on(e.TrackEvent.UpstreamResumed,this.onTrackUpstreamResumed);const b=new zi({cid:t.mediaStreamTrack.id,name:i.name,type:rr.kindToProto(t.kind),muted:t.isMuted,source:rr.sourceToProto(t.source),disableDtx:!(null===(r=i.dtx)||void 0===r||r),encryption:this.encryptionType,stereo:n,disableRed:!(null===(s=i.red)||void 0===s||s)});let T,S;if(t.kind===rr.Kind.Video){let e={width:0,height:0};try{e=yield t.waitForDimensions()}catch(t){const i=null!==(c=null===(o=this.roomOptions.videoCaptureDefaults)||void 0===o?void 0:o.resolution)&&void 0!==c?c:Yn.h720.resolution;e={width:i.width,height:i.height},a.error("could not determine track dimensions, using defaults",e)}if(b.width=e.width,b.height=e.height,t instanceof uo)if(yr(i.videoCodec)&&(i.scalabilityMode=null!==(d=i.scalabilityMode)&&void 0!==d?d:"L3T3_KEY"),i.videoCodec&&i.backupCodec&&i.videoCodec!==i.backupCodec.codec){this.roomOptions.dynacast||(this.roomOptions.dynacast=!0);const e=Object.assign({},i);e.simulcast=!0,S=ro(t,i.backupCodec.codec,e),b.simulcastCodecs=[new Gi({codec:i.videoCodec,cid:t.mediaStreamTrack.id,enableSimulcastLayers:!0}),new Gi({codec:i.backupCodec.codec,cid:"",enableSimulcastLayers:!0})]}else i.videoCodec&&(b.simulcastCodecs=[new Gi({codec:i.videoCodec,cid:t.mediaStreamTrack.id,enableSimulcastLayers:null!==(u=i.simulcast)&&void 0!==u&&u})]);T=no(t.source===rr.Source.ScreenShare,e.width,e.height,i),b.layers=po(b.width,b.height,T,yr(i.videoCodec))}else t.kind===rr.Kind.Audio&&(T=[{maxBitrate:null!==(h=null===(l=i.audioPreset)||void 0===l?void 0:l.maxBitrate)&&void 0!==h?h:i.audioBitrate,priority:null!==(m=null===(p=i.audioPreset)||void 0===p?void 0:p.priority)&&void 0!==m?m:"high",networkPriority:null!==(v=null===(f=i.audioPreset)||void 0===f?void 0:f.priority)&&void 0!==v?v:"high"}]);if(!this.engine||this.engine.isClosed)throw new On("cannot publish track when not connected");const w=yield this.engine.addTrack(b);let E=!1,C=!1;if(w.codecs.forEach((e=>{zn(e.mimeType,i.videoCodec)?E=!0:i.backupCodec&&zn(e.mimeType,i.backupCodec.codec)&&(C=!0)})),b.simulcastCodecs.length>0){if(!E&&!C)throw Error("cannot publish track, codec not supported by server");if(!E&&i.backupCodec){const e=i.backupCodec;i=Object.assign({},i),a.debug("primary codec ".concat(i.videoCodec," not supported, fallback to ").concat(e.codec)),i.videoCodec=e.codec,i.videoEncoding=e.encoding,T=S}}const P=new bo(t.kind,w,t);if(P.options=i,t.sid=w.sid,!this.engine.publisher)throw new On("publisher is closed");if(a.debug("publishing ".concat(t.kind," with encodings"),{encodings:T,trackInfo:w}),t.sender=yield this.engine.createSender(t,i,T),T)if(Tr()&&t.kind===rr.Kind.Audio){let e;for(const i of this.engine.publisher.pc.getTransceivers())if(i.sender===t.sender){e=i;break}e&&this.engine.publisher.setTrackCodecBitrate({transceiver:e,codec:"opus",maxbr:(null===(g=T[0])||void 0===g?void 0:g.maxBitrate)?T[0].maxBitrate/1e3:0})}else t.codec&&yr(t.codec)&&(null===(y=T[0])||void 0===y?void 0:y.maxBitrate)&&this.engine.publisher.setTrackCodecBitrate({cid:b.cid,codec:t.codec,maxbr:T[0].maxBitrate/1e3});return yield this.engine.negotiate(),t instanceof uo?t.startMonitor(this.engine.client):t instanceof zs&&t.startMonitor(),this.addTrackPublication(P),this.emit(e.ParticipantEvent.LocalTrackPublished,P),P}))}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,i){var n;return vt(this,void 0,void 0,(function*(){let r;if(this.tracks.forEach((t=>{t.track&&t.track===e&&(r=t)})),!r)throw new An("track is not published");if(!(e instanceof uo))throw new An("track is not a video track");const s=Object.assign(Object.assign({},null===(n=this.roomOptions)||void 0===n?void 0:n.publishDefaults),i),o=ro(e,t,s);if(!o)return void a.info("backup codec has been disabled, ignoring request to add additional codec for track");const c=e.addSimulcastTrack(t,o),d=new zi({cid:c.mediaStreamTrack.id,type:rr.kindToProto(e.kind),muted:e.isMuted,source:rr.sourceToProto(e.source),sid:e.sid,simulcastCodecs:[{codec:s.videoCodec,cid:c.mediaStreamTrack.id,enableSimulcastLayers:s.simulcast}]});if(d.layers=po(d.width,d.height,o),!this.engine||this.engine.isClosed)throw new On("cannot publish track when not connected");const u=yield this.engine.addTrack(d);yield this.engine.createSimulcastSender(e,c,s,o),yield this.engine.negotiate(),a.debug("published ".concat(t," for track ").concat(e.sid),{encodings:o,trackInfo:u})}))}unpublishTrack(t,i){var n,r;return vt(this,void 0,void 0,(function*(){const s=this.getPublicationForTrack(t);if(a.debug("unpublishing track",{track:t,method:"unpublishTrack"}),!s||!s.track)return void a.warn("track was not unpublished because no publication was found",{track:t,method:"unpublishTrack"});(t=s.track).off(e.TrackEvent.Muted,this.onTrackMuted),t.off(e.TrackEvent.Unmuted,this.onTrackUnmuted),t.off(e.TrackEvent.Ended,this.handleTrackEnded),t.off(e.TrackEvent.UpstreamPaused,this.onTrackUpstreamPaused),t.off(e.TrackEvent.UpstreamResumed,this.onTrackUpstreamResumed),void 0===i&&(i=null===(r=null===(n=this.roomOptions)||void 0===n?void 0:n.stopLocalTrackOnUnpublish)||void 0===r||r),i&&t.stop();let o=!1;const c=t.sender;if(t.sender=void 0,this.engine.publisher&&"closed"!==this.engine.publisher.pc.connectionState&&c)try{for(const e of this.engine.publisher.pc.getTransceivers())e.sender===c&&(e.direction="inactive",o=!0);if(this.engine.removeTrack(c)&&(o=!0),t instanceof uo){for(const[,e]of t.simulcastCodecs)e.sender&&(this.engine.removeTrack(e.sender)&&(o=!0),e.sender=void 0);t.simulcastCodecs.clear()}}catch(e){a.warn("failed to unpublish track",{error:e,method:"unpublishTrack"})}switch(this.tracks.delete(s.trackSid),s.kind){case rr.Kind.Audio:this.audioTracks.delete(s.trackSid);break;case rr.Kind.Video:this.videoTracks.delete(s.trackSid)}return this.emit(e.ParticipantEvent.LocalTrackUnpublished,s),s.setTrack(void 0),o&&(yield this.engine.negotiate()),s}))}unpublishTracks(e){return vt(this,void 0,void 0,(function*(){return(yield Promise.all(e.map((e=>this.unpublishTrack(e))))).filter((e=>e instanceof bo))}))}republishAllTracks(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return vt(this,void 0,void 0,(function*(){const i=[];this.tracks.forEach((t=>{t.track&&(e&&(t.options=Object.assign(Object.assign({},t.options),e)),i.push(t))})),yield Promise.all(i.map((e=>vt(this,void 0,void 0,(function*(){const i=e.track;yield this.unpublishTrack(i,!1),t&&!i.isMuted&&(i instanceof zs||i instanceof uo)&&!i.isUserProvided&&(a.debug("restarting existing track",{track:e.trackSid}),yield i.restartTrack()),yield this.publishTrack(i,e.options)})))))}))}publishData(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return vt(this,void 0,void 0,(function*(){const n=Array.isArray(i)?i:null==i?void 0:i.destination,r=[],s=Array.isArray(i)?void 0:i.topic;void 0!==n&&n.forEach((e=>{e instanceof wo?r.push(e.sid):r.push(e)}));const o=new tt({kind:t,value:{case:"user",value:new rt({participantSid:this.sid,payload:e,destinationSids:r,topic:s})}});yield this.engine.sendDataPacket(o,t)}))}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isConnected&&this.updateTrackSubscriptionPermissions()}updateInfo(e){return e.sid===this.sid&&(!!super.updateInfo(e)&&(e.tracks.forEach((e=>{var t,i;const n=this.tracks.get(e.sid);if(n){const r=n.isMuted||null!==(i=null===(t=n.track)||void 0===t?void 0:t.isUpstreamPaused)&&void 0!==i&&i;r!==e.muted&&(a.debug("updating server mute state after reconcile",{sid:e.sid,muted:r}),this.engine.client.sendMuteTrack(e.sid,r))}})),!0))}getPublicationForTrack(e){let t;return this.tracks.forEach((i=>{const n=i.track;n&&(e instanceof MediaStreamTrack?(n instanceof zs||n instanceof uo)&&n.mediaStreamTrack===e&&(t=i):e===n&&(t=i))})),t}publishedTracksInfo(){const e=[];return this.tracks.forEach((t=>{void 0!==t.track&&e.push(new $i({cid:t.track.mediaStreamID,track:t.trackInfo}))})),e}dataChannelsInfo(){const t=[],i=(e,i)=>{void 0!==(null==e?void 0:e.id)&&null!==e.id&&t.push(new wn({label:e.label,id:e.id,target:i}))};return i(this.engine.dataChannelForKind(e.DataPacket_Kind.LOSSY),Ji.PUBLISHER),i(this.engine.dataChannelForKind(e.DataPacket_Kind.RELIABLE),Ji.PUBLISHER),i(this.engine.dataChannelForKind(e.DataPacket_Kind.LOSSY,!0),Ji.SUBSCRIBER),i(this.engine.dataChannelForKind(e.DataPacket_Kind.RELIABLE,!0),Ji.SUBSCRIBER),t}}var Co;e.ConnectionState=void 0,(Co=e.ConnectionState||(e.ConnectionState={})).Disconnected="disconnected",Co.Connecting="connecting",Co.Connected="connected",Co.Reconnecting="reconnecting";const Po=e.ConnectionState;class Ro extends Ot.EventEmitter{constructor(t){var i,n;super(),i=this,this.state=e.ConnectionState.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.connect=(t,i,n)=>vt(this,void 0,void 0,(function*(){var r;const s=yield this.disconnectLock.lock();if(this.state===e.ConnectionState.Connected)return a.info("already connected to room ".concat(this.name)),s(),Promise.resolve();if(this.connectFuture)return s(),this.connectFuture.promise;this.setAndEmitConnectionState(e.ConnectionState.Connecting),(null===(r=this.regionUrlProvider)||void 0===r?void 0:r.getServerUrl().toString())!==t&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),Pr(new URL(t))&&(void 0===this.regionUrlProvider?this.regionUrlProvider=new Ws(t,i):this.regionUrlProvider.updateToken(i),this.regionUrlProvider.fetchRegionSettings().catch((e=>{a.warn("could not fetch region settings",{error:e})})));const o=(e,r,c)=>vt(this,void 0,void 0,(function*(){var d;this.abortController&&this.abortController.abort();const u=new AbortController;this.abortController=u,null==s||s();try{yield this.attemptConnection(null!=c?c:t,i,n,u),this.abortController=void 0,e()}catch(t){if(this.regionUrlProvider&&t instanceof Ln&&3!==t.reason&&0!==t.reason){let i=null;try{i=yield this.regionUrlProvider.getNextBestRegionUrl(null===(d=this.abortController)||void 0===d?void 0:d.signal)}catch(e){if(e instanceof Ln&&(401===e.status||3===e.reason))return void r(e)}i?(a.info("initial connection failed, retrying with another region",{nextUrl:i}),yield o(e,r,i)):r(t)}else r(t)}})),c=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new jr(((e,t)=>{o(e,t,c)}),(()=>{this.clearConnectionFutures()})),this.connectFuture.promise})),this.connectSignal=(e,t,i,n,r,s)=>vt(this,void 0,void 0,(function*(){const o=yield i.join(e,t,{autoSubscribe:n.autoSubscribe,publishOnly:n.publishOnly,adaptiveStream:"object"==typeof r.adaptiveStream||r.adaptiveStream,maxRetries:n.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:n.websocketTimeout},s.signal);let c=o.serverInfo;if(c||(c={version:o.serverVersion,region:o.serverRegion}),a.debug("connected to Livekit Server ".concat(Object.entries(c).map((e=>{let[t,i]=e;return"".concat(t,": ").concat(i)})).join(", "))),!o.serverVersion)throw new Mn("unknown server version");return"0.15.1"===o.serverVersion&&this.options.dynacast&&(a.debug("disabling dynacast due to server version"),r.dynacast=!1),o})),this.applyJoinResponse=e=>{const t=e.participant;this.localParticipant.sid=t.sid,this.localParticipant.identity=t.identity,this.handleParticipantUpdates([t,...e.otherParticipants]),e.room&&this.handleRoomUpdate(e.room),this.options.e2ee&&this.e2eeManager&&this.e2eeManager.setSifTrailer(e.sifTrailer)},this.attemptConnection=(t,i,n,r)=>vt(this,void 0,void 0,(function*(){var s,o;this.state===e.ConnectionState.Reconnecting?(a.info("Reconnection attempt replaced by new connection attempt"),this.recreateEngine()):this.maybeCreateEngine(),(null===(s=this.regionUrlProvider)||void 0===s?void 0:s.isCloud())&&this.engine.setRegionUrlProvider(this.regionUrlProvider),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},Bs),n),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{const n=yield this.connectSignal(t,i,this.engine,this.connOptions,this.options,r);this.applyJoinResponse(n),this.setupLocalParticipantEvents(),this.emit(e.RoomEvent.SignalConnected)}catch(e){this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish);const t=new Ln("could not establish signal connection");throw e instanceof Error&&(t.message="".concat(t.message,": ").concat(e.message)),e instanceof Ln&&(t.reason=e.reason,t.status=e.status),a.debug("error trying to establish signal connection",{error:e}),t}if(r.signal.aborted)throw this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),new Ln("Connection attempt aborted");try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,r)}catch(e){throw this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),e}Er()&&this.options.disconnectOnPageLeave&&(window.addEventListener("pagehide",this.onPageLeave),window.addEventListener("beforeunload",this.onPageLeave)),Er()&&(document.addEventListener("freeze",this.onPageLeave),null===(o=navigator.mediaDevices)||void 0===o||o.addEventListener("devicechange",this.handleDeviceChange)),this.setAndEmitConnectionState(e.ConnectionState.Connected),this.emit(e.RoomEvent.Connected),this.registerConnectionReconcile()})),this.disconnect=function(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return vt(i,void 0,void 0,(function*(){var i,n,r,s;const o=yield this.disconnectLock.lock();try{if(this.state===e.ConnectionState.Disconnected)return void a.debug("already disconnected");a.info("disconnect from room",{identity:this.localParticipant.identity}),this.state!==e.ConnectionState.Connecting&&this.state!==e.ConnectionState.Reconnecting||(a.warn("abort connection attempt"),null===(i=this.abortController)||void 0===i||i.abort(),null===(r=null===(n=this.connectFuture)||void 0===n?void 0:n.reject)||void 0===r||r.call(n,new Ln("Client initiated disconnect")),this.connectFuture=void 0),(null===(s=this.engine)||void 0===s?void 0:s.client.isConnected)&&(yield this.engine.client.sendLeave()),this.engine&&(yield this.engine.close()),this.handleDisconnect(t,e.DisconnectReason.CLIENT_INITIATED),this.engine=void 0}finally{o()}}))},this.onPageLeave=()=>vt(this,void 0,void 0,(function*(){yield this.disconnect()})),this.handleRestarting=()=>{this.clearConnectionReconcile();for(const e of this.participants.values())this.handleParticipantDisconnected(e.sid,e);this.setAndEmitConnectionState(e.ConnectionState.Reconnecting)&&this.emit(e.RoomEvent.Reconnecting)},this.handleSignalRestarted=t=>vt(this,void 0,void 0,(function*(){a.debug("signal reconnected to server",{region:t.serverRegion}),this.cachedParticipantSids=[],this.applyJoinResponse(t);try{const e=[];this.localParticipant.tracks.forEach((t=>{t.track&&e.push(t)})),yield Promise.all(e.map((e=>vt(this,void 0,void 0,(function*(){const t=e.track;this.localParticipant.unpublishTrack(t,!1),t.isMuted||((t instanceof zs||t instanceof uo)&&t.source!==rr.Source.ScreenShare&&t.source!==rr.Source.ScreenShareAudio&&!t.isUserProvided&&(a.debug("restarting existing track",{track:e.trackSid}),yield t.restartTrack()),a.debug("publishing new track",{track:e.trackSid}),yield this.localParticipant.publishTrack(t,e.options))})))))}catch(e){a.error("error trying to re-publish tracks after reconnection",{error:e})}try{yield this.engine.waitForRestarted(),a.debug("fully reconnected to server",{region:t.serverRegion})}catch(e){return}this.setAndEmitConnectionState(e.ConnectionState.Connected),this.emit(e.RoomEvent.Reconnected),this.registerConnectionReconcile(),this.participants.forEach((t=>{this.emit(e.RoomEvent.ParticipantConnected,t)}))})),this.handleParticipantUpdates=e=>{e.forEach((e=>{if(e.identity===this.localParticipant.identity)return void this.localParticipant.updateInfo(e);const t=this.identityToSid.get(e.identity);t&&t!==e.sid&&this.handleParticipantDisconnected(t,this.participants.get(t));let i=this.participants.get(e.sid);const n=!i;e.state===He.DISCONNECTED?this.handleParticipantDisconnected(e.sid,i):(i=this.getOrCreateParticipant(e.sid,e),n||i.updateInfo(e))}))},this.handleActiveSpeakersUpdate=t=>{const i=[],n={};t.forEach((e=>{if(n[e.sid]=!0,e.sid===this.localParticipant.sid)this.localParticipant.audioLevel=e.level,this.localParticipant.setIsSpeaking(!0),i.push(this.localParticipant);else{const t=this.participants.get(e.sid);t&&(t.audioLevel=e.level,t.setIsSpeaking(!0),i.push(t))}})),n[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.participants.forEach((e=>{n[e.sid]||(e.audioLevel=0,e.setIsSpeaking(!1))})),this.activeSpeakers=i,this.emitWhenConnected(e.RoomEvent.ActiveSpeakersChanged,i)},this.handleSpeakersChanged=t=>{const i=new Map;this.activeSpeakers.forEach((e=>{i.set(e.sid,e)})),t.forEach((e=>{let t=this.participants.get(e.sid);e.sid===this.localParticipant.sid&&(t=this.localParticipant),t&&(t.audioLevel=e.level,t.setIsSpeaking(e.active),e.active?i.set(e.sid,t):i.delete(e.sid))}));const n=Array.from(i.values());n.sort(((e,t)=>t.audioLevel-e.audioLevel)),this.activeSpeakers=n,this.emitWhenConnected(e.RoomEvent.ActiveSpeakersChanged,n)},this.handleStreamStateUpdate=t=>{t.streamStates.forEach((t=>{const i=this.participants.get(t.participantSid);if(!i)return;const n=i.getTrackPublication(t.trackSid);n&&n.track&&(n.track.streamState=rr.streamStateFromProto(t.state),i.emit(e.ParticipantEvent.TrackStreamStateChanged,n,n.track.streamState),this.emitWhenConnected(e.RoomEvent.TrackStreamStateChanged,n,n.track.streamState,i))}))},this.handleSubscriptionPermissionUpdate=e=>{const t=this.participants.get(e.participantSid);if(!t)return;const i=t.getTrackPublication(e.trackSid);i&&i.setAllowed(e.allowed)},this.handleSubscriptionError=e=>{const t=Array.from(this.participants.values()).find((t=>t.tracks.has(e.trackSid)));if(!t)return;const i=t.getTrackPublication(e.trackSid);i&&i.setSubscriptionError(e.err)},this.handleDataPacket=(t,i)=>{const n=this.participants.get(t.participantSid);this.emit(e.RoomEvent.DataReceived,t.payload,n,i,t.topic),null==n||n.emit(e.ParticipantEvent.DataReceived,t.payload,i)},this.handleAudioPlaybackStarted=()=>{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(e.RoomEvent.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=t=>{a.warn("could not playback audio",t),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(e.RoomEvent.AudioPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>vt(this,void 0,void 0,(function*(){this.emit(e.RoomEvent.MediaDevicesChanged)})),this.handleRoomUpdate=t=>{const i=this.roomInfo;this.roomInfo=t,i&&i.metadata!==t.metadata&&this.emitWhenConnected(e.RoomEvent.RoomMetadataChanged,t.metadata),(null==i?void 0:i.activeRecording)!==t.activeRecording&&this.emitWhenConnected(e.RoomEvent.RecordingStatusChanged,t.activeRecording)},this.handleConnectionQualityUpdate=e=>{e.updates.forEach((e=>{if(e.participantSid===this.localParticipant.sid)return void this.localParticipant.setConnectionQuality(e.quality);const t=this.participants.get(e.participantSid);t&&t.setConnectionQuality(e.quality)}))},this.onLocalParticipantMetadataChanged=t=>{this.emit(e.RoomEvent.ParticipantMetadataChanged,t,this.localParticipant)},this.onLocalParticipantNameChanged=t=>{this.emit(e.RoomEvent.ParticipantNameChanged,t,this.localParticipant)},this.onLocalTrackMuted=t=>{this.emit(e.RoomEvent.TrackMuted,t,this.localParticipant)},this.onLocalTrackUnmuted=t=>{this.emit(e.RoomEvent.TrackUnmuted,t,this.localParticipant)},this.onLocalTrackPublished=t=>vt(this,void 0,void 0,(function*(){var i;if(this.emit(e.RoomEvent.LocalTrackPublished,t,this.localParticipant),t.track instanceof zs){(yield t.track.checkForSilence())&&this.emit(e.RoomEvent.LocalAudioSilenceDetected,t)}const n=yield null===(i=t.track)||void 0===i?void 0:i.getDeviceId(),r=(s=t.source)===rr.Source.Microphone?"audioinput":s===rr.Source.Camera?"videoinput":void 0;var s;r&&n&&n!==this.localParticipant.activeDeviceMap.get(r)&&(this.localParticipant.activeDeviceMap.set(r,n),this.emit(e.RoomEvent.ActiveDeviceChanged,r,n))})),this.onLocalTrackUnpublished=t=>{this.emit(e.RoomEvent.LocalTrackUnpublished,t,this.localParticipant)},this.onLocalConnectionQualityChanged=t=>{this.emit(e.RoomEvent.ConnectionQualityChanged,t,this.localParticipant)},this.onMediaDevicesError=t=>{this.emit(e.RoomEvent.MediaDevicesError,t)},this.onLocalParticipantPermissionsChanged=t=>{this.emit(e.RoomEvent.ParticipantPermissionsChanged,t,this.localParticipant)},this.setMaxListeners(100),this.participants=new Map,this.cachedParticipantSids=[],this.identityToSid=new Map,this.options=Object.assign(Object.assign({},Us),t),this.options.audioCaptureDefaults=Object.assign(Object.assign({},Os),null==t?void 0:t.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},xs),null==t?void 0:t.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},Ms),null==t?void 0:t.publishDefaults),this.maybeCreateEngine(),this.disconnectLock=new Vr,this.localParticipant=new Eo("","",this.engine,this.options),this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("videoinput",qr(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("audioinput",qr(this.options.audioCaptureDefaults.deviceId)),(null===(n=this.options.audioOutput)||void 0===n?void 0:n.deviceId)&&this.switchActiveDevice("audiooutput",qr(this.options.audioOutput.deviceId)),this.options.e2ee&&this.setupE2EE()}setE2EEEnabled(e){return vt(this,void 0,void 0,(function*(){if(!this.e2eeManager)throw Error("e2ee not configured, please set e2ee settings within the room options");yield Promise.all([this.localParticipant.setE2EEEnabled(e)]),""!==this.localParticipant.identity&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity)}))}setupE2EE(){var t;this.options.e2ee&&(this.e2eeManager=new ms(this.options.e2ee),this.e2eeManager.on(e.EncryptionEvent.ParticipantEncryptionStatusChanged,((t,i)=>{i instanceof Eo&&(this.isE2EEEnabled=t),this.emit(e.RoomEvent.ParticipantEncryptionStatusChanged,t,i)})),this.e2eeManager.on(e.EncryptionEvent.EncryptionError,(t=>this.emit(e.RoomEvent.EncryptionError,t))),null===(t=this.e2eeManager)||void 0===t||t.setup(this))}get isRecording(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.activeRecording)&&void 0!==t&&t}get sid(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.sid)&&void 0!==t?t:""}get name(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.name)&&void 0!==t?t:""}get metadata(){var e;return null===(e=this.roomInfo)||void 0===e?void 0:e.metadata}get numParticipants(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.numParticipants)&&void 0!==t?t:0}get numPublishers(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.numPublishers)&&void 0!==t?t:0}maybeCreateEngine(){this.engine&&!this.engine.isClosed||(this.engine=new qs(this.options),this.engine.on(e.EngineEvent.ParticipantUpdate,this.handleParticipantUpdates).on(e.EngineEvent.RoomUpdate,this.handleRoomUpdate).on(e.EngineEvent.SpeakersChanged,this.handleSpeakersChanged).on(e.EngineEvent.StreamStateChanged,this.handleStreamStateUpdate).on(e.EngineEvent.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(e.EngineEvent.SubscriptionError,this.handleSubscriptionError).on(e.EngineEvent.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(e.EngineEvent.MediaTrackAdded,((e,t,i)=>{this.onTrackAdded(e,t,i)})).on(e.EngineEvent.Disconnected,(e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)})).on(e.EngineEvent.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(e.EngineEvent.DataPacketReceived,this.handleDataPacket).on(e.EngineEvent.Resuming,(()=>{this.clearConnectionReconcile(),this.setAndEmitConnectionState(e.ConnectionState.Reconnecting)&&this.emit(e.RoomEvent.Reconnecting),this.cachedParticipantSids=Array.from(this.participants.keys())})).on(e.EngineEvent.Resumed,(()=>{this.setAndEmitConnectionState(e.ConnectionState.Connected),this.emit(e.RoomEvent.Reconnected),this.registerConnectionReconcile(),this.updateSubscriptions();Array.from(this.participants.values()).filter((e=>!this.cachedParticipantSids.includes(e.sid))).forEach((t=>this.emit(e.RoomEvent.ParticipantConnected,t))),this.cachedParticipantSids=[]})).on(e.EngineEvent.SignalResumed,(()=>{this.state===e.ConnectionState.Reconnecting&&this.sendSyncState()})).on(e.EngineEvent.Restarting,this.handleRestarting).on(e.EngineEvent.SignalRestarted,this.handleSignalRestarted).on(e.EngineEvent.DCBufferStatusChanged,((t,i)=>{this.emit(e.RoomEvent.DCBufferStatusChanged,t,i)})),this.localParticipant&&this.localParticipant.setupEngine(this.engine),this.e2eeManager&&this.e2eeManager.setupEngine(this.engine))}static getLocalDevices(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return hs.getInstance().getDevices(e,t)}prepareConnection(t,i){return vt(this,void 0,void 0,(function*(){if(this.state===e.ConnectionState.Disconnected){a.debug("prepareConnection to ".concat(t));try{if(Pr(new URL(t))&&i){this.regionUrlProvider=new Ws(t,i);const n=yield this.regionUrlProvider.getNextBestRegionUrl();n&&this.state===e.ConnectionState.Disconnected&&(this.regionUrl=n,yield fetch(Kr(n),{method:"HEAD"}),a.debug("prepared connection to ".concat(n)))}else yield fetch(Kr(t),{method:"HEAD"})}catch(e){a.warn("could not prepare connection",{error:e})}}}))}getParticipantByIdentity(e){if(this.localParticipant.identity===e)return this.localParticipant;const t=this.identityToSid.get(e);return t?this.participants.get(t):void 0}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(t,i){return vt(this,void 0,void 0,(function*(){let n,r=()=>{};switch(t){case"signal-reconnect":yield this.engine.client.handleOnClose("simulate disconnect");break;case"speaker":n=new En({scenario:{case:"speakerUpdate",value:3}});break;case"node-failure":n=new En({scenario:{case:"nodeFailure",value:!0}});break;case"server-leave":n=new En({scenario:{case:"serverLeave",value:!0}});break;case"migration":n=new En({scenario:{case:"migration",value:!0}});break;case"resume-reconnect":this.engine.failNext(),yield this.engine.client.handleOnClose("simulate resume-disconnect");break;case"full-reconnect":this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose("simulate full-reconnect");break;case"force-tcp":case"force-tls":n=new En({scenario:{case:"switchCandidateProtocol",value:"force-tls"===t?2:1}}),r=()=>vt(this,void 0,void 0,(function*(){const t=this.engine.client.onLeave;t&&t(new on({reason:e.DisconnectReason.CLIENT_INITIATED,canReconnect:!0}))}));break;case"subscriber-bandwidth":if(void 0===i||"number"!=typeof i)throw new Error("subscriber-bandwidth requires a number as argument");n=new En({scenario:{case:"subscriberBandwidth",value:BigInt(i)}})}n&&(this.engine.client.sendSimulateScenario(n),r())}))}startAudio(){return vt(this,void 0,void 0,(function*(){const t=[],i=Jn();if(i&&"iOS"===i.os){const i="livekit-dummy-audio-el";let n=document.getElementById(i);if(!n){n=document.createElement("audio"),n.id=i,n.autoplay=!0,n.hidden=!0;const t=Jr();t.enabled=!0;const r=new MediaStream([t]);n.srcObject=r,document.addEventListener("visibilitychange",(()=>{n&&(n.srcObject=document.hidden?null:r)})),document.body.append(n),this.once(e.RoomEvent.Disconnected,(()=>{null==n||n.remove()}))}t.push(n)}this.participants.forEach((e=>{e.audioTracks.forEach((e=>{e.track&&e.track.attachedElements.forEach((e=>{t.push(e)}))}))}));try{yield Promise.all([this.acquireAudioContext(),...t.map((e=>(e.muted=!1,e.play())))]),this.handleAudioPlaybackStarted()}catch(e){throw this.handleAudioPlaybackFailed(e),e}}))}get canPlaybackAudio(){return this.audioEnabled}getActiveAudioOutputDevice(){var e,t;return null!==(t=null===(e=this.options.audioOutput)||void 0===e?void 0:e.deviceId)&&void 0!==t?t:""}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(t,i){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];var r,s,o;return vt(this,void 0,void 0,(function*(){let a=!1,c=!0;const d=n?{exact:i}:i;if("audioinput"===t){const e=this.options.audioCaptureDefaults.deviceId;this.options.audioCaptureDefaults.deviceId=d,a=e!==d;const t=Array.from(this.localParticipant.audioTracks.values()).filter((e=>e.source===rr.Source.Microphone));try{c=(yield Promise.all(t.map((e=>{var t;return null===(t=e.audioTrack)||void 0===t?void 0:t.setDeviceId(d)})))).every((e=>!0===e))}catch(t){throw this.options.audioCaptureDefaults.deviceId=e,t}}else if("videoinput"===t){const e=this.options.videoCaptureDefaults.deviceId;this.options.videoCaptureDefaults.deviceId=d,a=e!==d;const t=Array.from(this.localParticipant.videoTracks.values()).filter((e=>e.source===rr.Source.Camera));try{c=(yield Promise.all(t.map((e=>{var t;return null===(t=e.videoTrack)||void 0===t?void 0:t.setDeviceId(d)})))).every((e=>!0===e))}catch(t){throw this.options.videoCaptureDefaults.deviceId=e,t}}else if("audiooutput"===t){if(!kr()&&!this.options.expWebAudioMix||this.options.expWebAudioMix&&this.audioContext&&!("setSinkId"in this.audioContext))throw new Error("cannot switch audio output, setSinkId not supported");null!==(r=(o=this.options).audioOutput)&&void 0!==r||(o.audioOutput={});const e=this.options.audioOutput.deviceId;this.options.audioOutput.deviceId=i,a=e!==d;try{this.options.expWebAudioMix?null===(s=this.audioContext)||void 0===s||s.setSinkId(i):yield Promise.all(Array.from(this.participants.values()).map((e=>e.setAudioOutput({deviceId:i}))))}catch(t){throw this.options.audioOutput.deviceId=e,t}}return a&&c&&(this.localParticipant.activeDeviceMap.set(t,i),this.emit(e.RoomEvent.ActiveDeviceChanged,t,i)),c}))}setupLocalParticipantEvents(){this.localParticipant.on(e.ParticipantEvent.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(e.ParticipantEvent.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(e.ParticipantEvent.TrackMuted,this.onLocalTrackMuted).on(e.ParticipantEvent.TrackUnmuted,this.onLocalTrackUnmuted).on(e.ParticipantEvent.LocalTrackPublished,this.onLocalTrackPublished).on(e.ParticipantEvent.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(e.ParticipantEvent.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(e.ParticipantEvent.MediaDevicesError,this.onMediaDevicesError).on(e.ParticipantEvent.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(){var e;null===(e=this.engine)||void 0===e||e.close(),this.engine=void 0,this.participants.clear(),this.maybeCreateEngine()}onTrackAdded(t,i,n){if(this.state===e.ConnectionState.Connecting||this.state===e.ConnectionState.Reconnecting){const r=()=>{this.onTrackAdded(t,i,n),s()},s=()=>{this.off(e.RoomEvent.Reconnected,r),this.off(e.RoomEvent.Connected,r),this.off(e.RoomEvent.Disconnected,s)};return this.once(e.RoomEvent.Reconnected,r),this.once(e.RoomEvent.Connected,r),void this.once(e.RoomEvent.Disconnected,s)}if(this.state===e.ConnectionState.Disconnected)return void a.warn("skipping incoming track after Room disconnected");const r=function(e){const t=e.split("|");return t.length>1?[t[0],e.substr(t[0].length+1)]:[e,""]}(i.id),s=r[0];let o=r[1];if(o&&""!==o||(o=t.id),s===this.localParticipant.sid)return void a.warn("tried to create RemoteParticipant for local participant");const c=this.participants.get(s);if(!c)return void a.error("Tried to add a track for a participant, that's not present. Sid: ".concat(s));let d;this.options.adaptiveStream&&(d="object"==typeof this.options.adaptiveStream?this.options.adaptiveStream:{}),c.addSubscribedMediaTrack(t,o,i,n,d)}handleDisconnect(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],i=arguments.length>1?arguments[1]:void 0;var n;if(this.clearConnectionReconcile(),this.state!==e.ConnectionState.Disconnected){this.regionUrl=void 0;try{this.participants.forEach((e=>{e.tracks.forEach((t=>{e.unpublishTrack(t.trackSid)}))})),this.localParticipant.tracks.forEach((e=>{var i,n;e.track&&this.localParticipant.unpublishTrack(e.track,t),t&&(null===(i=e.track)||void 0===i||i.detach(),null===(n=e.track)||void 0===n||n.stop())})),this.localParticipant.off(e.ParticipantEvent.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(e.ParticipantEvent.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(e.ParticipantEvent.TrackMuted,this.onLocalTrackMuted).off(e.ParticipantEvent.TrackUnmuted,this.onLocalTrackUnmuted).off(e.ParticipantEvent.LocalTrackPublished,this.onLocalTrackPublished).off(e.ParticipantEvent.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(e.ParticipantEvent.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(e.ParticipantEvent.MediaDevicesError,this.onMediaDevicesError).off(e.ParticipantEvent.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.tracks.clear(),this.localParticipant.videoTracks.clear(),this.localParticipant.audioTracks.clear(),this.participants.clear(),this.activeSpeakers=[],this.audioContext&&"boolean"==typeof this.options.expWebAudioMix&&(this.audioContext.close(),this.audioContext=void 0),Er()&&(window.removeEventListener("beforeunload",this.onPageLeave),window.removeEventListener("pagehide",this.onPageLeave),window.removeEventListener("freeze",this.onPageLeave),null===(n=navigator.mediaDevices)||void 0===n||n.removeEventListener("devicechange",this.handleDeviceChange))}finally{this.setAndEmitConnectionState(e.ConnectionState.Disconnected),this.emit(e.RoomEvent.Disconnected,i)}}}handleParticipantDisconnected(t,i){this.participants.delete(t),i&&(this.identityToSid.delete(i.identity),i.tracks.forEach((e=>{i.unpublishTrack(e.trackSid,!0)})),this.emit(e.RoomEvent.ParticipantDisconnected,i))}acquireAudioContext(){var t,i;return vt(this,void 0,void 0,(function*(){if("boolean"!=typeof this.options.expWebAudioMix&&this.options.expWebAudioMix.audioContext?this.audioContext=this.options.expWebAudioMix.audioContext:this.audioContext&&"closed"!==this.audioContext.state||(this.audioContext=null!==(t=ur())&&void 0!==t?t:void 0),this.audioContext&&"suspended"===this.audioContext.state)try{yield this.audioContext.resume()}catch(e){a.warn(e)}this.options.expWebAudioMix&&this.participants.forEach((e=>e.setAudioContext(this.audioContext))),this.localParticipant.setAudioContext(this.audioContext);const n="running"===(null===(i=this.audioContext)||void 0===i?void 0:i.state);n!==this.canPlaybackAudio&&(this.audioEnabled=n,this.emit(e.RoomEvent.AudioPlaybackStatusChanged,n))}))}createParticipant(e,t){let i;return i=t?wo.fromParticipantInfo(this.engine.client,t):new wo(this.engine.client,e,"",void 0,void 0),this.options.expWebAudioMix&&i.setAudioContext(this.audioContext),i}getOrCreateParticipant(t,i){if(this.participants.has(t))return this.participants.get(t);const n=this.createParticipant(t,i);return this.participants.set(t,n),this.identityToSid.set(i.identity,i.sid),this.emitWhenConnected(e.RoomEvent.ParticipantConnected,n),n.on(e.ParticipantEvent.TrackPublished,(t=>{this.emitWhenConnected(e.RoomEvent.TrackPublished,t,n)})).on(e.ParticipantEvent.TrackSubscribed,((t,i)=>{t.kind===rr.Kind.Audio&&(t.on(e.TrackEvent.AudioPlaybackStarted,this.handleAudioPlaybackStarted),t.on(e.TrackEvent.AudioPlaybackFailed,this.handleAudioPlaybackFailed)),this.emit(e.RoomEvent.TrackSubscribed,t,i,n)})).on(e.ParticipantEvent.TrackUnpublished,(t=>{this.emit(e.RoomEvent.TrackUnpublished,t,n)})).on(e.ParticipantEvent.TrackUnsubscribed,((t,i)=>{this.emit(e.RoomEvent.TrackUnsubscribed,t,i,n)})).on(e.ParticipantEvent.TrackSubscriptionFailed,(t=>{this.emit(e.RoomEvent.TrackSubscriptionFailed,t,n)})).on(e.ParticipantEvent.TrackMuted,(t=>{this.emitWhenConnected(e.RoomEvent.TrackMuted,t,n)})).on(e.ParticipantEvent.TrackUnmuted,(t=>{this.emitWhenConnected(e.RoomEvent.TrackUnmuted,t,n)})).on(e.ParticipantEvent.ParticipantMetadataChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ParticipantMetadataChanged,t,n)})).on(e.ParticipantEvent.ParticipantNameChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ParticipantNameChanged,t,n)})).on(e.ParticipantEvent.ConnectionQualityChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ConnectionQualityChanged,t,n)})).on(e.ParticipantEvent.ParticipantPermissionsChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ParticipantPermissionsChanged,t,n)})).on(e.ParticipantEvent.TrackSubscriptionStatusChanged,((t,i)=>{this.emitWhenConnected(e.RoomEvent.TrackSubscriptionStatusChanged,t,i,n)})).on(e.ParticipantEvent.TrackSubscriptionFailed,((t,i)=>{this.emit(e.RoomEvent.TrackSubscriptionFailed,t,n,i)})).on(e.ParticipantEvent.TrackSubscriptionPermissionChanged,((t,i)=>{this.emitWhenConnected(e.RoomEvent.TrackSubscriptionPermissionChanged,t,i,n)})),i&&n.updateInfo(i),n}sendSyncState(){var e,t;if(void 0===this.engine.subscriber||null===this.engine.subscriber.pc.localDescription)return;const i=this.engine.subscriber.pc.localDescription,n=this.engine.subscriber.pc.remoteDescription,r=null===(t=null===(e=this.connOptions)||void 0===e?void 0:e.autoSubscribe)||void 0===t||t,s=new Array;this.participants.forEach((e=>{e.tracks.forEach((e=>{e.isDesired!==r&&s.push(e.trackSid)}))})),this.engine.client.sendSyncState(new Sn({answer:Yr({sdp:i.sdp,type:i.type}),offer:n?Yr({sdp:n.sdp,type:n.type}):void 0,subscription:new rn({trackSids:s,subscribe:!r,participantTracks:[]}),publishTracks:this.localParticipant.publishedTracksInfo(),dataChannels:this.localParticipant.dataChannelsInfo()}))}updateSubscriptions(){for(const e of this.participants.values())for(const t of e.videoTracks.values())t.isSubscribed&&t instanceof So&&t.emitTrackUpdate()}registerConnectionReconcile(){this.clearConnectionReconcile();let t=0;this.connectionReconcileInterval=Un.setInterval((()=>{this.engine&&!this.engine.isClosed&&this.engine.verifyTransport()?t=0:(t++,a.warn("detected connection state mismatch",{numFailures:t}),t>=3&&(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e.DisconnectReason.STATE_MISMATCH)))}),2e3)}clearConnectionReconcile(){this.connectionReconcileInterval&&Un.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(t){return t!==this.state&&(this.state=t,this.emit(e.RoomEvent.ConnectionStateChanged,this.state),!0)}emitWhenConnected(t){if(this.state===e.ConnectionState.Connected){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return this.emit(t,...n)}return!1}simulateParticipants(t){var i,n;return vt(this,void 0,void 0,(function*(){const r=Object.assign({audio:!0,video:!0,useRealTracks:!1},t.publish),s=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},t.participants);if(this.handleDisconnect(),this.roomInfo=new je({sid:"RM_SIMULATED",name:"simulated-room",emptyTimeout:0,maxParticipants:0,creationTime:O.parse((new Date).getTime()),metadata:"",numParticipants:1,numPublishers:1,turnPassword:"",enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new We({identity:"simulated-local",name:"local-name"})),this.setupLocalParticipantEvents(),this.emit(e.RoomEvent.SignalConnected),this.emit(e.RoomEvent.Connected),this.setAndEmitConnectionState(e.ConnectionState.Connected),r.video){const t=new bo(rr.Kind.Video,new $e({source:Ne.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:Le.AUDIO,name:"video-dummy"}),new uo(r.useRealTracks?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:Fr(null!==(i=160*s.aspectRatios[0])&&void 0!==i?i:1,160,!0,!0)));this.localParticipant.addTrackPublication(t),this.localParticipant.emit(e.ParticipantEvent.LocalTrackPublished,t)}if(r.audio){const t=new bo(rr.Kind.Audio,new $e({source:Ne.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:Le.AUDIO}),new zs(r.useRealTracks?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:Jr()));this.localParticipant.addTrackPublication(t),this.localParticipant.emit(e.ParticipantEvent.LocalTrackPublished,t)}for(let e=0;e<s.count-1;e+=1){let t=new We({sid:Math.floor(1e4*Math.random()).toString(),identity:"simulated-".concat(e),state:He.ACTIVE,tracks:[],joinedAt:O.parse(Date.now())});const i=this.getOrCreateParticipant(t.identity,t);if(s.video){const r=Fr(null!==(n=160*s.aspectRatios[e%s.aspectRatios.length])&&void 0!==n?n:1,160,!1,!0),o=new $e({source:Ne.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:Le.AUDIO});i.addSubscribedMediaTrack(r,o.sid,new MediaStream([r])),t.tracks=[...t.tracks,o]}if(s.audio){const e=Jr(),n=new $e({source:Ne.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:Le.AUDIO});i.addSubscribedMediaTrack(e,n.sid,new MediaStream([e])),t.tracks=[...t.tracks,n]}i.updateInfo(t)}}))}emit(t){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return t!==e.RoomEvent.ActiveSpeakersChanged&&a.debug("room event ".concat(t),{event:t,args:n}),super.emit(t,...n)}}var Io;!function(e){e[e.IDLE=0]="IDLE",e[e.RUNNING=1]="RUNNING",e[e.SKIPPED=2]="SKIPPED",e[e.SUCCESS=3]="SUCCESS",e[e.FAILED=4]="FAILED"}(Io||(Io={}));class Do extends Ot.EventEmitter{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.status=Io.IDLE,this.logs=[],this.errorsAsWarnings=!1,this.url=e,this.token=t,this.name=this.constructor.name,this.room=new Ro(i.roomOptions),this.connectOptions=i.connectOptions,i.errorsAsWarnings&&(this.errorsAsWarnings=i.errorsAsWarnings)}run(e){return vt(this,void 0,void 0,(function*(){if(this.status!==Io.IDLE)throw Error("check is running already");this.setStatus(Io.RUNNING);try{yield this.perform()}catch(e){e instanceof Error&&(this.errorsAsWarnings?this.appendWarning(e.message):this.appendError(e.message))}return yield this.disconnect(),yield new Promise((e=>setTimeout(e,500))),this.status!==Io.SKIPPED&&this.setStatus(this.isSuccess()?Io.SUCCESS:Io.FAILED),e&&e(),this.getInfo()}))}isSuccess(){return!this.logs.some((e=>"error"===e.level))}connect(){return vt(this,void 0,void 0,(function*(){return this.room.state===e.ConnectionState.Connected||(yield this.room.connect(this.url,this.token)),this.room}))}disconnect(){return vt(this,void 0,void 0,(function*(){this.room&&this.room.state!==e.ConnectionState.Disconnected&&(yield this.room.disconnect(),yield new Promise((e=>setTimeout(e,500))))}))}skip(){this.setStatus(Io.SKIPPED)}appendMessage(e){this.logs.push({level:"info",message:e}),this.emit("update",this.getInfo())}appendWarning(e){this.logs.push({level:"warning",message:e}),this.emit("update",this.getInfo())}appendError(e){this.logs.push({level:"error",message:e}),this.emit("update",this.getInfo())}setStatus(e){this.status=e,this.emit("update",this.getInfo())}get engine(){var e;return null===(e=this.room)||void 0===e?void 0:e.engine}getInfo(){return{logs:this.logs,name:this.name,status:this.status,description:this.description}}}function _o(e){var t,i;return vt(this,void 0,void 0,(function*(){null!=e||(e={}),null!==(t=e.audio)&&void 0!==t||(e.audio=!0),null!==(i=e.video)&&void 0!==i||(e.video=!0);const n=dr(ar(e,Os,xs)),r=navigator.mediaDevices.getUserMedia(n);e.audio&&(hs.userMediaPromiseMap.set("audioinput",r),r.catch((()=>hs.userMediaPromiseMap.delete("audioinput")))),e.video&&(hs.userMediaPromiseMap.set("videoinput",r),r.catch((()=>hs.userMediaPromiseMap.delete("videoinput"))));const s=yield r;return s.getTracks().map((t=>{const i="audio"===t.kind;let r;i?e.audio:e.video;const o=i?n.audio:n.video;"boolean"!=typeof o&&(r=o),r?r.deviceId=t.getSettings().deviceId:r={deviceId:t.getSettings().deviceId};const a=Qs(t,r);return a.kind===rr.Kind.Video?a.source=rr.Source.Camera:a.kind===rr.Kind.Audio&&(a.source=rr.Source.Microphone),a.mediaStream=s,a}))}))}function Lo(e){return vt(this,void 0,void 0,(function*(){return(yield _o({audio:!1,video:e}))[0]}))}function No(e){return vt(this,void 0,void 0,(function*(){return(yield _o({audio:e,video:!1}))[0]}))}class Ao extends Do{get description(){return"Can publish audio"}perform(){var e;return vt(this,void 0,void 0,(function*(){const t=yield this.connect(),i=yield No();t.localParticipant.publishTrack(i),yield new Promise((e=>setTimeout(e,3e3)));const n=yield null===(e=i.sender)||void 0===e?void 0:e.getStats();if(!n)throw new Error("Could not get RTCStats");let r=0;if(n.forEach((e=>{"outbound-rtp"===e.type&&"audio"===e.mediaType&&(r=e.packetsSent)})),0===r)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(r," audio packets"))}))}}class Mo extends Do{get description(){return"Can publish video"}perform(){var e;return vt(this,void 0,void 0,(function*(){const t=yield this.connect(),i=yield Lo();t.localParticipant.publishTrack(i),yield new Promise((e=>setTimeout(e,3e3)));const n=yield null===(e=i.sender)||void 0===e?void 0:e.getStats();if(!n)throw new Error("Could not get RTCStats");let r=0;if(n.forEach((e=>{"outbound-rtp"===e.type&&"video"===e.mediaType&&(r=e.packetsSent)})),0===r)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(r," video packets"))}))}}class Oo extends Do{get description(){return"Resuming connection after interruption"}perform(){var t;return vt(this,void 0,void 0,(function*(){const i=yield this.connect();let n,r=!1,s=!1;const o=new Promise((e=>{setTimeout(e,5e3),n=e}));i.on(e.RoomEvent.Reconnecting,(()=>{r=!0})).on(e.RoomEvent.Reconnected,(()=>{s=!0,n(!0)})),null===(t=i.engine.client.ws)||void 0===t||t.close();const a=i.engine.client.onClose;if(a&&a(""),yield o,!r)throw new Error("Did not attempt to reconnect");if(!s||i.state!==e.ConnectionState.Connected)throw this.appendWarning("reconnection is only possible in Redis-based configurations"),new Error("Not able to reconnect")}))}}class xo extends Do{get description(){return"Can connect via TURN"}perform(){var e,t;return vt(this,void 0,void 0,(function*(){const i=new zr,n=yield i.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3});let r=!1,s=!1,o=!1;for(let e of n.iceServers)for(let t of e.urls)t.startsWith("turn:")?(s=!0,o=!0):t.startsWith("turns:")&&(s=!0,o=!0,r=!0),t.startsWith("stun:")&&(o=!0);o?s&&!r&&this.appendWarning("TURN is configured server side, but TURN/TLS is unavailable."):this.appendWarning("No STUN servers configured on server side."),yield i.close(),(null===(t=null===(e=this.connectOptions)||void 0===e?void 0:e.rtcConfig)||void 0===t?void 0:t.iceServers)||s?yield this.room.connect(this.url,this.token,{rtcConfig:{iceTransportPolicy:"relay"}}):(this.appendWarning("No TURN servers configured."),this.skip(),yield new Promise((e=>setTimeout(e,0))))}))}}class Uo extends Do{get description(){return"Establishing WebRTC connection"}perform(){return vt(this,void 0,void 0,(function*(){let t=!1,i=!1;this.room.on(e.RoomEvent.SignalConnected,(()=>{const e=this.room.engine.client.onTrickle;this.room.engine.client.onTrickle=(n,r)=>{if(n.candidate){const e=new RTCIceCandidate(n);let r="".concat(e.protocol," ").concat(e.address,":").concat(e.port," ").concat(e.type);e.address&&(!function(e){const t=e.split(".");if(4===t.length){if("10"===t[0])return!0;if("192"===t[0]&&"168"===t[1])return!0;if("172"===t[0]){const e=parseInt(t[1],10);if(e>=16&&e<=31)return!0}}return!1}(e.address)?"tcp"===e.protocol&&"passive"===e.tcpType?(t=!0,r+=" (passive)"):"udp"===e.protocol&&(i=!0):r+=" (private)"),this.appendMessage(r)}e&&e(n,r)},this.room.engine.subscriber&&(this.room.engine.subscriber.pc.onicecandidateerror=e=>{e instanceof RTCPeerConnectionIceErrorEvent&&this.appendWarning("error with ICE candidate: ".concat(e.errorCode," ").concat(e.errorText," ").concat(e.url))})}));try{yield this.connect(),a.info("now the room is connected")}catch(e){throw this.appendWarning("ports need to be open on firewall in order to connect."),e}t||this.appendWarning("Server is not configured for ICE/TCP"),i||this.appendWarning("No public IPv4 UDP candidates were found. Your server is likely not configured correctly")}))}}class Bo extends Do{get description(){return"Connecting to signal connection via WebSocket"}perform(){var e,t,i;return vt(this,void 0,void 0,(function*(){(this.url.startsWith("ws:")||this.url.startsWith("http:"))&&this.appendWarning("Server is insecure, clients may block connections to it");let n=new zr;const r=yield n.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3});this.appendMessage("Connected to server, version ".concat(r.serverVersion,".")),(null===(e=r.serverInfo)||void 0===e?void 0:e.edition)===Qe.Cloud&&(null===(t=r.serverInfo)||void 0===t?void 0:t.region)&&this.appendMessage("LiveKit Cloud: ".concat(null===(i=r.serverInfo)||void 0===i?void 0:i.region)),yield n.close()}))}}class Fo extends Ot.EventEmitter{constructor(e,t){super(),this.checkResults=new Map,this.url=e,this.token=t}getNextCheckId(){const e=this.checkResults.size;return this.checkResults.set(e,{logs:[],status:Io.IDLE,name:"",description:""}),e}updateCheck(e,t){this.checkResults.set(e,t),this.emit("checkUpdate",e,t)}isSuccess(){return Array.from(this.checkResults.values()).every((e=>e.status!==Io.FAILED))}getResults(){return Array.from(this.checkResults.values())}createAndRunCheck(e){return vt(this,void 0,void 0,(function*(){const t=this.getNextCheckId(),i=new e(this.url,this.token),n=e=>{this.updateCheck(t,e)};i.on("update",n);const r=yield i.run();return i.off("update",n),r}))}checkWebsocket(){return vt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Bo)}))}checkWebRTC(){return vt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Uo)}))}checkTURN(){return vt(this,void 0,void 0,(function*(){return this.createAndRunCheck(xo)}))}checkReconnect(){return vt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Oo)}))}checkPublishAudio(){return vt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Ao)}))}checkPublishVideo(){return vt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Mo)}))}}const Jo=new Map([["obs virtual camera",{facingMode:"environment",confidence:"medium"}]]),jo=new Map([["iphone",{facingMode:"environment",confidence:"medium"}],["ipad",{facingMode:"environment",confidence:"medium"}]]);function Vo(e){var t;const i=e.trim().toLowerCase();if(""!==i)return Jo.has(i)?Jo.get(i):null===(t=Array.from(jo.entries()).find((e=>{let[t]=e;return i.includes(t)})))||void 0===t?void 0:t[1]}e.BaseKeyProvider=ds,e.ConnectionCheck=Fo,e.ConnectionError=Ln,e.CriticalTimers=Un,e.DefaultReconnectPolicy=ft,e.DeviceUnsupportedError=Nn,e.ExternalE2EEKeyProvider=class extends ds{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(Object.assign(Object.assign({},e),{sharedKey:!0,ratchetWindowSize:0,failureTolerance:-1}))}setKey(e){return vt(this,void 0,void 0,(function*(){const t="string"==typeof e?yield ss(e):yield os(e);this.onSetEncryptionKey(t)}))}},e.LivekitError=_n,e.LocalAudioTrack=zs,e.LocalParticipant=Eo,e.LocalTrack=ps,e.LocalTrackPublication=bo,e.LocalVideoTrack=uo,e.NegotiationError=xn,e.Participant=To,e.PublishDataError=class extends _n{constructor(e){super(13,null!=e?e:"unable to publish data")}},e.RemoteAudioTrack=fo,e.RemoteParticipant=wo,e.RemoteTrack=mo,e.RemoteTrackPublication=So,e.RemoteVideoTrack=vo,e.Room=Ro,e.RoomState=Po,e.ScreenSharePresets=Zn,e.Track=rr,e.TrackInvalidError=An,e.TrackPublication=ko,e.UnexpectedConnectionState=On,e.UnsupportedServer=Mn,e.VideoPreset=Kn,e.VideoPresets=Yn,e.VideoPresets43=Xn,e.attachToElement=sr,e.createAudioAnalyser=function(e,t){const i=Object.assign({cloneTrack:!1,fftSize:2048,smoothingTimeConstant:.8,minDecibels:-100,maxDecibels:-80},t),n=ur();if(!n)throw new Error("Audio Context not supported on this browser");const r=i.cloneTrack?e.mediaStreamTrack.clone():e.mediaStreamTrack,s=n.createMediaStreamSource(new MediaStream([r])),o=n.createAnalyser();o.minDecibels=i.minDecibels,o.maxDecibels=i.maxDecibels,o.fftSize=i.fftSize,o.smoothingTimeConstant=i.smoothingTimeConstant,s.connect(o);const a=new Uint8Array(o.frequencyBinCount);return{calculateVolume:()=>{o.getByteFrequencyData(a);let e=0;for(const t of a)e+=Math.pow(t/255,2);return Math.sqrt(e/a.length)},analyser:o,cleanup:()=>{n.close(),i.cloneTrack&&r.stop()}}},e.createE2EEKey=function(){return window.crypto.getRandomValues(new Uint8Array(32))},e.createKeyMaterialFromBuffer=os,e.createKeyMaterialFromString=ss,e.createLocalAudioTrack=No,e.createLocalScreenTracks=function(e){return vt(this,void 0,void 0,(function*(){if(void 0===e&&(e={}),void 0===e.resolution&&(e.resolution=Zn.h1080fps15.resolution),void 0===navigator.mediaDevices.getDisplayMedia)throw new Nn("getDisplayMedia not supported");const t=lr(e),i=yield navigator.mediaDevices.getDisplayMedia(t),n=i.getVideoTracks();if(0===n.length)throw new An("no video track found");const r=new uo(n[0],void 0,!1);r.source=rr.Source.ScreenShare;const s=[r];if(i.getAudioTracks().length>0){const e=new zs(i.getAudioTracks()[0],void 0,!1);e.source=rr.Source.ScreenShareAudio,s.push(e)}return s}))},e.createLocalTracks=_o,e.createLocalVideoTrack=Lo,e.deriveKeys=function(e,t){return vt(this,void 0,void 0,(function*(){const i=as(e.algorithm.name,t),n=yield crypto.subtle.deriveKey(i,e,{name:Xr,length:128},!1,["encrypt","decrypt"]);return{material:e,encryptionKey:n}}))},e.detachTrack=or,e.facingModeFromDeviceLabel=Vo,e.facingModeFromLocalTrack=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var i;const n=e instanceof ps?e.mediaStreamTrack:e,r=n.getSettings();let s={facingMode:null!==(i=t.defaultFacingMode)&&void 0!==i?i:"user",confidence:"low"};if("facingMode"in r){const e=r.facingMode;a.debug("rawFacingMode",{rawFacingMode:e}),e&&"string"==typeof e&&function(e){const t=["user","environment","left","right"];return void 0===e||t.includes(e)}(e)&&(s={facingMode:e,confidence:"high"})}if(["low","medium"].includes(s.confidence)){a.debug("Try to get facing mode from device label: (".concat(n.label,")"));const e=Vo(n.label);void 0!==e&&(s=e)}return s},e.getEmptyAudioStreamTrack=Jr,e.getEmptyVideoStreamTrack=function(){return Ur||(Ur=Fr()),Ur.clone()},e.importKey=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{name:Xr},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"encrypt";return vt(this,void 0,void 0,(function*(){return crypto.subtle.importKey("raw",e,t,!1,"derive"===i?["deriveBits","deriveKey"]:["encrypt","decrypt"])}))},e.isBackupCodec=Gn,e.isBrowserSupported=function(){return mr()||fr()},e.isCodecEqual=zn,e.isE2EESupported=is,e.isInsertableStreamSupported=rs,e.isScriptTransformSupported=ns,e.isVideoFrame=function(e){return"type"in e},e.mimeTypeToVideoCodecString=cs,e.protocolVersion=9,e.ratchet=function(e,t){return vt(this,void 0,void 0,(function*(){const i=as(e.algorithm.name,t);return crypto.subtle.deriveBits(i,e,256)}))},e.setLogExtension=function(t){const i=a.methodFactory;a.methodFactory=(n,r,s)=>{const o=i(n,r,s),a=e.LogLevel[n],c=a>=r&&a<e.LogLevel.silent;return(e,i)=>{i?o(e,i):o(e),c&&t(a,e,i)}},a.setLevel(a.getLevel())},e.setLogLevel=function(e,t){t&&o.getLogger(t).setLevel(e);for(const t of Object.values(o.getLoggers()))t.setLevel(e)},e.supportsAV1=vr,e.supportsAdaptiveStream=function(){return void 0!==typeof ResizeObserver&&void 0!==typeof IntersectionObserver},e.supportsDynacast=function(){return mr()},e.supportsVP9=gr,e.version=qn,e.videoCodecs=Hn}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).LivekitClient={})}(this,(function(e){"use strict";function t(e,t){return t.forEach((function(t){t&&"string"!=typeof t&&!Array.isArray(t)&&Object.keys(t).forEach((function(i){if("default"!==i&&!(i in e)){var n=Object.getOwnPropertyDescriptor(t,i);Object.defineProperty(e,i,n.get?n:{enumerable:!0,get:function(){return t[i]}})}}))})),Object.freeze(e)}var i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var r={exports:{}};!function(e){var t,n;t=i,n=function(){var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),n=["trace","debug","info","warn","error"];function r(e,t){var i=e[t];if("function"==typeof i.bind)return i.bind(e);try{return Function.prototype.bind.call(i,e)}catch(t){return function(){return Function.prototype.apply.apply(i,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function o(t,i){for(var r=0;r<n.length;r++){var s=n[r];this[s]=r<t?e:this.methodFactory(s,t,i)}this.log=this.debug}function a(e,i,n){return function(){typeof console!==t&&(o.call(this,i,n),this[e].apply(this,arguments))}}function c(n,o,c){return function(n){return"debug"===n&&(n="log"),typeof console!==t&&("trace"===n&&i?s:void 0!==console[n]?r(console,n):void 0!==console.log?r(console,"log"):e)}(n)||a.apply(this,arguments)}function d(e,i,r){var s,a=this;i=null==i?"WARN":i;var d="loglevel";function u(){var e;if(typeof window!==t&&d){try{e=window.localStorage[d]}catch(e){}if(typeof e===t)try{var i=window.document.cookie,n=i.indexOf(encodeURIComponent(d)+"=");-1!==n&&(e=/^([^;]+)/.exec(i.slice(n))[1])}catch(e){}return void 0===a.levels[e]&&(e=void 0),e}}"string"==typeof e?d+=":"+e:"symbol"==typeof e&&(d=void 0),a.name=e,a.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},a.methodFactory=r||c,a.getLevel=function(){return s},a.setLevel=function(i,r){if("string"==typeof i&&void 0!==a.levels[i.toUpperCase()]&&(i=a.levels[i.toUpperCase()]),!("number"==typeof i&&i>=0&&i<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+i;if(s=i,!1!==r&&function(e){var i=(n[e]||"silent").toUpperCase();if(typeof window!==t&&d){try{return void(window.localStorage[d]=i)}catch(e){}try{window.document.cookie=encodeURIComponent(d)+"="+i+";"}catch(e){}}}(i),o.call(a,i,e),typeof console===t&&i<a.levels.SILENT)return"No console available for logging"},a.setDefaultLevel=function(e){i=e,u()||a.setLevel(e,!1)},a.resetLevel=function(){a.setLevel(i,!1),function(){if(typeof window!==t&&d){try{return void window.localStorage.removeItem(d)}catch(e){}try{window.document.cookie=encodeURIComponent(d)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch(e){}}}()},a.enableAll=function(e){a.setLevel(a.levels.TRACE,e)},a.disableAll=function(e){a.setLevel(a.levels.SILENT,e)};var l=u();null==l&&(l=i),a.setLevel(l,!1)}var u=new d,l={};u.getLogger=function(e){if("symbol"!=typeof e&&"string"!=typeof e||""===e)throw new TypeError("You must supply a name when creating a logger.");var t=l[e];return t||(t=l[e]=new d(e,u.getLevel(),u.methodFactory)),t};var h=typeof window!==t?window.log:void 0;return u.noConflict=function(){return typeof window!==t&&window.log===u&&(window.log=h),u},u.getLoggers=function(){return l},u.default=u,u},e.exports?e.exports=n():t.log=n()}(r);var s,o=r.exports;e.LogLevel=void 0,(s=e.LogLevel||(e.LogLevel={}))[s.trace=0]="trace",s[s.debug=1]="debug",s[s.info=2]="info",s[s.warn=3]="warn",s[s.error=4]="error",s[s.silent=5]="silent";const a=o.getLogger("livekit");function c(e,t){if(!e)throw new Error(t)}a.setDefaultLevel(e.LogLevel.info),o.getLogger("lk-e2ee");const d=34028234663852886e22,u=-34028234663852886e22,l=4294967295,h=2147483647,p=-2147483648;function m(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>h||e<p)throw new Error("invalid int 32: "+e)}function f(e){if("number"!=typeof e)throw new Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>l||e<0)throw new Error("invalid uint 32: "+e)}function v(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>d||e<u))throw new Error("invalid float 32: "+e)}const g=Symbol("@bufbuild/protobuf/enum-type");function y(e){const t=e[g];return c(t,"missing enum type on enum object"),t}function k(e,t,i,n){e[g]=b(t,i.map((t=>({no:t.no,name:t.name,localName:e[t.no]}))))}function b(e,t,i){const n=Object.create(null),r=Object.create(null),s=[];for(const e of t){const t=S(e);s.push(t),n[e.name]=t,r[e.no]=t}return{typeName:e,values:s,findName:e=>n[e],findNumber:e=>r[e]}}function T(e,t,i){const n={};for(const e of t){const t=S(e);n[t.localName]=t.no,n[t.no]=t.localName}return k(n,e,t),n}function S(e){return"localName"in e?e:Object.assign(Object.assign({},e),{localName:e.name})}class w{equals(e){return this.getType().runtime.util.equals(this.getType(),this,e)}clone(){return this.getType().runtime.util.clone(this)}fromBinary(e,t){const i=this.getType().runtime.bin,n=i.makeReadOptions(t);return i.readMessage(this,n.readerFactory(e),e.byteLength,n),this}fromJson(e,t){const i=this.getType(),n=i.runtime.json,r=n.makeReadOptions(t);return n.readMessage(i,e,r,this),this}fromJsonString(e,t){let i;try{i=JSON.parse(e)}catch(e){throw new Error("cannot decode ".concat(this.getType().typeName," from JSON: ").concat(e instanceof Error?e.message:String(e)))}return this.fromJson(i,t)}toBinary(e){const t=this.getType().runtime.bin,i=t.makeWriteOptions(e),n=i.writerFactory();return t.writeMessage(this,n,i),n.finish()}toJson(e){const t=this.getType().runtime.json,i=t.makeWriteOptions(e);return t.writeMessage(this,i)}toJsonString(e){var t;const i=this.toJson(e);return JSON.stringify(i,null,null!==(t=null==e?void 0:e.prettySpaces)&&void 0!==t?t:0)}toJSON(){return this.toJson({emitDefaultValues:!0})}getType(){return Object.getPrototypeOf(this).constructor}}var E;function C(){let e=0,t=0;for(let i=0;i<28;i+=7){let n=this.buf[this.pos++];if(e|=(127&n)<<i,0==(128&n))return this.assertBounds(),[e,t]}let i=this.buf[this.pos++];if(e|=(15&i)<<28,t=(112&i)>>4,0==(128&i))return this.assertBounds(),[e,t];for(let i=3;i<=31;i+=7){let n=this.buf[this.pos++];if(t|=(127&n)<<i,0==(128&n))return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function P(e,t,i){for(let n=0;n<28;n+=7){const r=e>>>n,s=!(r>>>7==0&&0==t),o=255&(s?128|r:r);if(i.push(o),!s)return}const n=e>>>28&15|(7&t)<<4,r=!(t>>3==0);if(i.push(255&(r?128|n:n)),r){for(let e=3;e<31;e+=7){const n=t>>>e,r=!(n>>>7==0),s=255&(r?128|n:n);if(i.push(s),!r)return}i.push(t>>>31&1)}}!function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"}(E||(E={}));const R=4294967296;function I(e){const t="-"===e[0];t&&(e=e.slice(1));const i=1e6;let n=0,r=0;function s(t,s){const o=Number(e.slice(t,s));r*=i,n=n*i+o,n>=R&&(r+=n/R|0,n%=R)}return s(-24,-18),s(-18,-12),s(-12,-6),s(-6),t?L(n,r):_(n,r)}function D(e,t){if(({lo:e,hi:t}=function(e,t){return{lo:e>>>0,hi:t>>>0}}(e,t)),t<=2097151)return String(R*t+e);const i=16777215&(e>>>24|t<<8),n=t>>16&65535;let r=(16777215&e)+6777216*i+6710656*n,s=i+8147497*n,o=2*n;const a=1e7;return r>=a&&(s+=Math.floor(r/a),r%=a),s>=a&&(o+=Math.floor(s/a),s%=a),o.toString()+N(s)+N(r)}function _(e,t){return{lo:0|e,hi:0|t}}function L(e,t){return t=~t,e?e=1+~e:t+=1,_(e,t)}const N=e=>{const t=String(e);return"0000000".slice(t.length)+t};function A(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let i=0;i<9;i++)t.push(127&e|128),e>>=7;t.push(1)}}function O(){let e=this.buf[this.pos++],t=127&e;if(0==(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<7,0==(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<14,0==(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<21,0==(128&e))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(15&e)<<28;for(let t=5;0!=(128&e)&&t<10;t++)e=this.buf[this.pos++];if(0!=(128&e))throw new Error("invalid varint");return this.assertBounds(),t>>>0}const M=function(){const e=new DataView(new ArrayBuffer(8));if("function"==typeof BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64&&("object"!=typeof process||"object"!=typeof process.env||"1"!==process.env.BUF_BIGINT_DISABLE)){const t=BigInt("-9223372036854775808"),i=BigInt("9223372036854775807"),n=BigInt("0"),r=BigInt("18446744073709551615");return{zero:BigInt(0),supported:!0,parse(e){const n="bigint"==typeof e?e:BigInt(e);if(n>i||n<t)throw new Error("int64 invalid: ".concat(e));return n},uParse(e){const t="bigint"==typeof e?e:BigInt(e);if(t>r||t<n)throw new Error("uint64 invalid: ".concat(e));return t},enc(t){return e.setBigInt64(0,this.parse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},uEnc(t){return e.setBigInt64(0,this.uParse(t),!0),{lo:e.getInt32(0,!0),hi:e.getInt32(4,!0)}},dec:(t,i)=>(e.setInt32(0,t,!0),e.setInt32(4,i,!0),e.getBigInt64(0,!0)),uDec:(t,i)=>(e.setInt32(0,t,!0),e.setInt32(4,i,!0),e.getBigUint64(0,!0))}}const t=e=>c(/^-?[0-9]+$/.test(e),"int64 invalid: ".concat(e)),i=e=>c(/^[0-9]+$/.test(e),"uint64 invalid: ".concat(e));return{zero:"0",supported:!1,parse:e=>("string"!=typeof e&&(e=e.toString()),t(e),e),uParse:e=>("string"!=typeof e&&(e=e.toString()),i(e),e),enc:e=>("string"!=typeof e&&(e=e.toString()),t(e),I(e)),uEnc:e=>("string"!=typeof e&&(e=e.toString()),i(e),I(e)),dec:(e,t)=>function(e,t){let i=_(e,t);const n=2147483648&i.hi;n&&(i=L(i.lo,i.hi));const r=D(i.lo,i.hi);return n?"-"+r:r}(e,t),uDec:(e,t)=>D(e,t)}}();var x;!function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(x||(x={}));class U{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),i=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],i),i+=this.chunks[e].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(f(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return m(e),A(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){v(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){f(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){m(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return m(e),A(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),n=M.enc(e);return i.setInt32(0,n.lo,!0),i.setInt32(4,n.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),i=new DataView(t.buffer),n=M.uEnc(e);return i.setInt32(0,n.lo,!0),i.setInt32(4,n.hi,!0),this.raw(t)}int64(e){let t=M.enc(e);return P(t.lo,t.hi,this.buf),this}sint64(e){let t=M.enc(e),i=t.hi>>31;return P(t.lo<<1^i,(t.hi<<1|t.lo>>>31)^i,this.buf),this}uint64(e){let t=M.uEnc(e);return P(t.lo,t.hi,this.buf),this}}class B{constructor(e,t){this.varint64=C,this.uint32=O,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder}tag(){let e=this.uint32(),t=e>>>3,i=7&e;if(t<=0||i<0||i>5)throw new Error("illegal tag: field no "+t+" wire type "+i);return[t,i]}skip(e){let t=this.pos;switch(e){case x.Varint:for(;128&this.buf[this.pos++];);break;case x.Bit64:this.pos+=4;case x.Bit32:this.pos+=4;break;case x.LengthDelimited:let t=this.uint32();this.pos+=t;break;case x.StartGroup:let i;for(;(i=this.tag()[1])!==x.EndGroup;)this.skip(i);break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return M.dec(...this.varint64())}uint64(){return M.uDec(...this.varint64())}sint64(){let[e,t]=this.varint64(),i=-(1&e);return e=(e>>>1|(1&t)<<31)^i,t=t>>>1^i,M.dec(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return M.uDec(this.sfixed32(),this.sfixed32())}sfixed64(){return M.dec(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}function F(e,t){return t instanceof w||!e.fieldWrapper?t:e.fieldWrapper.wrapField(t)}function J(e,t,i){if(t===i)return!0;if(e==E.BYTES){if(!(t instanceof Uint8Array&&i instanceof Uint8Array))return!1;if(t.length!==i.length)return!1;for(let e=0;e<t.length;e++)if(t[e]!==i[e])return!1;return!0}switch(e){case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return t==i}return!1}function j(e){switch(e){case E.BOOL:return!1;case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return M.zero;case E.DOUBLE:case E.FLOAT:return 0;case E.BYTES:return new Uint8Array(0);case E.STRING:return"";default:return 0}}function V(e,t){const i=void 0===t;let n=x.Varint,r=0===t;switch(e){case E.STRING:r=i||!t.length,n=x.LengthDelimited;break;case E.BOOL:r=!1===t;break;case E.DOUBLE:n=x.Bit64;break;case E.FLOAT:n=x.Bit32;break;case E.INT64:case E.UINT64:r=i||0==t;break;case E.FIXED64:r=i||0==t,n=x.Bit64;break;case E.BYTES:r=i||!t.byteLength,n=x.LengthDelimited;break;case E.FIXED32:case E.SFIXED32:n=x.Bit32;break;case E.SFIXED64:r=i||0==t,n=x.Bit64;break;case E.SINT64:r=i||0==t}return[n,E[e].toLowerCase(),i||r]}E.DOUBLE,E.FLOAT,E.INT64,E.UINT64,E.INT32,E.UINT32,E.BOOL,E.STRING,E.BYTES;const q=Symbol("@bufbuild/protobuf/unknown-fields"),K={readUnknownFields:!0,readerFactory:e=>new B(e)},W={writeUnknownFields:!0,writerFactory:()=>new U};function H(e){return e?Object.assign(Object.assign({},K),e):K}function G(e){return e?Object.assign(Object.assign({},W),e):W}function z(e,t,i){return t.getType().runtime.bin.readMessage(t,e,e.uint32(),i),t}function Q(e,t,i){const n=t.uint32(),r=t.pos+n;let s,o;for(;t.pos<r;){let[n]=t.tag();switch(n){case 1:s=Y(t,e.K);break;case 2:switch(e.V.kind){case"scalar":o=Y(t,e.V.T);break;case"enum":o=t.int32();break;case"message":o=z(t,new e.V.T,i)}}}if(void 0===s){let t=j(e.K);s=e.K==E.BOOL?t.toString():t}if("string"!=typeof s&&"number"!=typeof s&&(s=s.toString()),void 0===o)switch(e.V.kind){case"scalar":o=j(e.V.T);break;case"enum":o=0;break;case"message":o=new e.V.T}return[s,o]}function Y(e,t){switch(t){case E.STRING:return e.string();case E.BOOL:return e.bool();case E.DOUBLE:return e.double();case E.FLOAT:return e.float();case E.INT32:return e.int32();case E.INT64:return e.int64();case E.UINT64:return e.uint64();case E.FIXED64:return e.fixed64();case E.BYTES:return e.bytes();case E.FIXED32:return e.fixed32();case E.SFIXED32:return e.sfixed32();case E.SFIXED64:return e.sfixed64();case E.SINT64:return e.sint64();case E.UINT32:return e.uint32();case E.SINT32:return e.sint32()}}function X(e,t,i,n,r){e.tag(i.no,x.LengthDelimited),e.fork();let s=n;switch(i.K){case E.INT32:case E.FIXED32:case E.UINT32:case E.SFIXED32:case E.SINT32:s=Number.parseInt(n);break;case E.BOOL:c("true"==n||"false"==n),s="true"==n}switch($(e,i.K,1,s,!0),i.V.kind){case"scalar":$(e,i.V.T,2,r,!0);break;case"enum":$(e,E.INT32,2,r,!0);break;case"message":Z(e,t,i.V.T,2,r)}e.join()}function Z(e,t,i,n,r){if(void 0!==r){const s=F(i,r);e.tag(n,x.LengthDelimited).bytes(s.toBinary(t))}}function $(e,t,i,n,r){let[s,o,a]=V(t,n);a&&!r||e.tag(i,s)[o](n)}function ee(e,t,i,n){if(!n.length)return;e.tag(i,x.LengthDelimited).fork();let[,r]=V(t);for(let t=0;t<n.length;t++)e[r](n[t]);e.join()}let te="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ie=[];for(let e=0;e<te.length;e++)ie[te[e].charCodeAt(0)]=e;ie["-".charCodeAt(0)]=te.indexOf("+"),ie["_".charCodeAt(0)]=te.indexOf("/");const ne={dec(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let i,n=new Uint8Array(t),r=0,s=0,o=0;for(let t=0;t<e.length;t++){if(i=ie[e.charCodeAt(t)],void 0===i)switch(e[t]){case"=":s=0;case"\n":case"\r":case"\t":case" ":continue;default:throw Error("invalid base64 string.")}switch(s){case 0:o=i,s=1;break;case 1:n[r++]=o<<2|(48&i)>>4,o=i,s=2;break;case 2:n[r++]=(15&o)<<4|(60&i)>>2,o=i,s=3;break;case 3:n[r++]=(3&o)<<6|i,s=0}}if(1==s)throw Error("invalid base64 string.");return n.subarray(0,r)},enc(e){let t,i="",n=0,r=0;for(let s=0;s<e.length;s++)switch(t=e[s],n){case 0:i+=te[t>>2],r=(3&t)<<4,n=1;break;case 1:i+=te[r|t>>4],r=(15&t)<<2,n=2;break;case 2:i+=te[r|t>>6],i+=te[63&t],n=0}return n&&(i+=te[r],i+="=",1==n&&(i+="=")),i}},re={ignoreUnknownFields:!1},se={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0};function oe(e){return e?Object.assign(Object.assign({},re),e):re}function ae(e){return e?Object.assign(Object.assign({},se),e):se}function ce(e){if(null===e)return"null";switch(typeof e){case"object":return Array.isArray(e)?"array":"object";case"string":return e.length>100?"string":'"'.concat(e.split('"').join('\\"'),'"');default:return String(e)}}function de(e,t){switch(e){case E.DOUBLE:case E.FLOAT:if(null===t)return 0;if("NaN"===t)return Number.NaN;if("Infinity"===t)return Number.POSITIVE_INFINITY;if("-Infinity"===t)return Number.NEGATIVE_INFINITY;if(""===t)break;if("string"==typeof t&&t.trim().length!==t.length)break;if("string"!=typeof t&&"number"!=typeof t)break;const i=Number(t);if(Number.isNaN(i))break;if(!Number.isFinite(i))break;return e==E.FLOAT&&v(i),i;case E.INT32:case E.FIXED32:case E.SFIXED32:case E.SINT32:case E.UINT32:if(null===t)return 0;let n;if("number"==typeof t?n=t:"string"==typeof t&&t.length>0&&t.trim().length===t.length&&(n=Number(t)),void 0===n)break;return e==E.UINT32?f(n):m(n),n;case E.INT64:case E.SFIXED64:case E.SINT64:if(null===t)return M.zero;if("number"!=typeof t&&"string"!=typeof t)break;return M.parse(t);case E.FIXED64:case E.UINT64:if(null===t)return M.zero;if("number"!=typeof t&&"string"!=typeof t)break;return M.uParse(t);case E.BOOL:if(null===t)return!1;if("boolean"!=typeof t)break;return t;case E.STRING:if(null===t)return"";if("string"!=typeof t)break;try{encodeURIComponent(t)}catch(e){throw new Error("invalid UTF8")}return t;case E.BYTES:if(null===t||""===t)return new Uint8Array(0);if("string"!=typeof t)break;return ne.dec(t)}throw new Error}function ue(e,t,i){if(null===t)return 0;switch(typeof t){case"number":if(Number.isInteger(t))return t;break;case"string":const n=e.findName(t);if(n||i)return null==n?void 0:n.no}throw new Error("cannot decode enum ".concat(e.typeName," from JSON: ").concat(ce(t)))}function le(e,t,i,n){var r;if(void 0===t)return t;if(0===t&&!i)return;if(n)return t;if("google.protobuf.NullValue"==e.typeName)return null;const s=e.findNumber(t);return null!==(r=null==s?void 0:s.name)&&void 0!==r?r:t}function he(e,t,i){if(void 0!==t)switch(e){case E.INT32:case E.SFIXED32:case E.SINT32:case E.FIXED32:case E.UINT32:return c("number"==typeof t),0!=t||i?t:void 0;case E.FLOAT:case E.DOUBLE:return c("number"==typeof t),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":0!==t||i?t:void 0;case E.STRING:return c("string"==typeof t),t.length>0||i?t:void 0;case E.BOOL:return c("boolean"==typeof t),t||i?t:void 0;case E.UINT64:case E.FIXED64:case E.INT64:case E.SFIXED64:case E.SINT64:return c("bigint"==typeof t||"string"==typeof t||"number"==typeof t),i||0!=t?t.toString(10):void 0;case E.BYTES:return c(t instanceof Uint8Array),i||t.byteLength>0?ne.enc(t):void 0}}function pe(e){if(void 0===e)return e;if(e instanceof w)return e.clone();if(e instanceof Uint8Array){const t=new Uint8Array(e.byteLength);return t.set(e),t}return e}function me(e){return e instanceof Uint8Array?e:new Uint8Array(e)}class fe{constructor(e,t){this._fields=e,this._normalizer=t}findJsonName(e){if(!this.jsonNames){const e={};for(const t of this.list())e[t.jsonName]=e[t.name]=t;this.jsonNames=e}return this.jsonNames[e]}find(e){if(!this.numbers){const e={};for(const t of this.list())e[t.no]=t;this.numbers=e}return this.numbers[e]}list(){return this.all||(this.all=this._normalizer(this._fields)),this.all}byNumber(){return this.numbersAsc||(this.numbersAsc=this.list().concat().sort(((e,t)=>e.no-t.no))),this.numbersAsc}byMember(){if(!this.members){this.members=[];const e=this.members;let t;for(const i of this.list())i.oneof?i.oneof!==t&&(t=i.oneof,e.push(t)):e.push(i)}return this.members}}function ve(e,t){const i=ye(e);return t?i:we(Se(i))}const ge=ye;function ye(e){let t=!1;const i=[];for(let n=0;n<e.length;n++){let r=e.charAt(n);switch(r){case"_":t=!0;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":i.push(r),t=!1;break;default:t&&(t=!1,r=r.toUpperCase()),i.push(r)}}return i.join("")}const ke=new Set(["constructor","toString","toJSON","valueOf"]),be=new Set(["getType","clone","equals","fromBinary","fromJson","fromJsonString","toBinary","toJson","toJsonString","toObject"]),Te=e=>"".concat(e,"$"),Se=e=>be.has(e)?Te(e):e,we=e=>ke.has(e)?Te(e):e;class Ee{constructor(e){this.kind="oneof",this.repeated=!1,this.packed=!1,this.opt=!1,this.default=void 0,this.fields=[],this.name=e,this.localName=ve(e,!1)}addField(e){c(e.oneof===this,"field ".concat(e.name," not one of ").concat(this.name)),this.fields.push(e)}findField(e){if(!this._lookup){this._lookup=Object.create(null);for(let e=0;e<this.fields.length;e++)this._lookup[this.fields[e].localName]=this.fields[e]}return this._lookup[e]}}const Ce=(Pe="proto3",Re=function(e){const t=e(le,he);return{makeReadOptions:oe,makeWriteOptions:ae,readMessage(e,t,i,n){if(null==t||Array.isArray(t)||"object"!=typeof t)throw new Error("cannot decode message ".concat(e.typeName," from JSON: ").concat(this.debug(t)));n=null!=n?n:new e;const r={};for(const[s,o]of Object.entries(t)){const t=e.fields.findJsonName(s);if(!t){if(!i.ignoreUnknownFields)throw new Error("cannot decode message ".concat(e.typeName,' from JSON: key "').concat(s,'" is unknown'));continue}let a=t.localName,c=n;if(t.oneof){if(null===o&&"scalar"==t.kind)continue;const i=r[t.oneof.localName];if(i)throw new Error("cannot decode message ".concat(e.typeName,' from JSON: multiple keys for oneof "').concat(t.oneof.name,'" present: "').concat(i,'", "').concat(s,'"'));r[t.oneof.localName]=s,c=c[t.oneof.localName]={case:a},a="value"}if(t.repeated){if(null===o)continue;if(!Array.isArray(o))throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o)));const n=c[a];for(const r of o){if(null===r)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(r)));let s;switch(t.kind){case"message":s=t.T.fromJson(r,i);break;case"enum":if(s=ue(t.T,r,i.ignoreUnknownFields),void 0===s)continue;break;case"scalar":try{s=de(t.T,r)}catch(i){let n="cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(r));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}n.push(s)}}else if("map"==t.kind){if(null===o)continue;if(Array.isArray(o)||"object"!=typeof o)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o)));const n=c[a];for(const[r,s]of Object.entries(o)){if(null===s)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: map value null"));let a;switch(t.V.kind){case"message":a=t.V.T.fromJson(s,i);break;case"enum":if(a=ue(t.V.T,s,i.ignoreUnknownFields),void 0===a)continue;break;case"scalar":try{a=de(t.V.T,s)}catch(i){let n="cannot decode map value for field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}try{n[de(t.K,t.K==E.BOOL?"true"==r||"false"!=r&&r:r).toString()]=a}catch(i){let n="cannot decode map key for field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}}else switch(t.kind){case"message":const n=t.T;if(null===o&&"google.protobuf.Value"!=n.typeName){if(t.oneof)throw new Error("cannot decode field ".concat(e.typeName,".").concat(t.name,' from JSON: null is invalid for oneof field "').concat(s,'"'));continue}c[a]instanceof w?c[a].fromJson(o,i):(c[a]=n.fromJson(o,i),n.fieldWrapper&&!t.oneof&&(c[a]=n.fieldWrapper.unwrapField(c[a])));break;case"enum":const r=ue(t.T,o,i.ignoreUnknownFields);void 0!==r&&(c[a]=r);break;case"scalar":try{c[a]=de(t.T,o)}catch(i){let n="cannot decode field ".concat(e.typeName,".").concat(t.name," from JSON: ").concat(this.debug(o));throw i instanceof Error&&i.message.length>0&&(n+=": ".concat(i.message)),new Error(n)}}}return n},writeMessage(e,i){const n=e.getType(),r={};let s;try{for(const o of n.fields.byMember()){let n;if("oneof"==o.kind){const r=e[o.localName];if(void 0===r.value)continue;if(s=o.findField(r.case),!s)throw"oneof case not found: "+r.case;n=t(s,r.value,i)}else s=o,n=t(s,e[s.localName],i);void 0!==n&&(r[i.useProtoFieldName?s.name:s.jsonName]=n)}}catch(e){const t=s?"cannot encode field ".concat(n.typeName,".").concat(s.name," to JSON"):"cannot encode message ".concat(n.typeName," to JSON"),i=e instanceof Error?e.message:String(e);throw new Error(t+(i.length>0?": ".concat(i):""))}return r},readScalar:de,writeScalar:he,debug:ce}}(((e,t)=>function(i,n,r){if("map"==i.kind){const s={};switch(i.V.kind){case"scalar":for(const[e,r]of Object.entries(n)){const n=t(i.V.T,r,!0);c(void 0!==n),s[e.toString()]=n}break;case"message":for(const[e,t]of Object.entries(n))s[e.toString()]=t.toJson(r);break;case"enum":const o=i.V.T;for(const[t,i]of Object.entries(n)){c(void 0===i||"number"==typeof i);const n=e(o,i,!0,r.enumAsInteger);c(void 0!==n),s[t.toString()]=n}}return r.emitDefaultValues||Object.keys(s).length>0?s:void 0}if(i.repeated){const s=[];switch(i.kind){case"scalar":for(let e=0;e<n.length;e++)s.push(t(i.T,n[e],!0));break;case"enum":for(let t=0;t<n.length;t++)s.push(e(i.T,n[t],!0,r.enumAsInteger));break;case"message":for(let e=0;e<n.length;e++)s.push(F(i.T,n[e]).toJson(r))}return r.emitDefaultValues||s.length>0?s:void 0}switch(i.kind){case"scalar":return t(i.T,n,!!i.oneof||i.opt||r.emitDefaultValues);case"enum":return e(i.T,n,!!i.oneof||i.opt||r.emitDefaultValues,r.enumAsInteger);case"message":return void 0!==n?F(i.T,n).toJson(r):void 0}})),Ie=Object.assign(Object.assign({},{makeReadOptions:H,makeWriteOptions:G,listUnknownFields(e){var t;return null!==(t=e[q])&&void 0!==t?t:[]},discardUnknownFields(e){delete e[q]},writeUnknownFields(e,t){const i=e[q];if(i)for(const e of i)t.tag(e.no,e.wireType).raw(e.data)},onUnknownField(e,t,i,n){const r=e;Array.isArray(r[q])||(r[q]=[]),r[q].push({no:t,wireType:i,data:n})},readMessage(e,t,i,n){const r=e.getType(),s=void 0===i?t.len:t.pos+i;for(;t.pos<s;){const[i,s]=t.tag(),o=r.fields.find(i);if(!o){const r=t.skip(s);n.readUnknownFields&&this.onUnknownField(e,i,s,r);continue}let a=e,c=o.repeated,d=o.localName;switch(o.oneof&&(a=a[o.oneof.localName],a.case!=d&&delete a.value,a.case=d,d="value"),o.kind){case"scalar":case"enum":const e="enum"==o.kind?E.INT32:o.T;if(c){let i=a[d];if(s==x.LengthDelimited&&e!=E.STRING&&e!=E.BYTES){let n=t.uint32()+t.pos;for(;t.pos<n;)i.push(Y(t,e))}else i.push(Y(t,e))}else a[d]=Y(t,e);break;case"message":const i=o.T;c?a[d].push(z(t,new i,n)):a[d]instanceof w?z(t,a[d],n):(a[d]=z(t,new i,n),!i.fieldWrapper||o.oneof||o.repeated||(a[d]=i.fieldWrapper.unwrapField(a[d])));break;case"map":let[r,u]=Q(o,t,n);a[d][r]=u}}}}),{writeMessage(e,t,i){const n=e.getType();for(const r of n.fields.byNumber()){let n,s=r.repeated,o=r.localName;if(r.oneof){const t=e[r.oneof.localName];if(t.case!==o)continue;n=t.value}else n=e[o];switch(r.kind){case"scalar":case"enum":let e="enum"==r.kind?E.INT32:r.T;if(s)if(r.packed)ee(t,e,r.no,n);else for(const i of n)$(t,e,r.no,i,!0);else void 0!==n&&$(t,e,r.no,n,!!r.oneof||r.opt);break;case"message":if(s)for(const e of n)Z(t,i,r.T,r.no,e);else Z(t,i,r.T,r.no,n);break;case"map":for(const[e,s]of Object.entries(n))X(t,i,r,e,s)}}return i.writeUnknownFields&&this.writeUnknownFields(e,t),t}}),De=Object.assign(Object.assign({},{setEnumType:k,initPartial(e,t){if(void 0===e)return;const i=t.getType();for(const n of i.fields.byMember()){const i=n.localName,r=t,s=e;if(void 0!==s[i])switch(n.kind){case"oneof":const e=s[i].case;if(void 0===e)continue;const t=n.findField(e);let o=s[i].value;!t||"message"!=t.kind||o instanceof t.T?t&&"scalar"===t.kind&&t.T===E.BYTES&&(o=me(o)):o=new t.T(o),r[i]={case:e,value:o};break;case"scalar":case"enum":let a=s[i];n.T===E.BYTES&&(a=n.repeated?a.map(me):me(a)),r[i]=a;break;case"map":switch(n.V.kind){case"scalar":case"enum":if(n.V.T===E.BYTES)for(const[e,t]of Object.entries(s[i]))r[i][e]=me(t);else Object.assign(r[i],s[i]);break;case"message":const e=n.V.T;for(const t of Object.keys(s[i])){let n=s[i][t];e.fieldWrapper||(n=new e(n)),r[i][t]=n}}break;case"message":const c=n.T;if(n.repeated)r[i]=s[i].map((e=>e instanceof c?e:new c(e)));else if(void 0!==s[i]){const e=s[i];c.fieldWrapper?"google.protobuf.BytesValue"===c.typeName?r[i]=me(e):r[i]=e:r[i]=e instanceof c?e:new c(e)}}}},equals:(e,t,i)=>t===i||!(!t||!i)&&e.fields.byMember().every((e=>{const n=t[e.localName],r=i[e.localName];if(e.repeated){if(n.length!==r.length)return!1;switch(e.kind){case"message":return n.every(((t,i)=>e.T.equals(t,r[i])));case"scalar":return n.every(((t,i)=>J(e.T,t,r[i])));case"enum":return n.every(((e,t)=>J(E.INT32,e,r[t])))}throw new Error("repeated cannot contain ".concat(e.kind))}switch(e.kind){case"message":return e.T.equals(n,r);case"enum":return J(E.INT32,n,r);case"scalar":return J(e.T,n,r);case"oneof":if(n.case!==r.case)return!1;const t=e.findField(n.case);if(void 0===t)return!0;switch(t.kind){case"message":return t.T.equals(n.value,r.value);case"enum":return J(E.INT32,n.value,r.value);case"scalar":return J(t.T,n.value,r.value)}throw new Error("oneof cannot contain ".concat(t.kind));case"map":const i=Object.keys(n).concat(Object.keys(r));switch(e.V.kind){case"message":const t=e.V.T;return i.every((e=>t.equals(n[e],r[e])));case"enum":return i.every((e=>J(E.INT32,n[e],r[e])));case"scalar":const s=e.V.T;return i.every((e=>J(s,n[e],r[e])))}}})),clone(e){const t=e.getType(),i=new t,n=i;for(const i of t.fields.byMember()){const t=e[i.localName];let r;if(i.repeated)r=t.map(pe);else if("map"==i.kind){r=n[i.localName];for(const[e,i]of Object.entries(t))r[e]=pe(i)}else r="oneof"==i.kind?i.findField(t.case)?{case:t.case,value:pe(t.value)}:{case:void 0}:pe(t);n[i.localName]=r}return i}}),{newFieldList:e=>new fe(e,Je),initFields(e){for(const t of e.getType().fields.byMember()){if(t.opt)continue;const i=t.localName,n=e;if(t.repeated)n[i]=[];else switch(t.kind){case"oneof":n[i]={case:void 0};break;case"enum":n[i]=0;break;case"map":n[i]={};break;case"scalar":n[i]=j(t.T)}}}}),{syntax:Pe,json:Re,bin:Ie,util:De,makeMessageType(e,t,i){return function(e,t,i,n){var r;const s=null!==(r=null==n?void 0:n.localName)&&void 0!==r?r:t.substring(t.lastIndexOf(".")+1),o={[s]:function(t){e.util.initFields(this),e.util.initPartial(t,this)}}[s];return Object.setPrototypeOf(o.prototype,new w),Object.assign(o,{runtime:e,typeName:t,fields:e.util.newFieldList(i),fromBinary:(e,t)=>(new o).fromBinary(e,t),fromJson:(e,t)=>(new o).fromJson(e,t),fromJsonString:(e,t)=>(new o).fromJsonString(e,t),equals:(t,i)=>e.util.equals(o,t,i)}),o}(this,e,t,i)},makeEnum:T,makeEnumType:b,getEnumType:y});var Pe,Re,Ie,De,_e,Le,Ne,Ae,Oe,Me,xe,Ue,Be,Fe;function Je(e){var t,i,n;const r=[];let s;for(const o of"function"==typeof e?e():e){const e=o;if(e.localName=ve(o.name,void 0!==o.oneof),e.jsonName=null!==(t=o.jsonName)&&void 0!==t?t:ge(o.name),e.repeated=null!==(i=o.repeated)&&void 0!==i&&i,e.packed=null!==(n=o.packed)&&void 0!==n?n:"enum"==o.kind||"scalar"==o.kind&&o.T!=E.BYTES&&o.T!=E.STRING,void 0!==o.oneof){const t="string"==typeof o.oneof?o.oneof:o.oneof.name;s&&s.name==t||(s=new Ee(t)),e.oneof=s,s.addField(e)}r.push(e)}return r}class je extends w{constructor(e){super(),this.seconds=M.zero,this.nanos=0,Ce.util.initPartial(e,this)}fromJson(e,t){if("string"!=typeof e)throw new Error("cannot decode google.protobuf.Timestamp from JSON: ".concat(Ce.json.debug(e)));const i=e.match(/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(?:Z|\.([0-9]{3,9})Z|([+-][0-9][0-9]:[0-9][0-9]))$/);if(!i)throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");const n=Date.parse(i[1]+"-"+i[2]+"-"+i[3]+"T"+i[4]+":"+i[5]+":"+i[6]+(i[8]?i[8]:"Z"));if(Number.isNaN(n))throw new Error("cannot decode google.protobuf.Timestamp from JSON: invalid RFC 3339 string");if(n<Date.parse("0001-01-01T00:00:00Z")||n>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot decode message google.protobuf.Timestamp from JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");return this.seconds=M.parse(n/1e3),this.nanos=0,i[7]&&(this.nanos=parseInt("1"+i[7]+"0".repeat(9-i[7].length))-1e9),this}toJson(e){const t=1e3*Number(this.seconds);if(t<Date.parse("0001-01-01T00:00:00Z")||t>Date.parse("9999-12-31T23:59:59Z"))throw new Error("cannot encode google.protobuf.Timestamp to JSON: must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive");if(this.nanos<0)throw new Error("cannot encode google.protobuf.Timestamp to JSON: nanos must not be negative");let i="Z";if(this.nanos>0){const e=(this.nanos+1e9).toString().substring(1);i="000000"===e.substring(3)?"."+e.substring(0,3)+"Z":"000"===e.substring(6)?"."+e.substring(0,6)+"Z":"."+e+"Z"}return new Date(t).toISOString().replace(".000Z",i)}toDate(){return new Date(1e3*Number(this.seconds)+Math.ceil(this.nanos/1e6))}static now(){return je.fromDate(new Date)}static fromDate(e){const t=e.getTime();return new je({seconds:M.parse(Math.floor(t/1e3)),nanos:t%1e3*1e6})}static fromBinary(e,t){return(new je).fromBinary(e,t)}static fromJson(e,t){return(new je).fromJson(e,t)}static fromJsonString(e,t){return(new je).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(je,e,t)}}je.runtime=Ce,je.typeName="google.protobuf.Timestamp",je.fields=Ce.util.newFieldList((()=>[{no:1,name:"seconds",kind:"scalar",T:3},{no:2,name:"nanos",kind:"scalar",T:5}])),function(e){e[e.DEFAULT_AC=0]="DEFAULT_AC",e[e.OPUS=1]="OPUS",e[e.AAC=2]="AAC"}(_e||(_e={})),Ce.util.setEnumType(_e,"livekit.AudioCodec",[{no:0,name:"DEFAULT_AC"},{no:1,name:"OPUS"},{no:2,name:"AAC"}]),function(e){e[e.DEFAULT_VC=0]="DEFAULT_VC",e[e.H264_BASELINE=1]="H264_BASELINE",e[e.H264_MAIN=2]="H264_MAIN",e[e.H264_HIGH=3]="H264_HIGH",e[e.VP8=4]="VP8"}(Le||(Le={})),Ce.util.setEnumType(Le,"livekit.VideoCodec",[{no:0,name:"DEFAULT_VC"},{no:1,name:"H264_BASELINE"},{no:2,name:"H264_MAIN"},{no:3,name:"H264_HIGH"},{no:4,name:"VP8"}]),function(e){e[e.AUDIO=0]="AUDIO",e[e.VIDEO=1]="VIDEO",e[e.DATA=2]="DATA"}(Ne||(Ne={})),Ce.util.setEnumType(Ne,"livekit.TrackType",[{no:0,name:"AUDIO"},{no:1,name:"VIDEO"},{no:2,name:"DATA"}]),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.CAMERA=1]="CAMERA",e[e.MICROPHONE=2]="MICROPHONE",e[e.SCREEN_SHARE=3]="SCREEN_SHARE",e[e.SCREEN_SHARE_AUDIO=4]="SCREEN_SHARE_AUDIO"}(Ae||(Ae={})),Ce.util.setEnumType(Ae,"livekit.TrackSource",[{no:0,name:"UNKNOWN"},{no:1,name:"CAMERA"},{no:2,name:"MICROPHONE"},{no:3,name:"SCREEN_SHARE"},{no:4,name:"SCREEN_SHARE_AUDIO"}]),e.VideoQuality=void 0,(Oe=e.VideoQuality||(e.VideoQuality={}))[Oe.LOW=0]="LOW",Oe[Oe.MEDIUM=1]="MEDIUM",Oe[Oe.HIGH=2]="HIGH",Oe[Oe.OFF=3]="OFF",Ce.util.setEnumType(e.VideoQuality,"livekit.VideoQuality",[{no:0,name:"LOW"},{no:1,name:"MEDIUM"},{no:2,name:"HIGH"},{no:3,name:"OFF"}]),function(e){e[e.POOR=0]="POOR",e[e.GOOD=1]="GOOD",e[e.EXCELLENT=2]="EXCELLENT"}(Me||(Me={})),Ce.util.setEnumType(Me,"livekit.ConnectionQuality",[{no:0,name:"POOR"},{no:1,name:"GOOD"},{no:2,name:"EXCELLENT"}]),function(e){e[e.UNSET=0]="UNSET",e[e.DISABLED=1]="DISABLED",e[e.ENABLED=2]="ENABLED"}(xe||(xe={})),Ce.util.setEnumType(xe,"livekit.ClientConfigSetting",[{no:0,name:"UNSET"},{no:1,name:"DISABLED"},{no:2,name:"ENABLED"}]),e.DisconnectReason=void 0,(Ue=e.DisconnectReason||(e.DisconnectReason={}))[Ue.UNKNOWN_REASON=0]="UNKNOWN_REASON",Ue[Ue.CLIENT_INITIATED=1]="CLIENT_INITIATED",Ue[Ue.DUPLICATE_IDENTITY=2]="DUPLICATE_IDENTITY",Ue[Ue.SERVER_SHUTDOWN=3]="SERVER_SHUTDOWN",Ue[Ue.PARTICIPANT_REMOVED=4]="PARTICIPANT_REMOVED",Ue[Ue.ROOM_DELETED=5]="ROOM_DELETED",Ue[Ue.STATE_MISMATCH=6]="STATE_MISMATCH",Ue[Ue.JOIN_FAILURE=7]="JOIN_FAILURE",Ce.util.setEnumType(e.DisconnectReason,"livekit.DisconnectReason",[{no:0,name:"UNKNOWN_REASON"},{no:1,name:"CLIENT_INITIATED"},{no:2,name:"DUPLICATE_IDENTITY"},{no:3,name:"SERVER_SHUTDOWN"},{no:4,name:"PARTICIPANT_REMOVED"},{no:5,name:"ROOM_DELETED"},{no:6,name:"STATE_MISMATCH"},{no:7,name:"JOIN_FAILURE"}]),function(e){e[e.RR_UNKNOWN=0]="RR_UNKNOWN",e[e.RR_SIGNAL_DISCONNECTED=1]="RR_SIGNAL_DISCONNECTED",e[e.RR_PUBLISHER_FAILED=2]="RR_PUBLISHER_FAILED",e[e.RR_SUBSCRIBER_FAILED=3]="RR_SUBSCRIBER_FAILED",e[e.RR_SWITCH_CANDIDATE=4]="RR_SWITCH_CANDIDATE"}(Be||(Be={})),Ce.util.setEnumType(Be,"livekit.ReconnectReason",[{no:0,name:"RR_UNKNOWN"},{no:1,name:"RR_SIGNAL_DISCONNECTED"},{no:2,name:"RR_PUBLISHER_FAILED"},{no:3,name:"RR_SUBSCRIBER_FAILED"},{no:4,name:"RR_SWITCH_CANDIDATE"}]),function(e){e[e.SE_UNKNOWN=0]="SE_UNKNOWN",e[e.SE_CODEC_UNSUPPORTED=1]="SE_CODEC_UNSUPPORTED",e[e.SE_TRACK_NOTFOUND=2]="SE_TRACK_NOTFOUND"}(Fe||(Fe={})),Ce.util.setEnumType(Fe,"livekit.SubscriptionError",[{no:0,name:"SE_UNKNOWN"},{no:1,name:"SE_CODEC_UNSUPPORTED"},{no:2,name:"SE_TRACK_NOTFOUND"}]);let Ve=class e extends w{constructor(e){super(),this.sid="",this.name="",this.emptyTimeout=0,this.maxParticipants=0,this.creationTime=M.zero,this.turnPassword="",this.enabledCodecs=[],this.metadata="",this.numParticipants=0,this.numPublishers=0,this.activeRecording=!1,Ce.util.initPartial(e,this)}static fromBinary(t,i){return(new e).fromBinary(t,i)}static fromJson(t,i){return(new e).fromJson(t,i)}static fromJsonString(t,i){return(new e).fromJsonString(t,i)}static equals(t,i){return Ce.util.equals(e,t,i)}};Ve.runtime=Ce,Ve.typeName="livekit.Room",Ve.fields=Ce.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"empty_timeout",kind:"scalar",T:13},{no:4,name:"max_participants",kind:"scalar",T:13},{no:5,name:"creation_time",kind:"scalar",T:3},{no:6,name:"turn_password",kind:"scalar",T:9},{no:7,name:"enabled_codecs",kind:"message",T:qe,repeated:!0},{no:8,name:"metadata",kind:"scalar",T:9},{no:9,name:"num_participants",kind:"scalar",T:13},{no:11,name:"num_publishers",kind:"scalar",T:13},{no:10,name:"active_recording",kind:"scalar",T:8},{no:12,name:"playout_delay",kind:"message",T:Ke}]));class qe extends w{constructor(e){super(),this.mime="",this.fmtpLine="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new qe).fromBinary(e,t)}static fromJson(e,t){return(new qe).fromJson(e,t)}static fromJsonString(e,t){return(new qe).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(qe,e,t)}}qe.runtime=Ce,qe.typeName="livekit.Codec",qe.fields=Ce.util.newFieldList((()=>[{no:1,name:"mime",kind:"scalar",T:9},{no:2,name:"fmtp_line",kind:"scalar",T:9}]));class Ke extends w{constructor(e){super(),this.enabled=!1,this.min=0,this.max=0,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Ke).fromBinary(e,t)}static fromJson(e,t){return(new Ke).fromJson(e,t)}static fromJsonString(e,t){return(new Ke).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Ke,e,t)}}Ke.runtime=Ce,Ke.typeName="livekit.PlayoutDelay",Ke.fields=Ce.util.newFieldList((()=>[{no:1,name:"enabled",kind:"scalar",T:8},{no:2,name:"min",kind:"scalar",T:13},{no:3,name:"max",kind:"scalar",T:13}]));class We extends w{constructor(e){super(),this.canSubscribe=!1,this.canPublish=!1,this.canPublishData=!1,this.canPublishSources=[],this.hidden=!1,this.recorder=!1,this.canUpdateMetadata=!1,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new We).fromBinary(e,t)}static fromJson(e,t){return(new We).fromJson(e,t)}static fromJsonString(e,t){return(new We).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(We,e,t)}}We.runtime=Ce,We.typeName="livekit.ParticipantPermission",We.fields=Ce.util.newFieldList((()=>[{no:1,name:"can_subscribe",kind:"scalar",T:8},{no:2,name:"can_publish",kind:"scalar",T:8},{no:3,name:"can_publish_data",kind:"scalar",T:8},{no:9,name:"can_publish_sources",kind:"enum",T:Ce.getEnumType(Ae),repeated:!0},{no:7,name:"hidden",kind:"scalar",T:8},{no:8,name:"recorder",kind:"scalar",T:8},{no:10,name:"can_update_metadata",kind:"scalar",T:8}]));class He extends w{constructor(e){super(),this.sid="",this.identity="",this.state=Ge.JOINING,this.tracks=[],this.metadata="",this.joinedAt=M.zero,this.name="",this.version=0,this.region="",this.isPublisher=!1,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new He).fromBinary(e,t)}static fromJson(e,t){return(new He).fromJson(e,t)}static fromJsonString(e,t){return(new He).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(He,e,t)}}var Ge,ze,Qe,Ye,Xe;He.runtime=Ce,He.typeName="livekit.ParticipantInfo",He.fields=Ce.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"identity",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:Ce.getEnumType(Ge)},{no:4,name:"tracks",kind:"message",T:et,repeated:!0},{no:5,name:"metadata",kind:"scalar",T:9},{no:6,name:"joined_at",kind:"scalar",T:3},{no:9,name:"name",kind:"scalar",T:9},{no:10,name:"version",kind:"scalar",T:13},{no:11,name:"permission",kind:"message",T:We},{no:12,name:"region",kind:"scalar",T:9},{no:13,name:"is_publisher",kind:"scalar",T:8}])),function(e){e[e.JOINING=0]="JOINING",e[e.JOINED=1]="JOINED",e[e.ACTIVE=2]="ACTIVE",e[e.DISCONNECTED=3]="DISCONNECTED"}(Ge||(Ge={})),Ce.util.setEnumType(Ge,"livekit.ParticipantInfo.State",[{no:0,name:"JOINING"},{no:1,name:"JOINED"},{no:2,name:"ACTIVE"},{no:3,name:"DISCONNECTED"}]);class Ze extends w{constructor(e){super(),Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Ze).fromBinary(e,t)}static fromJson(e,t){return(new Ze).fromJson(e,t)}static fromJsonString(e,t){return(new Ze).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Ze,e,t)}}Ze.runtime=Ce,Ze.typeName="livekit.Encryption",Ze.fields=Ce.util.newFieldList((()=>[])),function(e){e[e.NONE=0]="NONE",e[e.GCM=1]="GCM",e[e.CUSTOM=2]="CUSTOM"}(ze||(ze={})),Ce.util.setEnumType(ze,"livekit.Encryption.Type",[{no:0,name:"NONE"},{no:1,name:"GCM"},{no:2,name:"CUSTOM"}]);class $e extends w{constructor(e){super(),this.mimeType="",this.mid="",this.cid="",this.layers=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new $e).fromBinary(e,t)}static fromJson(e,t){return(new $e).fromJson(e,t)}static fromJsonString(e,t){return(new $e).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals($e,e,t)}}$e.runtime=Ce,$e.typeName="livekit.SimulcastCodecInfo",$e.fields=Ce.util.newFieldList((()=>[{no:1,name:"mime_type",kind:"scalar",T:9},{no:2,name:"mid",kind:"scalar",T:9},{no:3,name:"cid",kind:"scalar",T:9},{no:4,name:"layers",kind:"message",T:tt,repeated:!0}]));class et extends w{constructor(e){super(),this.sid="",this.type=Ne.AUDIO,this.name="",this.muted=!1,this.width=0,this.height=0,this.simulcast=!1,this.disableDtx=!1,this.source=Ae.UNKNOWN,this.layers=[],this.mimeType="",this.mid="",this.codecs=[],this.stereo=!1,this.disableRed=!1,this.encryption=ze.NONE,this.stream="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new et).fromBinary(e,t)}static fromJson(e,t){return(new et).fromJson(e,t)}static fromJsonString(e,t){return(new et).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(et,e,t)}}et.runtime=Ce,et.typeName="livekit.TrackInfo",et.fields=Ce.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"type",kind:"enum",T:Ce.getEnumType(Ne)},{no:3,name:"name",kind:"scalar",T:9},{no:4,name:"muted",kind:"scalar",T:8},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"simulcast",kind:"scalar",T:8},{no:8,name:"disable_dtx",kind:"scalar",T:8},{no:9,name:"source",kind:"enum",T:Ce.getEnumType(Ae)},{no:10,name:"layers",kind:"message",T:tt,repeated:!0},{no:11,name:"mime_type",kind:"scalar",T:9},{no:12,name:"mid",kind:"scalar",T:9},{no:13,name:"codecs",kind:"message",T:$e,repeated:!0},{no:14,name:"stereo",kind:"scalar",T:8},{no:15,name:"disable_red",kind:"scalar",T:8},{no:16,name:"encryption",kind:"enum",T:Ce.getEnumType(ze)},{no:17,name:"stream",kind:"scalar",T:9}]));class tt extends w{constructor(t){super(),this.quality=e.VideoQuality.LOW,this.width=0,this.height=0,this.bitrate=0,this.ssrc=0,Ce.util.initPartial(t,this)}static fromBinary(e,t){return(new tt).fromBinary(e,t)}static fromJson(e,t){return(new tt).fromJson(e,t)}static fromJsonString(e,t){return(new tt).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(tt,e,t)}}tt.runtime=Ce,tt.typeName="livekit.VideoLayer",tt.fields=Ce.util.newFieldList((()=>[{no:1,name:"quality",kind:"enum",T:Ce.getEnumType(e.VideoQuality)},{no:2,name:"width",kind:"scalar",T:13},{no:3,name:"height",kind:"scalar",T:13},{no:4,name:"bitrate",kind:"scalar",T:13},{no:5,name:"ssrc",kind:"scalar",T:13}]));class it extends w{constructor(t){super(),this.kind=e.DataPacket_Kind.RELIABLE,this.value={case:void 0},Ce.util.initPartial(t,this)}static fromBinary(e,t){return(new it).fromBinary(e,t)}static fromJson(e,t){return(new it).fromJson(e,t)}static fromJsonString(e,t){return(new it).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(it,e,t)}}it.runtime=Ce,it.typeName="livekit.DataPacket",it.fields=Ce.util.newFieldList((()=>[{no:1,name:"kind",kind:"enum",T:Ce.getEnumType(e.DataPacket_Kind)},{no:2,name:"user",kind:"message",T:st,oneof:"value"},{no:3,name:"speaker",kind:"message",T:nt,oneof:"value"}])),e.DataPacket_Kind=void 0,(Qe=e.DataPacket_Kind||(e.DataPacket_Kind={}))[Qe.RELIABLE=0]="RELIABLE",Qe[Qe.LOSSY=1]="LOSSY",Ce.util.setEnumType(e.DataPacket_Kind,"livekit.DataPacket.Kind",[{no:0,name:"RELIABLE"},{no:1,name:"LOSSY"}]);class nt extends w{constructor(e){super(),this.speakers=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new nt).fromBinary(e,t)}static fromJson(e,t){return(new nt).fromJson(e,t)}static fromJsonString(e,t){return(new nt).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(nt,e,t)}}nt.runtime=Ce,nt.typeName="livekit.ActiveSpeakerUpdate",nt.fields=Ce.util.newFieldList((()=>[{no:1,name:"speakers",kind:"message",T:rt,repeated:!0}]));class rt extends w{constructor(e){super(),this.sid="",this.level=0,this.active=!1,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new rt).fromBinary(e,t)}static fromJson(e,t){return(new rt).fromJson(e,t)}static fromJsonString(e,t){return(new rt).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(rt,e,t)}}rt.runtime=Ce,rt.typeName="livekit.SpeakerInfo",rt.fields=Ce.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"level",kind:"scalar",T:2},{no:3,name:"active",kind:"scalar",T:8}]));class st extends w{constructor(e){super(),this.participantSid="",this.payload=new Uint8Array(0),this.destinationSids=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new st).fromBinary(e,t)}static fromJson(e,t){return(new st).fromJson(e,t)}static fromJsonString(e,t){return(new st).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(st,e,t)}}st.runtime=Ce,st.typeName="livekit.UserPacket",st.fields=Ce.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"payload",kind:"scalar",T:12},{no:3,name:"destination_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"topic",kind:"scalar",T:9,opt:!0}]));class ot extends w{constructor(e){super(),this.participantSid="",this.trackSids=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new ot).fromBinary(e,t)}static fromJson(e,t){return(new ot).fromJson(e,t)}static fromJsonString(e,t){return(new ot).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(ot,e,t)}}ot.runtime=Ce,ot.typeName="livekit.ParticipantTracks",ot.fields=Ce.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sids",kind:"scalar",T:9,repeated:!0}]));class at extends w{constructor(e){super(),this.edition=Ye.Standard,this.version="",this.protocol=0,this.region="",this.nodeId="",this.debugInfo="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new at).fromBinary(e,t)}static fromJson(e,t){return(new at).fromJson(e,t)}static fromJsonString(e,t){return(new at).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(at,e,t)}}at.runtime=Ce,at.typeName="livekit.ServerInfo",at.fields=Ce.util.newFieldList((()=>[{no:1,name:"edition",kind:"enum",T:Ce.getEnumType(Ye)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"region",kind:"scalar",T:9},{no:5,name:"node_id",kind:"scalar",T:9},{no:6,name:"debug_info",kind:"scalar",T:9}])),function(e){e[e.Standard=0]="Standard",e[e.Cloud=1]="Cloud"}(Ye||(Ye={})),Ce.util.setEnumType(Ye,"livekit.ServerInfo.Edition",[{no:0,name:"Standard"},{no:1,name:"Cloud"}]);class ct extends w{constructor(e){super(),this.sdk=Xe.UNKNOWN,this.version="",this.protocol=0,this.os="",this.osVersion="",this.deviceModel="",this.browser="",this.browserVersion="",this.address="",this.network="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new ct).fromBinary(e,t)}static fromJson(e,t){return(new ct).fromJson(e,t)}static fromJsonString(e,t){return(new ct).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(ct,e,t)}}ct.runtime=Ce,ct.typeName="livekit.ClientInfo",ct.fields=Ce.util.newFieldList((()=>[{no:1,name:"sdk",kind:"enum",T:Ce.getEnumType(Xe)},{no:2,name:"version",kind:"scalar",T:9},{no:3,name:"protocol",kind:"scalar",T:5},{no:4,name:"os",kind:"scalar",T:9},{no:5,name:"os_version",kind:"scalar",T:9},{no:6,name:"device_model",kind:"scalar",T:9},{no:7,name:"browser",kind:"scalar",T:9},{no:8,name:"browser_version",kind:"scalar",T:9},{no:9,name:"address",kind:"scalar",T:9},{no:10,name:"network",kind:"scalar",T:9}])),function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.JS=1]="JS",e[e.SWIFT=2]="SWIFT",e[e.ANDROID=3]="ANDROID",e[e.FLUTTER=4]="FLUTTER",e[e.GO=5]="GO",e[e.UNITY=6]="UNITY",e[e.REACT_NATIVE=7]="REACT_NATIVE",e[e.RUST=8]="RUST"}(Xe||(Xe={})),Ce.util.setEnumType(Xe,"livekit.ClientInfo.SDK",[{no:0,name:"UNKNOWN"},{no:1,name:"JS"},{no:2,name:"SWIFT"},{no:3,name:"ANDROID"},{no:4,name:"FLUTTER"},{no:5,name:"GO"},{no:6,name:"UNITY"},{no:7,name:"REACT_NATIVE"},{no:8,name:"RUST"}]);class dt extends w{constructor(e){super(),this.resumeConnection=xe.UNSET,this.forceRelay=xe.UNSET,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new dt).fromBinary(e,t)}static fromJson(e,t){return(new dt).fromJson(e,t)}static fromJsonString(e,t){return(new dt).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(dt,e,t)}}dt.runtime=Ce,dt.typeName="livekit.ClientConfiguration",dt.fields=Ce.util.newFieldList((()=>[{no:1,name:"video",kind:"message",T:ut},{no:2,name:"screen",kind:"message",T:ut},{no:3,name:"resume_connection",kind:"enum",T:Ce.getEnumType(xe)},{no:4,name:"disabled_codecs",kind:"message",T:lt},{no:5,name:"force_relay",kind:"enum",T:Ce.getEnumType(xe)}]));class ut extends w{constructor(e){super(),this.hardwareEncoder=xe.UNSET,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new ut).fromBinary(e,t)}static fromJson(e,t){return(new ut).fromJson(e,t)}static fromJsonString(e,t){return(new ut).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(ut,e,t)}}ut.runtime=Ce,ut.typeName="livekit.VideoConfiguration",ut.fields=Ce.util.newFieldList((()=>[{no:1,name:"hardware_encoder",kind:"enum",T:Ce.getEnumType(xe)}]));class lt extends w{constructor(e){super(),this.codecs=[],this.publish=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new lt).fromBinary(e,t)}static fromJson(e,t){return(new lt).fromJson(e,t)}static fromJsonString(e,t){return(new lt).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(lt,e,t)}}lt.runtime=Ce,lt.typeName="livekit.DisabledCodecs",lt.fields=Ce.util.newFieldList((()=>[{no:1,name:"codecs",kind:"message",T:qe,repeated:!0},{no:2,name:"publish",kind:"message",T:qe,repeated:!0}]));class ht extends w{constructor(e){super(),this.duration=0,this.packets=0,this.packetRate=0,this.bytes=M.zero,this.headerBytes=M.zero,this.bitrate=0,this.packetsLost=0,this.packetLossRate=0,this.packetLossPercentage=0,this.packetsDuplicate=0,this.packetDuplicateRate=0,this.bytesDuplicate=M.zero,this.headerBytesDuplicate=M.zero,this.bitrateDuplicate=0,this.packetsPadding=0,this.packetPaddingRate=0,this.bytesPadding=M.zero,this.headerBytesPadding=M.zero,this.bitratePadding=0,this.packetsOutOfOrder=0,this.frames=0,this.frameRate=0,this.jitterCurrent=0,this.jitterMax=0,this.gapHistogram={},this.nacks=0,this.nackAcks=0,this.nackMisses=0,this.nackRepeated=0,this.plis=0,this.firs=0,this.rttCurrent=0,this.rttMax=0,this.keyFrames=0,this.layerLockPlis=0,this.sampleRate=0,this.driftMs=0,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new ht).fromBinary(e,t)}static fromJson(e,t){return(new ht).fromJson(e,t)}static fromJsonString(e,t){return(new ht).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(ht,e,t)}}ht.runtime=Ce,ht.typeName="livekit.RTPStats",ht.fields=Ce.util.newFieldList((()=>[{no:1,name:"start_time",kind:"message",T:je},{no:2,name:"end_time",kind:"message",T:je},{no:3,name:"duration",kind:"scalar",T:1},{no:4,name:"packets",kind:"scalar",T:13},{no:5,name:"packet_rate",kind:"scalar",T:1},{no:6,name:"bytes",kind:"scalar",T:4},{no:39,name:"header_bytes",kind:"scalar",T:4},{no:7,name:"bitrate",kind:"scalar",T:1},{no:8,name:"packets_lost",kind:"scalar",T:13},{no:9,name:"packet_loss_rate",kind:"scalar",T:1},{no:10,name:"packet_loss_percentage",kind:"scalar",T:2},{no:11,name:"packets_duplicate",kind:"scalar",T:13},{no:12,name:"packet_duplicate_rate",kind:"scalar",T:1},{no:13,name:"bytes_duplicate",kind:"scalar",T:4},{no:40,name:"header_bytes_duplicate",kind:"scalar",T:4},{no:14,name:"bitrate_duplicate",kind:"scalar",T:1},{no:15,name:"packets_padding",kind:"scalar",T:13},{no:16,name:"packet_padding_rate",kind:"scalar",T:1},{no:17,name:"bytes_padding",kind:"scalar",T:4},{no:41,name:"header_bytes_padding",kind:"scalar",T:4},{no:18,name:"bitrate_padding",kind:"scalar",T:1},{no:19,name:"packets_out_of_order",kind:"scalar",T:13},{no:20,name:"frames",kind:"scalar",T:13},{no:21,name:"frame_rate",kind:"scalar",T:1},{no:22,name:"jitter_current",kind:"scalar",T:1},{no:23,name:"jitter_max",kind:"scalar",T:1},{no:24,name:"gap_histogram",kind:"map",K:5,V:{kind:"scalar",T:13}},{no:25,name:"nacks",kind:"scalar",T:13},{no:37,name:"nack_acks",kind:"scalar",T:13},{no:26,name:"nack_misses",kind:"scalar",T:13},{no:38,name:"nack_repeated",kind:"scalar",T:13},{no:27,name:"plis",kind:"scalar",T:13},{no:28,name:"last_pli",kind:"message",T:je},{no:29,name:"firs",kind:"scalar",T:13},{no:30,name:"last_fir",kind:"message",T:je},{no:31,name:"rtt_current",kind:"scalar",T:13},{no:32,name:"rtt_max",kind:"scalar",T:13},{no:33,name:"key_frames",kind:"scalar",T:13},{no:34,name:"last_key_frame",kind:"message",T:je},{no:35,name:"layer_lock_plis",kind:"scalar",T:13},{no:36,name:"last_layer_lock_pli",kind:"message",T:je},{no:42,name:"sample_rate",kind:"scalar",T:1},{no:43,name:"drift_ms",kind:"scalar",T:1}]));class pt extends w{constructor(e){super(),this.unixMicro=M.zero,this.ticks=0,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new pt).fromBinary(e,t)}static fromJson(e,t){return(new pt).fromJson(e,t)}static fromJsonString(e,t){return(new pt).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(pt,e,t)}}pt.runtime=Ce,pt.typeName="livekit.TimedVersion",pt.fields=Ce.util.newFieldList((()=>[{no:1,name:"unix_micro",kind:"scalar",T:3},{no:2,name:"ticks",kind:"scalar",T:5}]));const mt=7e3,ft=[0,300,1200,2700,4800,mt,mt,mt,mt,mt];class vt{constructor(e){this._retryDelays=void 0!==e?[...e]:ft}nextRetryDelayInMs(e){if(e.retryCount>=this._retryDelays.length)return null;const t=this._retryDelays[e.retryCount];return e.retryCount<=1?t:t+1e3*Math.random()}}function gt(e,t,i,n){return new(i||(i=Promise))((function(r,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}c((n=n.apply(e,t||[])).next())}))}function yt(e){var t="function"==typeof Symbol&&Symbol.iterator,i=t&&e[t],n=0;if(i)return i.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function kt(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,i=e[Symbol.asyncIterator];return i?i.call(e):(e=yt(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(i){t[i]=e[i]&&function(t){return new Promise((function(n,r){(function(e,t,i,n){Promise.resolve(n).then((function(t){e({value:t,done:i})}),t)})(n,r,(t=e[i](t)).done,t.value)}))}}}var bt,Tt={exports:{}},St="object"==typeof Reflect?Reflect:null,wt=St&&"function"==typeof St.apply?St.apply:function(e,t,i){return Function.prototype.apply.call(e,t,i)};bt=St&&"function"==typeof St.ownKeys?St.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var Et=Number.isNaN||function(e){return e!=e};function Ct(){Ct.init.call(this)}Tt.exports=Ct,Tt.exports.once=function(e,t){return new Promise((function(i,n){function r(i){e.removeListener(t,s),n(i)}function s(){"function"==typeof e.removeListener&&e.removeListener("error",r),i([].slice.call(arguments))}Mt(e,t,s,{once:!0}),"error"!==t&&function(e,t,i){"function"==typeof e.on&&Mt(e,"error",t,i)}(e,r,{once:!0})}))},Ct.EventEmitter=Ct,Ct.prototype._events=void 0,Ct.prototype._eventsCount=0,Ct.prototype._maxListeners=void 0;var Pt=10;function Rt(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function It(e){return void 0===e._maxListeners?Ct.defaultMaxListeners:e._maxListeners}function Dt(e,t,i,n){var r,s,o,a;if(Rt(i),void 0===(s=e._events)?(s=e._events=Object.create(null),e._eventsCount=0):(void 0!==s.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),s=e._events),o=s[t]),void 0===o)o=s[t]=i,++e._eventsCount;else if("function"==typeof o?o=s[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),(r=It(e))>0&&o.length>r&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,console&&console.warn&&console.warn(a)}return e}function _t(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Lt(e,t,i){var n={fired:!1,wrapFn:void 0,target:e,type:t,listener:i},r=_t.bind(n);return r.listener=i,n.wrapFn=r,r}function Nt(e,t,i){var n=e._events;if(void 0===n)return[];var r=n[t];return void 0===r?[]:"function"==typeof r?i?[r.listener||r]:[r]:i?function(e){for(var t=new Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(r):Ot(r,r.length)}function At(e){var t=this._events;if(void 0!==t){var i=t[e];if("function"==typeof i)return 1;if(void 0!==i)return i.length}return 0}function Ot(e,t){for(var i=new Array(t),n=0;n<t;++n)i[n]=e[n];return i}function Mt(e,t,i,n){if("function"==typeof e.on)n.once?e.once(t,i):e.on(t,i);else{if("function"!=typeof e.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof e);e.addEventListener(t,(function r(s){n.once&&e.removeEventListener(t,r),i(s)}))}}Object.defineProperty(Ct,"defaultMaxListeners",{enumerable:!0,get:function(){return Pt},set:function(e){if("number"!=typeof e||e<0||Et(e))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+e+".");Pt=e}}),Ct.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Ct.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||Et(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this},Ct.prototype.getMaxListeners=function(){return It(this)},Ct.prototype.emit=function(e){for(var t=[],i=1;i<arguments.length;i++)t.push(arguments[i]);var n="error"===e,r=this._events;if(void 0!==r)n=n&&void 0===r.error;else if(!n)return!1;if(n){var s;if(t.length>0&&(s=t[0]),s instanceof Error)throw s;var o=new Error("Unhandled error."+(s?" ("+s.message+")":""));throw o.context=s,o}var a=r[e];if(void 0===a)return!1;if("function"==typeof a)wt(a,this,t);else{var c=a.length,d=Ot(a,c);for(i=0;i<c;++i)wt(d[i],this,t)}return!0},Ct.prototype.addListener=function(e,t){return Dt(this,e,t,!1)},Ct.prototype.on=Ct.prototype.addListener,Ct.prototype.prependListener=function(e,t){return Dt(this,e,t,!0)},Ct.prototype.once=function(e,t){return Rt(t),this.on(e,Lt(this,e,t)),this},Ct.prototype.prependOnceListener=function(e,t){return Rt(t),this.prependListener(e,Lt(this,e,t)),this},Ct.prototype.removeListener=function(e,t){var i,n,r,s,o;if(Rt(t),void 0===(n=this._events))return this;if(void 0===(i=n[e]))return this;if(i===t||i.listener===t)0==--this._eventsCount?this._events=Object.create(null):(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(r=-1,s=i.length-1;s>=0;s--)if(i[s]===t||i[s].listener===t){o=i[s].listener,r=s;break}if(r<0)return this;0===r?i.shift():function(e,t){for(;t+1<e.length;t++)e[t]=e[t+1];e.pop()}(i,r),1===i.length&&(n[e]=i[0]),void 0!==n.removeListener&&this.emit("removeListener",e,o||t)}return this},Ct.prototype.off=Ct.prototype.removeListener,Ct.prototype.removeAllListeners=function(e){var t,i,n;if(void 0===(i=this._events))return this;if(void 0===i.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==i[e]&&(0==--this._eventsCount?this._events=Object.create(null):delete i[e]),this;if(0===arguments.length){var r,s=Object.keys(i);for(n=0;n<s.length;++n)"removeListener"!==(r=s[n])&&this.removeAllListeners(r);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(void 0!==t)for(n=t.length-1;n>=0;n--)this.removeListener(e,t[n]);return this},Ct.prototype.listeners=function(e){return Nt(this,e,!0)},Ct.prototype.rawListeners=function(e){return Nt(this,e,!1)},Ct.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):At.call(e,t)},Ct.prototype.listenerCount=At,Ct.prototype.eventNames=function(){return this._eventsCount>0?bt(this._events):[]};var xt=Tt.exports;let Ut=!0,Bt=!0;function Ft(e,t,i){const n=e.match(t);return n&&n.length>=i&&parseInt(n[i],10)}function Jt(e,t,i){if(!e.RTCPeerConnection)return;const n=e.RTCPeerConnection.prototype,r=n.addEventListener;n.addEventListener=function(e,n){if(e!==t)return r.apply(this,arguments);const s=e=>{const t=i(e);t&&(n.handleEvent?n.handleEvent(t):n(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(n,s),r.apply(this,[e,s])};const s=n.removeEventListener;n.removeEventListener=function(e,i){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(i))return s.apply(this,arguments);const n=this._eventMap[t].get(i);return this._eventMap[t].delete(i),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,n])},Object.defineProperty(n,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function jt(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Ut=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function Vt(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(Bt=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function qt(){if("object"==typeof window){if(Ut)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function Kt(e,t){Bt&&console.warn(e+" is deprecated, please use "+t+" instead.")}function Wt(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ht(e){return Wt(e)?Object.keys(e).reduce((function(t,i){const n=Wt(e[i]),r=n?Ht(e[i]):e[i],s=n&&!Object.keys(r).length;return void 0===r||s?t:Object.assign(t,{[i]:r})}),{}):e}function Gt(e,t,i){t&&!i.has(t.id)&&(i.set(t.id,t),Object.keys(t).forEach((n=>{n.endsWith("Id")?Gt(e,e.get(t[n]),i):n.endsWith("Ids")&&t[n].forEach((t=>{Gt(e,e.get(t),i)}))})))}function zt(e,t,i){const n=i?"outbound-rtp":"inbound-rtp",r=new Map;if(null===t)return r;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((i=>{i.type===n&&i.trackId===t.id&&Gt(e,i,r)}))})),r}const Qt=qt;function Yt(e,t){const i=e&&e.navigator;if(!i.mediaDevices)return;const n=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((i=>{if("require"===i||"advanced"===i||"mediaSource"===i)return;const n="object"==typeof e[i]?e[i]:{ideal:e[i]};void 0!==n.exact&&"number"==typeof n.exact&&(n.min=n.max=n.exact);const r=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==n.ideal){t.optional=t.optional||[];let e={};"number"==typeof n.ideal?(e[r("min",i)]=n.ideal,t.optional.push(e),e={},e[r("max",i)]=n.ideal,t.optional.push(e)):(e[r("",i)]=n.ideal,t.optional.push(e))}void 0!==n.exact&&"number"!=typeof n.exact?(t.mandatory=t.mandatory||{},t.mandatory[r("",i)]=n.exact):["min","max"].forEach((e=>{void 0!==n[e]&&(t.mandatory=t.mandatory||{},t.mandatory[r(e,i)]=n[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},r=function(e,r){if(t.version>=61)return r(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=n(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!i.mediaDevices.getSupportedConstraints||!i.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return i.mediaDevices.enumerateDevices().then((i=>{let o=(i=i.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&i.length&&t.includes("back")&&(o=i[i.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=n(e.video),Qt("chrome: "+JSON.stringify(e)),r(e)}))}e.video=n(e.video)}return Qt("chrome: "+JSON.stringify(e)),r(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(i.getUserMedia=function(e,t,n){r(e,(e=>{i.webkitGetUserMedia(e,t,(e=>{n&&n(s(e))}))}))}.bind(i),i.mediaDevices.getUserMedia){const e=i.mediaDevices.getUserMedia.bind(i.mediaDevices);i.mediaDevices.getUserMedia=function(t){return r(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function Xt(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function Zt(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===i.track.id)):{track:i.track};const r=new Event("track");r.track=i.track,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)})),t.stream.getTracks().forEach((i=>{let n;n=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===i.id)):{track:i};const r=new Event("track");r.track=i,r.receiver=n,r.transceiver={receiver:n},r.streams=[t.stream],this.dispatchEvent(r)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else Jt(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function $t(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){let r=i.apply(this,arguments);return r||(r=t(this,e),this._senders.push(r)),r};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){n.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function ei(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,i,n]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const r=function(e){const t={};return e.result().forEach((e=>{const i={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{i[t]=e.stat(t)})),t[i.id]=i})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const n=function(e){i(s(r(e)))};return t.apply(this,[n,e])}return new Promise(((e,i)=>{t.apply(this,[function(t){e(s(r(t)))},i])})).then(i,n)}}function ti(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>zt(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Jt(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>zt(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,i,n;return this.getSenders().forEach((i=>{i.track===e&&(t?n=!0:t=i)})),this.getReceivers().forEach((t=>(t.track===e&&(i?n=!0:i=t),t.track===e))),n||t&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function ii(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){if(!i)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const n=t.apply(this,arguments);return this._shimmedLocalStreams[i.id]?-1===this._shimmedLocalStreams[i.id].indexOf(n)&&this._shimmedLocalStreams[i.id].push(n):this._shimmedLocalStreams[i.id]=[i,n],n};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();i.apply(this,arguments);const n=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(n)};const n=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],n.apply(this,arguments)};const r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const i=this._shimmedLocalStreams[t].indexOf(e);-1!==i&&this._shimmedLocalStreams[t].splice(i,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),r.apply(this,arguments)}}function ni(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return ii(e);const i=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=i.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const i=new e.MediaStream(t.getTracks());this._streams[t.id]=i,this._reverseStreams[i.id]=t,t=i}n.apply(this,[t])};const r=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(r.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:i})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},r.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,i){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const n=[].slice.call(arguments,1);if(1!==n.length||!n[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const r=this._streams[i.id];if(r)r.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const n=new e.MediaStream([t]);this._streams[i.id]=n,this._reverseStreams[n.id]=i,this.addStream(n)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?i.apply(this,[t=>{const i=s(this,t);e[0].apply(null,[i])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):i.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=n[t]}));const o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let i=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const n=e._reverseStreams[t],r=e._streams[n.id];i=i.replace(new RegExp(n.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:i})}(this,arguments[0]),o.apply(this,arguments)):o.apply(this,arguments)};const a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=a.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((i=>{this._streams[i].getTracks().find((t=>e.track===t))&&(t=this._streams[i])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function ri(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}))}function si(e,t){Jt(e,"negotiationneeded",(e=>{const i=e.target;if(!(t.version<72||i.getConfiguration&&"plan-b"===i.getConfiguration().sdpSemantics)||"stable"===i.signalingState)return e}))}var oi=Object.freeze({__proto__:null,fixNegotiationNeeded:si,shimAddTrackRemoveTrack:ni,shimAddTrackRemoveTrackWithNative:ii,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(i){return t(i).then((t=>{const n=i.video&&i.video.width,r=i.video&&i.video.height,s=i.video&&i.video.frameRate;return i.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},n&&(i.video.mandatory.maxWidth=n),r&&(i.video.mandatory.maxHeight=r),e.navigator.mediaDevices.getUserMedia(i)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))},shimGetSendersWithDtmf:$t,shimGetStats:ei,shimGetUserMedia:Yt,shimMediaStream:Xt,shimOnTrack:Zt,shimPeerConnection:ri,shimSenderReceiverGetStats:ti});function ai(e,t){const i=e&&e.navigator,n=e&&e.MediaStreamTrack;if(i.getUserMedia=function(e,t,n){Kt("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),i.mediaDevices.getUserMedia(e).then(t,n)},!(t.version>55&&"autoGainControl"in i.mediaDevices.getSupportedConstraints())){const e=function(e,t,i){t in e&&!(i in e)&&(e[i]=e[t],delete e[t])},t=i.mediaDevices.getUserMedia.bind(i.mediaDevices);if(i.mediaDevices.getUserMedia=function(i){return"object"==typeof i&&"object"==typeof i.audio&&(i=JSON.parse(JSON.stringify(i)),e(i.audio,"autoGainControl","mozAutoGainControl"),e(i.audio,"noiseSuppression","mozNoiseSuppression")),t(i)},n&&n.prototype.getSettings){const t=n.prototype.getSettings;n.prototype.getSettings=function(){const i=t.apply(this,arguments);return e(i,"mozAutoGainControl","autoGainControl"),e(i,"mozNoiseSuppression","noiseSuppression"),i}}if(n&&n.prototype.applyConstraints){const t=n.prototype.applyConstraints;n.prototype.applyConstraints=function(i){return"audio"===this.kind&&"object"==typeof i&&(i=JSON.parse(JSON.stringify(i)),e(i,"autoGainControl","mozAutoGainControl"),e(i,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[i])}}}}function ci(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function di(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const i=e.RTCPeerConnection.prototype[t],n={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),i.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=n[t]}));const i={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,s]=arguments;return n.apply(this,[e||null]).then((e=>{if(t.version<53&&!r)try{e.forEach((e=>{e.type=i[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,n)=>{e.set(n,Object.assign({},t,{type:i[t.type]||t.type}))}))}return e})).then(r,s)}}function ui(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const i=e.RTCPeerConnection.prototype.addTrack;i&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=i.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function li(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),Jt(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function hi(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){Kt("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function pi(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function mi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const i=e.length>0;i&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const n=t.apply(this,arguments);if(i){const{sender:t}=n,i=t.getParameters();(!("encodings"in i)||1===i.encodings.length&&0===Object.keys(i.encodings[0]).length)&&(i.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(i).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return n})}function fi(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function vi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function gi(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var yi=Object.freeze({__proto__:null,shimAddTransceiver:mi,shimCreateAnswer:gi,shimCreateOffer:vi,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(i){if(!i||!i.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===i.video?i.video={mediaSource:t}:i.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(i)})},shimGetParameters:fi,shimGetUserMedia:ai,shimOnTrack:ci,shimPeerConnection:di,shimRTCDataChannel:pi,shimReceiverGetStats:li,shimRemoveStream:hi,shimSenderGetStats:ui});function ki(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((i=>t.call(this,i,e))),e.getVideoTracks().forEach((i=>t.call(this,i,e)))},e.RTCPeerConnection.prototype.addTrack=function(e){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return n&&n.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const i=e.getTracks();this.getSenders().forEach((e=>{i.includes(e.track)&&this.removeTrack(e)}))})}}function bi(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const i=new Event("addstream");i.stream=t,e.dispatchEvent(i)}))}),t.apply(e,arguments)}}}function Ti(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,i=t.createOffer,n=t.createAnswer,r=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const n=arguments.length>=2?arguments[2]:arguments[0],r=i.apply(this,[n]);return t?(r.then(e,t),Promise.resolve()):r},t.createAnswer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],r=n.apply(this,[i]);return t?(r.then(e,t),Promise.resolve()):r};let a=function(e,t,i){const n=r.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n};t.setLocalDescription=a,a=function(e,t,i){const n=s.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.setRemoteDescription=a,a=function(e,t,i){const n=o.apply(this,[e]);return i?(n.then(t,i),Promise.resolve()):n},t.addIceCandidate=a}function Si(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,i=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>i(wi(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,i,n){t.mediaDevices.getUserMedia(e).then(i,n)}.bind(t))}function wi(e){return e&&void 0!==e.video?Object.assign({},e,{video:Ht(e.video)}):e}function Ei(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,i){if(e&&e.iceServers){const t=[];for(let i=0;i<e.iceServers.length;i++){let n=e.iceServers[i];void 0===n.urls&&n.url?(Kt("RTCIceServer.url","RTCIceServer.urls"),n=JSON.parse(JSON.stringify(n)),n.urls=n.url,delete n.url,t.push(n)):t.push(e.iceServers[i])}e.iceServers=t}return new t(e,i)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Ci(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Pi(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const i=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":"recvonly"===i.direction&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):!0!==e.offerToReceiveVideo||i||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function Ri(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var Ii=Object.freeze({__proto__:null,shimAudioContext:Ri,shimCallbacksAPI:Ti,shimConstraints:wi,shimCreateOfferLegacy:Pi,shimGetUserMedia:Si,shimLocalStreamsAPI:ki,shimRTCIceServerUrls:Ei,shimRemoteStreamsAPI:bi,shimTrackEventTransceiver:Ci}),Di={exports:{}};!function(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},t.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},t.getDescription=function(e){const i=t.splitSections(e);return i&&i[0]},t.getMediaSections=function(e){const i=t.splitSections(e);return i.shift(),i},t.matchPrefix=function(e,i){return t.splitLines(e).filter((e=>0===e.indexOf(i)))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const i={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":i.relatedAddress=t[e+1];break;case"rport":i.relatedPort=parseInt(t[e+1],10);break;case"tcptype":i.tcpType=t[e+1];break;case"ufrag":i.ufrag=t[e+1],i.usernameFragment=t[e+1];break;default:void 0===i[t[e]]&&(i[t[e]]=t[e+1])}return i},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const i=e.component;"rtp"===i?t.push(1):"rtcp"===i?t.push(2):t.push(i),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const n=e.type;return t.push("typ"),t.push(n),"host"!==n&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const i={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),i.name=t[0],i.clockRate=parseInt(t[1],10),i.channels=3===t.length?parseInt(t[2],10):1,i.numChannels=i.channels,i},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const i=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==i?"/"+i:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let i;const n=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<n.length;e++)i=n[e].trim().split("="),t[i[0].trim()]=i[1];return t},t.writeFmtp=function(e){let t="",i=e.payloadType;if(void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const n=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?n.push(t+"="+e.parameters[t]):n.push(t)})),t+="a=fmtp:"+i+" "+n.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",i=e.payloadType;return void 0!==e.preferredPayloadType&&(i=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+i+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),i={ssrc:parseInt(e.substring(7,t),10)},n=e.indexOf(":",t);return n>-1?(i.attribute=e.substring(t+1,n),i.value=e.substring(n+1)):i.attribute=e.substring(t+1),i},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},t.getMid=function(e){const i=t.matchPrefix(e,"a=mid:")[0];if(i)return i.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,i){return{role:"auto",fingerprints:t.matchPrefix(e+i,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let i="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{i+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),i},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,i){return t.matchPrefix(e+i,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,i){const n=t.matchPrefix(e+i,"a=ice-ufrag:")[0],r=t.matchPrefix(e+i,"a=ice-pwd:")[0];return n&&r?{usernameFragment:n.substring(12),password:r.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const i={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=t.splitLines(e)[0].split(" ");i.profile=n[2];for(let r=3;r<n.length;r++){const s=n[r],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){const n=t.parseRtpMap(o),r=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(n.parameters=r.length?t.parseFmtp(r[0]):{},n.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),i.codecs.push(n),n.name.toUpperCase()){case"RED":case"ULPFEC":i.fecMechanisms.push(n.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach((e=>{i.headerExtensions.push(t.parseExtmap(e))}));const r=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return i.codecs.forEach((e=>{r.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),i},t.writeRtpDescription=function(e,i){let n="";n+="m="+e+" ",n+=i.codecs.length>0?"9":"0",n+=" "+(i.profile||"UDP/TLS/RTP/SAVPF")+" ",n+=i.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",i.codecs.forEach((e=>{n+=t.writeRtpMap(e),n+=t.writeFmtp(e),n+=t.writeRtcpFb(e)}));let r=0;return i.codecs.forEach((e=>{e.maxptime>r&&(r=e.maxptime)})),r>0&&(n+="a=maxptime:"+r+"\r\n"),i.headerExtensions&&i.headerExtensions.forEach((e=>{n+=t.writeExtmap(e)})),n},t.parseRtpEncodingParameters=function(e){const i=[],n=t.parseRtpParameters(e),r=-1!==n.fecMechanisms.indexOf("RED"),s=-1!==n.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),a=o.length>0&&o[0].ssrc;let c;const d=t.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));d.length>0&&d[0].length>1&&d[0][0]===a&&(c=d[0][1]),n.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&c&&(t.rtx={ssrc:c}),i.push(t),r&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:s?"red+ulpfec":"red"},i.push(t))}})),0===i.length&&a&&i.push({ssrc:a});let u=t.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substring(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substring(5),10)*.95-16e3:void 0,i.forEach((e=>{e.maxBitrate=u}))),i},t.parseRtcpParameters=function(e){const i={},n=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];n&&(i.cname=n.value,i.ssrc=n.ssrc);const r=t.matchPrefix(e,"a=rtcp-rsize");i.reducedSize=r.length>0,i.compound=0===r.length;const s=t.matchPrefix(e,"a=rtcp-mux");return i.mux=s.length>0,i},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let i;const n=t.matchPrefix(e,"a=msid:");if(1===n.length)return i=n[0].substring(7).split(" "),{stream:i[0],track:i[1]};const r=t.matchPrefix(e,"a=ssrc:").map((e=>t.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return r.length>0?(i=r[0].value.split(" "),{stream:i[0],track:i[1]}):void 0},t.parseSctpDescription=function(e){const i=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");let r;n.length>0&&(r=parseInt(n[0].substring(19),10)),isNaN(r)&&(r=65536);const s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substring(12),10),protocol:i.fmt,maxMessageSize:r};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:r}}},t.writeSctpDescription=function(e,t){let i=[];return i="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&i.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),i.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,i,n){let r;const s=void 0!==i?i:2;r=e||t.generateSessionId();return"v=0\r\no="+(n||"thisisadapterortc")+" "+r+" "+s+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,i){const n=t.splitLines(e);for(let e=0;e<n.length;e++)switch(n[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[e].substring(2)}return i?t.getDirection(i):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const i=t.splitLines(e)[0].substring(2).split(" ");return{kind:i[0],port:parseInt(i[1],10),protocol:i[2],fmt:i.slice(3).join(" ")}},t.parseOLine=function(e){const i=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:i[0],sessionId:i[1],sessionVersion:parseInt(i[2],10),netType:i[3],addressType:i[4],address:i[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const i=t.splitLines(e);for(let e=0;e<i.length;e++)if(i[e].length<2||"="!==i[e].charAt(1))return!1;return!0},e.exports=t}(Di);var _i=Di.exports,Li=n(_i),Ni=t({__proto__:null,default:Li},[_i]);function Ai(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const i=new t(e),n=Li.parseCandidate(e.candidate);for(const e in n)e in i||Object.defineProperty(i,e,{value:n[e]});return i.toJSON=function(){return{candidate:i.candidate,sdpMid:i.sdpMid,sdpMLineIndex:i.sdpMLineIndex,usernameFragment:i.usernameFragment}},i}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,Jt(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function Oi(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||Jt(e,"icecandidate",(e=>{if(e.candidate){const t=Li.parseCandidate(e.candidate.candidate);"relay"===t.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[t.priority>>24])}return e}))}function Mi(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const t=Li.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=Li.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const i=parseInt(t[1],10);return i!=i?-1:i}(arguments[0]),i=function(e){let i=65536;return"firefox"===t.browser&&(i=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),i}(e),n=function(e,i){let n=65536;"firefox"===t.browser&&57===t.version&&(n=65535);const r=Li.matchPrefix(e.sdp,"a=max-message-size:");return r.length>0?n=parseInt(r[0].substring(19),10):"firefox"===t.browser&&-1!==i&&(n=2147483637),n}(arguments[0],e);let r;r=0===i&&0===n?Number.POSITIVE_INFINITY:0===i||0===n?Math.max(i,n):Math.min(i,n);const s={};Object.defineProperty(s,"maxMessageSize",{get:()=>r}),this._sctp=s}return i.apply(this,arguments)}}function xi(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const i=e.send;e.send=function(){const n=arguments[0],r=n.length||n.size||n.byteLength;if("open"===e.readyState&&t.sctp&&r>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return i.apply(e,arguments)}}const i=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=i.apply(this,arguments);return t(e,this),e},Jt(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Ui(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const i=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const i=new Event("connectionstatechange",e);t.dispatchEvent(i)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),i.apply(this,arguments)}}))}function Bi(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const i=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const i=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:i}):t.sdp=i}return i.apply(this,arguments)}}function Fi(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const i=e.RTCPeerConnection.prototype.addIceCandidate;i&&0!==i.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():i.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function Ji(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const i=e.RTCPeerConnection.prototype.setLocalDescription;i&&0!==i.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return i.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return i.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>i.apply(this,[e])))})}var ji,Vi,qi,Ki,Wi=Object.freeze({__proto__:null,removeExtmapAllowMixed:Bi,shimAddIceCandidateNullOrEmpty:Fi,shimConnectionState:Ui,shimMaxMessageSize:Mi,shimParameterlessSetLocalDescription:Ji,shimRTCIceCandidate:Ai,shimRTCIceCandidateRelayProtocol:Oi,shimSendThrowTypeError:xi});!function(){let{window:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{shimChrome:!0,shimFirefox:!0,shimSafari:!0};const i=qt,n=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator||!e.navigator.userAgent)return t.browser="Not a browser.",t;const{navigator:i}=e;if(i.mozGetUserMedia)t.browser="firefox",t.version=Ft(i.userAgent,/Firefox\/(\d+)\./,1);else if(i.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=Ft(i.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!i.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=Ft(i.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),r={browserDetails:n,commonShim:Wi,extractVersion:Ft,disableLog:jt,disableWarnings:Vt,sdp:Ni};switch(n.browser){case"chrome":if(!oi||!ri||!t.shimChrome)return i("Chrome shim is not included in this adapter release."),r;if(null===n.version)return i("Chrome shim can not determine version, not shimming."),r;i("adapter.js shimming chrome."),r.browserShim=oi,Fi(e,n),Ji(e),Yt(e,n),Xt(e),ri(e,n),Zt(e),ni(e,n),$t(e),ei(e),ti(e),si(e,n),Ai(e),Oi(e),Ui(e),Mi(e,n),xi(e),Bi(e,n);break;case"firefox":if(!yi||!di||!t.shimFirefox)return i("Firefox shim is not included in this adapter release."),r;i("adapter.js shimming firefox."),r.browserShim=yi,Fi(e,n),Ji(e),ai(e,n),di(e,n),ci(e),hi(e),ui(e),li(e),pi(e),mi(e),fi(e),vi(e),gi(e),Ai(e),Ui(e),Mi(e,n),xi(e);break;case"safari":if(!Ii||!t.shimSafari)return i("Safari shim is not included in this adapter release."),r;i("adapter.js shimming safari."),r.browserShim=Ii,Fi(e,n),Ji(e),Ei(e),Pi(e),Ti(e),ki(e),bi(e),Ci(e),Si(e),Ri(e),Ai(e),Oi(e),Mi(e,n),xi(e),Bi(e,n);break;default:i("Unsupported browser!")}}({window:"undefined"==typeof window?void 0:window}),function(e){e[e.PUBLISHER=0]="PUBLISHER",e[e.SUBSCRIBER=1]="SUBSCRIBER"}(ji||(ji={})),Ce.util.setEnumType(ji,"livekit.SignalTarget",[{no:0,name:"PUBLISHER"},{no:1,name:"SUBSCRIBER"}]),function(e){e[e.ACTIVE=0]="ACTIVE",e[e.PAUSED=1]="PAUSED"}(Vi||(Vi={})),Ce.util.setEnumType(Vi,"livekit.StreamState",[{no:0,name:"ACTIVE"},{no:1,name:"PAUSED"}]),function(e){e[e.UDP=0]="UDP",e[e.TCP=1]="TCP",e[e.TLS=2]="TLS"}(qi||(qi={})),Ce.util.setEnumType(qi,"livekit.CandidateProtocol",[{no:0,name:"UDP"},{no:1,name:"TCP"},{no:2,name:"TLS"}]);class Hi extends w{constructor(e){super(),this.message={case:void 0},Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Hi).fromBinary(e,t)}static fromJson(e,t){return(new Hi).fromJson(e,t)}static fromJsonString(e,t){return(new Hi).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Hi,e,t)}}Hi.runtime=Ce,Hi.typeName="livekit.SignalRequest",Hi.fields=Ce.util.newFieldList((()=>[{no:1,name:"offer",kind:"message",T:nn,oneof:"message"},{no:2,name:"answer",kind:"message",T:nn,oneof:"message"},{no:3,name:"trickle",kind:"message",T:Yi,oneof:"message"},{no:4,name:"add_track",kind:"message",T:Qi,oneof:"message"},{no:5,name:"mute",kind:"message",T:Xi,oneof:"message"},{no:6,name:"subscription",kind:"message",T:sn,oneof:"message"},{no:7,name:"track_setting",kind:"message",T:on,oneof:"message"},{no:8,name:"leave",kind:"message",T:an,oneof:"message"},{no:10,name:"update_layers",kind:"message",T:cn,oneof:"message"},{no:11,name:"subscription_permission",kind:"message",T:Tn,oneof:"message"},{no:12,name:"sync_state",kind:"message",T:wn,oneof:"message"},{no:13,name:"simulate",kind:"message",T:Cn,oneof:"message"},{no:14,name:"ping",kind:"scalar",T:3,oneof:"message"},{no:15,name:"update_metadata",kind:"message",T:dn,oneof:"message"},{no:16,name:"ping_req",kind:"message",T:Pn,oneof:"message"}]));class Gi extends w{constructor(e){super(),this.message={case:void 0},Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Gi).fromBinary(e,t)}static fromJson(e,t){return(new Gi).fromJson(e,t)}static fromJsonString(e,t){return(new Gi).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Gi,e,t)}}Gi.runtime=Ce,Gi.typeName="livekit.SignalResponse",Gi.fields=Ce.util.newFieldList((()=>[{no:1,name:"join",kind:"message",T:Zi,oneof:"message"},{no:2,name:"answer",kind:"message",T:nn,oneof:"message"},{no:3,name:"offer",kind:"message",T:nn,oneof:"message"},{no:4,name:"trickle",kind:"message",T:Yi,oneof:"message"},{no:5,name:"update",kind:"message",T:rn,oneof:"message"},{no:6,name:"track_published",kind:"message",T:en,oneof:"message"},{no:8,name:"leave",kind:"message",T:an,oneof:"message"},{no:9,name:"mute",kind:"message",T:Xi,oneof:"message"},{no:10,name:"speakers_changed",kind:"message",T:ln,oneof:"message"},{no:11,name:"room_update",kind:"message",T:hn,oneof:"message"},{no:12,name:"connection_quality",kind:"message",T:mn,oneof:"message"},{no:13,name:"stream_state_update",kind:"message",T:vn,oneof:"message"},{no:14,name:"subscribed_quality_update",kind:"message",T:kn,oneof:"message"},{no:15,name:"subscription_permission_update",kind:"message",T:Sn,oneof:"message"},{no:16,name:"refresh_token",kind:"scalar",T:9,oneof:"message"},{no:17,name:"track_unpublished",kind:"message",T:tn,oneof:"message"},{no:18,name:"pong",kind:"scalar",T:3,oneof:"message"},{no:19,name:"reconnect",kind:"message",T:$i,oneof:"message"},{no:20,name:"pong_resp",kind:"message",T:Rn,oneof:"message"},{no:21,name:"subscription_response",kind:"message",T:_n,oneof:"message"}]));class zi extends w{constructor(e){super(),this.codec="",this.cid="",this.enableSimulcastLayers=!1,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new zi).fromBinary(e,t)}static fromJson(e,t){return(new zi).fromJson(e,t)}static fromJsonString(e,t){return(new zi).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(zi,e,t)}}zi.runtime=Ce,zi.typeName="livekit.SimulcastCodec",zi.fields=Ce.util.newFieldList((()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"cid",kind:"scalar",T:9},{no:3,name:"enable_simulcast_layers",kind:"scalar",T:8}]));class Qi extends w{constructor(e){super(),this.cid="",this.name="",this.type=Ne.AUDIO,this.width=0,this.height=0,this.muted=!1,this.disableDtx=!1,this.source=Ae.UNKNOWN,this.layers=[],this.simulcastCodecs=[],this.sid="",this.stereo=!1,this.disableRed=!1,this.encryption=ze.NONE,this.stream="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Qi).fromBinary(e,t)}static fromJson(e,t){return(new Qi).fromJson(e,t)}static fromJsonString(e,t){return(new Qi).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Qi,e,t)}}Qi.runtime=Ce,Qi.typeName="livekit.AddTrackRequest",Qi.fields=Ce.util.newFieldList((()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9},{no:3,name:"type",kind:"enum",T:Ce.getEnumType(Ne)},{no:4,name:"width",kind:"scalar",T:13},{no:5,name:"height",kind:"scalar",T:13},{no:6,name:"muted",kind:"scalar",T:8},{no:7,name:"disable_dtx",kind:"scalar",T:8},{no:8,name:"source",kind:"enum",T:Ce.getEnumType(Ae)},{no:9,name:"layers",kind:"message",T:tt,repeated:!0},{no:10,name:"simulcast_codecs",kind:"message",T:zi,repeated:!0},{no:11,name:"sid",kind:"scalar",T:9},{no:12,name:"stereo",kind:"scalar",T:8},{no:13,name:"disable_red",kind:"scalar",T:8},{no:14,name:"encryption",kind:"enum",T:Ce.getEnumType(ze)},{no:15,name:"stream",kind:"scalar",T:9}]));class Yi extends w{constructor(e){super(),this.candidateInit="",this.target=ji.PUBLISHER,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Yi).fromBinary(e,t)}static fromJson(e,t){return(new Yi).fromJson(e,t)}static fromJsonString(e,t){return(new Yi).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Yi,e,t)}}Yi.runtime=Ce,Yi.typeName="livekit.TrickleRequest",Yi.fields=Ce.util.newFieldList((()=>[{no:1,name:"candidateInit",kind:"scalar",T:9},{no:2,name:"target",kind:"enum",T:Ce.getEnumType(ji)}]));class Xi extends w{constructor(e){super(),this.sid="",this.muted=!1,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Xi).fromBinary(e,t)}static fromJson(e,t){return(new Xi).fromJson(e,t)}static fromJsonString(e,t){return(new Xi).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Xi,e,t)}}Xi.runtime=Ce,Xi.typeName="livekit.MuteTrackRequest",Xi.fields=Ce.util.newFieldList((()=>[{no:1,name:"sid",kind:"scalar",T:9},{no:2,name:"muted",kind:"scalar",T:8}]));class Zi extends w{constructor(e){super(),this.otherParticipants=[],this.serverVersion="",this.iceServers=[],this.subscriberPrimary=!1,this.alternativeUrl="",this.serverRegion="",this.pingTimeout=0,this.pingInterval=0,this.sifTrailer=new Uint8Array(0),Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Zi).fromBinary(e,t)}static fromJson(e,t){return(new Zi).fromJson(e,t)}static fromJsonString(e,t){return(new Zi).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Zi,e,t)}}Zi.runtime=Ce,Zi.typeName="livekit.JoinResponse",Zi.fields=Ce.util.newFieldList((()=>[{no:1,name:"room",kind:"message",T:Ve},{no:2,name:"participant",kind:"message",T:He},{no:3,name:"other_participants",kind:"message",T:He,repeated:!0},{no:4,name:"server_version",kind:"scalar",T:9},{no:5,name:"ice_servers",kind:"message",T:un,repeated:!0},{no:6,name:"subscriber_primary",kind:"scalar",T:8},{no:7,name:"alternative_url",kind:"scalar",T:9},{no:8,name:"client_configuration",kind:"message",T:dt},{no:9,name:"server_region",kind:"scalar",T:9},{no:10,name:"ping_timeout",kind:"scalar",T:5},{no:11,name:"ping_interval",kind:"scalar",T:5},{no:12,name:"server_info",kind:"message",T:at},{no:13,name:"sif_trailer",kind:"scalar",T:12}]));class $i extends w{constructor(e){super(),this.iceServers=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new $i).fromBinary(e,t)}static fromJson(e,t){return(new $i).fromJson(e,t)}static fromJsonString(e,t){return(new $i).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals($i,e,t)}}$i.runtime=Ce,$i.typeName="livekit.ReconnectResponse",$i.fields=Ce.util.newFieldList((()=>[{no:1,name:"ice_servers",kind:"message",T:un,repeated:!0},{no:2,name:"client_configuration",kind:"message",T:dt}]));class en extends w{constructor(e){super(),this.cid="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new en).fromBinary(e,t)}static fromJson(e,t){return(new en).fromJson(e,t)}static fromJsonString(e,t){return(new en).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(en,e,t)}}en.runtime=Ce,en.typeName="livekit.TrackPublishedResponse",en.fields=Ce.util.newFieldList((()=>[{no:1,name:"cid",kind:"scalar",T:9},{no:2,name:"track",kind:"message",T:et}]));class tn extends w{constructor(e){super(),this.trackSid="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new tn).fromBinary(e,t)}static fromJson(e,t){return(new tn).fromJson(e,t)}static fromJsonString(e,t){return(new tn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(tn,e,t)}}tn.runtime=Ce,tn.typeName="livekit.TrackUnpublishedResponse",tn.fields=Ce.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9}]));class nn extends w{constructor(e){super(),this.type="",this.sdp="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new nn).fromBinary(e,t)}static fromJson(e,t){return(new nn).fromJson(e,t)}static fromJsonString(e,t){return(new nn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(nn,e,t)}}nn.runtime=Ce,nn.typeName="livekit.SessionDescription",nn.fields=Ce.util.newFieldList((()=>[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9}]));class rn extends w{constructor(e){super(),this.participants=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new rn).fromBinary(e,t)}static fromJson(e,t){return(new rn).fromJson(e,t)}static fromJsonString(e,t){return(new rn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(rn,e,t)}}rn.runtime=Ce,rn.typeName="livekit.ParticipantUpdate",rn.fields=Ce.util.newFieldList((()=>[{no:1,name:"participants",kind:"message",T:He,repeated:!0}]));class sn extends w{constructor(e){super(),this.trackSids=[],this.subscribe=!1,this.participantTracks=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new sn).fromBinary(e,t)}static fromJson(e,t){return(new sn).fromJson(e,t)}static fromJsonString(e,t){return(new sn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(sn,e,t)}}sn.runtime=Ce,sn.typeName="livekit.UpdateSubscription",sn.fields=Ce.util.newFieldList((()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:2,name:"subscribe",kind:"scalar",T:8},{no:3,name:"participant_tracks",kind:"message",T:ot,repeated:!0}]));class on extends w{constructor(t){super(),this.trackSids=[],this.disabled=!1,this.quality=e.VideoQuality.LOW,this.width=0,this.height=0,this.fps=0,this.priority=0,Ce.util.initPartial(t,this)}static fromBinary(e,t){return(new on).fromBinary(e,t)}static fromJson(e,t){return(new on).fromJson(e,t)}static fromJsonString(e,t){return(new on).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(on,e,t)}}on.runtime=Ce,on.typeName="livekit.UpdateTrackSettings",on.fields=Ce.util.newFieldList((()=>[{no:1,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:3,name:"disabled",kind:"scalar",T:8},{no:4,name:"quality",kind:"enum",T:Ce.getEnumType(e.VideoQuality)},{no:5,name:"width",kind:"scalar",T:13},{no:6,name:"height",kind:"scalar",T:13},{no:7,name:"fps",kind:"scalar",T:13},{no:8,name:"priority",kind:"scalar",T:13}]));class an extends w{constructor(t){super(),this.canReconnect=!1,this.reason=e.DisconnectReason.UNKNOWN_REASON,Ce.util.initPartial(t,this)}static fromBinary(e,t){return(new an).fromBinary(e,t)}static fromJson(e,t){return(new an).fromJson(e,t)}static fromJsonString(e,t){return(new an).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(an,e,t)}}an.runtime=Ce,an.typeName="livekit.LeaveRequest",an.fields=Ce.util.newFieldList((()=>[{no:1,name:"can_reconnect",kind:"scalar",T:8},{no:2,name:"reason",kind:"enum",T:Ce.getEnumType(e.DisconnectReason)}]));class cn extends w{constructor(e){super(),this.trackSid="",this.layers=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new cn).fromBinary(e,t)}static fromJson(e,t){return(new cn).fromJson(e,t)}static fromJsonString(e,t){return(new cn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(cn,e,t)}}cn.runtime=Ce,cn.typeName="livekit.UpdateVideoLayers",cn.fields=Ce.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"layers",kind:"message",T:tt,repeated:!0}]));class dn extends w{constructor(e){super(),this.metadata="",this.name="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new dn).fromBinary(e,t)}static fromJson(e,t){return(new dn).fromJson(e,t)}static fromJsonString(e,t){return(new dn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(dn,e,t)}}dn.runtime=Ce,dn.typeName="livekit.UpdateParticipantMetadata",dn.fields=Ce.util.newFieldList((()=>[{no:1,name:"metadata",kind:"scalar",T:9},{no:2,name:"name",kind:"scalar",T:9}]));class un extends w{constructor(e){super(),this.urls=[],this.username="",this.credential="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new un).fromBinary(e,t)}static fromJson(e,t){return(new un).fromJson(e,t)}static fromJsonString(e,t){return(new un).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(un,e,t)}}un.runtime=Ce,un.typeName="livekit.ICEServer",un.fields=Ce.util.newFieldList((()=>[{no:1,name:"urls",kind:"scalar",T:9,repeated:!0},{no:2,name:"username",kind:"scalar",T:9},{no:3,name:"credential",kind:"scalar",T:9}]));class ln extends w{constructor(e){super(),this.speakers=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new ln).fromBinary(e,t)}static fromJson(e,t){return(new ln).fromJson(e,t)}static fromJsonString(e,t){return(new ln).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(ln,e,t)}}ln.runtime=Ce,ln.typeName="livekit.SpeakersChanged",ln.fields=Ce.util.newFieldList((()=>[{no:1,name:"speakers",kind:"message",T:rt,repeated:!0}]));class hn extends w{constructor(e){super(),Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new hn).fromBinary(e,t)}static fromJson(e,t){return(new hn).fromJson(e,t)}static fromJsonString(e,t){return(new hn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(hn,e,t)}}hn.runtime=Ce,hn.typeName="livekit.RoomUpdate",hn.fields=Ce.util.newFieldList((()=>[{no:1,name:"room",kind:"message",T:Ve}]));class pn extends w{constructor(e){super(),this.participantSid="",this.quality=Me.POOR,this.score=0,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new pn).fromBinary(e,t)}static fromJson(e,t){return(new pn).fromJson(e,t)}static fromJsonString(e,t){return(new pn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(pn,e,t)}}pn.runtime=Ce,pn.typeName="livekit.ConnectionQualityInfo",pn.fields=Ce.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"quality",kind:"enum",T:Ce.getEnumType(Me)},{no:3,name:"score",kind:"scalar",T:2}]));class mn extends w{constructor(e){super(),this.updates=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new mn).fromBinary(e,t)}static fromJson(e,t){return(new mn).fromJson(e,t)}static fromJsonString(e,t){return(new mn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(mn,e,t)}}mn.runtime=Ce,mn.typeName="livekit.ConnectionQualityUpdate",mn.fields=Ce.util.newFieldList((()=>[{no:1,name:"updates",kind:"message",T:pn,repeated:!0}]));class fn extends w{constructor(e){super(),this.participantSid="",this.trackSid="",this.state=Vi.ACTIVE,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new fn).fromBinary(e,t)}static fromJson(e,t){return(new fn).fromJson(e,t)}static fromJsonString(e,t){return(new fn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(fn,e,t)}}fn.runtime=Ce,fn.typeName="livekit.StreamStateInfo",fn.fields=Ce.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"state",kind:"enum",T:Ce.getEnumType(Vi)}]));class vn extends w{constructor(e){super(),this.streamStates=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new vn).fromBinary(e,t)}static fromJson(e,t){return(new vn).fromJson(e,t)}static fromJsonString(e,t){return(new vn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(vn,e,t)}}vn.runtime=Ce,vn.typeName="livekit.StreamStateUpdate",vn.fields=Ce.util.newFieldList((()=>[{no:1,name:"stream_states",kind:"message",T:fn,repeated:!0}]));class gn extends w{constructor(t){super(),this.quality=e.VideoQuality.LOW,this.enabled=!1,Ce.util.initPartial(t,this)}static fromBinary(e,t){return(new gn).fromBinary(e,t)}static fromJson(e,t){return(new gn).fromJson(e,t)}static fromJsonString(e,t){return(new gn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(gn,e,t)}}gn.runtime=Ce,gn.typeName="livekit.SubscribedQuality",gn.fields=Ce.util.newFieldList((()=>[{no:1,name:"quality",kind:"enum",T:Ce.getEnumType(e.VideoQuality)},{no:2,name:"enabled",kind:"scalar",T:8}]));class yn extends w{constructor(e){super(),this.codec="",this.qualities=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new yn).fromBinary(e,t)}static fromJson(e,t){return(new yn).fromJson(e,t)}static fromJsonString(e,t){return(new yn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(yn,e,t)}}yn.runtime=Ce,yn.typeName="livekit.SubscribedCodec",yn.fields=Ce.util.newFieldList((()=>[{no:1,name:"codec",kind:"scalar",T:9},{no:2,name:"qualities",kind:"message",T:gn,repeated:!0}]));class kn extends w{constructor(e){super(),this.trackSid="",this.subscribedQualities=[],this.subscribedCodecs=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new kn).fromBinary(e,t)}static fromJson(e,t){return(new kn).fromJson(e,t)}static fromJsonString(e,t){return(new kn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(kn,e,t)}}kn.runtime=Ce,kn.typeName="livekit.SubscribedQualityUpdate",kn.fields=Ce.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"subscribed_qualities",kind:"message",T:gn,repeated:!0},{no:3,name:"subscribed_codecs",kind:"message",T:yn,repeated:!0}]));class bn extends w{constructor(e){super(),this.participantSid="",this.allTracks=!1,this.trackSids=[],this.participantIdentity="",Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new bn).fromBinary(e,t)}static fromJson(e,t){return(new bn).fromJson(e,t)}static fromJsonString(e,t){return(new bn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(bn,e,t)}}bn.runtime=Ce,bn.typeName="livekit.TrackPermission",bn.fields=Ce.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"all_tracks",kind:"scalar",T:8},{no:3,name:"track_sids",kind:"scalar",T:9,repeated:!0},{no:4,name:"participant_identity",kind:"scalar",T:9}]));class Tn extends w{constructor(e){super(),this.allParticipants=!1,this.trackPermissions=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Tn).fromBinary(e,t)}static fromJson(e,t){return(new Tn).fromJson(e,t)}static fromJsonString(e,t){return(new Tn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Tn,e,t)}}Tn.runtime=Ce,Tn.typeName="livekit.SubscriptionPermission",Tn.fields=Ce.util.newFieldList((()=>[{no:1,name:"all_participants",kind:"scalar",T:8},{no:2,name:"track_permissions",kind:"message",T:bn,repeated:!0}]));class Sn extends w{constructor(e){super(),this.participantSid="",this.trackSid="",this.allowed=!1,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Sn).fromBinary(e,t)}static fromJson(e,t){return(new Sn).fromJson(e,t)}static fromJsonString(e,t){return(new Sn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Sn,e,t)}}Sn.runtime=Ce,Sn.typeName="livekit.SubscriptionPermissionUpdate",Sn.fields=Ce.util.newFieldList((()=>[{no:1,name:"participant_sid",kind:"scalar",T:9},{no:2,name:"track_sid",kind:"scalar",T:9},{no:3,name:"allowed",kind:"scalar",T:8}]));class wn extends w{constructor(e){super(),this.publishTracks=[],this.dataChannels=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new wn).fromBinary(e,t)}static fromJson(e,t){return(new wn).fromJson(e,t)}static fromJsonString(e,t){return(new wn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(wn,e,t)}}wn.runtime=Ce,wn.typeName="livekit.SyncState",wn.fields=Ce.util.newFieldList((()=>[{no:1,name:"answer",kind:"message",T:nn},{no:2,name:"subscription",kind:"message",T:sn},{no:3,name:"publish_tracks",kind:"message",T:en,repeated:!0},{no:4,name:"data_channels",kind:"message",T:En,repeated:!0},{no:5,name:"offer",kind:"message",T:nn}]));class En extends w{constructor(e){super(),this.label="",this.id=0,this.target=ji.PUBLISHER,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new En).fromBinary(e,t)}static fromJson(e,t){return(new En).fromJson(e,t)}static fromJsonString(e,t){return(new En).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(En,e,t)}}En.runtime=Ce,En.typeName="livekit.DataChannelInfo",En.fields=Ce.util.newFieldList((()=>[{no:1,name:"label",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:13},{no:3,name:"target",kind:"enum",T:Ce.getEnumType(ji)}]));class Cn extends w{constructor(e){super(),this.scenario={case:void 0},Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Cn).fromBinary(e,t)}static fromJson(e,t){return(new Cn).fromJson(e,t)}static fromJsonString(e,t){return(new Cn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Cn,e,t)}}Cn.runtime=Ce,Cn.typeName="livekit.SimulateScenario",Cn.fields=Ce.util.newFieldList((()=>[{no:1,name:"speaker_update",kind:"scalar",T:5,oneof:"scenario"},{no:2,name:"node_failure",kind:"scalar",T:8,oneof:"scenario"},{no:3,name:"migration",kind:"scalar",T:8,oneof:"scenario"},{no:4,name:"server_leave",kind:"scalar",T:8,oneof:"scenario"},{no:5,name:"switch_candidate_protocol",kind:"enum",T:Ce.getEnumType(qi),oneof:"scenario"},{no:6,name:"subscriber_bandwidth",kind:"scalar",T:3,oneof:"scenario"}]));class Pn extends w{constructor(e){super(),this.timestamp=M.zero,this.rtt=M.zero,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Pn).fromBinary(e,t)}static fromJson(e,t){return(new Pn).fromJson(e,t)}static fromJsonString(e,t){return(new Pn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Pn,e,t)}}Pn.runtime=Ce,Pn.typeName="livekit.Ping",Pn.fields=Ce.util.newFieldList((()=>[{no:1,name:"timestamp",kind:"scalar",T:3},{no:2,name:"rtt",kind:"scalar",T:3}]));class Rn extends w{constructor(e){super(),this.lastPingTimestamp=M.zero,this.timestamp=M.zero,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Rn).fromBinary(e,t)}static fromJson(e,t){return(new Rn).fromJson(e,t)}static fromJsonString(e,t){return(new Rn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Rn,e,t)}}Rn.runtime=Ce,Rn.typeName="livekit.Pong",Rn.fields=Ce.util.newFieldList((()=>[{no:1,name:"last_ping_timestamp",kind:"scalar",T:3},{no:2,name:"timestamp",kind:"scalar",T:3}]));class In extends w{constructor(e){super(),this.regions=[],Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new In).fromBinary(e,t)}static fromJson(e,t){return(new In).fromJson(e,t)}static fromJsonString(e,t){return(new In).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(In,e,t)}}In.runtime=Ce,In.typeName="livekit.RegionSettings",In.fields=Ce.util.newFieldList((()=>[{no:1,name:"regions",kind:"message",T:Dn,repeated:!0}]));class Dn extends w{constructor(e){super(),this.region="",this.url="",this.distance=M.zero,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new Dn).fromBinary(e,t)}static fromJson(e,t){return(new Dn).fromJson(e,t)}static fromJsonString(e,t){return(new Dn).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(Dn,e,t)}}Dn.runtime=Ce,Dn.typeName="livekit.RegionInfo",Dn.fields=Ce.util.newFieldList((()=>[{no:1,name:"region",kind:"scalar",T:9},{no:2,name:"url",kind:"scalar",T:9},{no:3,name:"distance",kind:"scalar",T:3}]));class _n extends w{constructor(e){super(),this.trackSid="",this.err=Fe.SE_UNKNOWN,Ce.util.initPartial(e,this)}static fromBinary(e,t){return(new _n).fromBinary(e,t)}static fromJson(e,t){return(new _n).fromJson(e,t)}static fromJsonString(e,t){return(new _n).fromJsonString(e,t)}static equals(e,t){return Ce.util.equals(_n,e,t)}}_n.runtime=Ce,_n.typeName="livekit.SubscriptionResponse",_n.fields=Ce.util.newFieldList((()=>[{no:1,name:"track_sid",kind:"scalar",T:9},{no:2,name:"err",kind:"enum",T:Ce.getEnumType(Fe)}]));class Ln extends Error{constructor(e,t){super(t||"an error has occured"),this.code=e}}class Nn extends Ln{constructor(e,t,i){super(1,e),this.status=i,this.reason=t}}class An extends Ln{constructor(e){super(21,null!=e?e:"device is unsupported")}}class On extends Ln{constructor(e){super(20,null!=e?e:"track is invalid")}}class Mn extends Ln{constructor(e){super(10,null!=e?e:"unsupported server")}}class xn extends Ln{constructor(e){super(12,null!=e?e:"unexpected connection state")}}class Un extends Ln{constructor(e){super(13,null!=e?e:"unable to negotiate")}}e.MediaDeviceFailure=void 0,(Ki=e.MediaDeviceFailure||(e.MediaDeviceFailure={})).PermissionDenied="PermissionDenied",Ki.NotFound="NotFound",Ki.DeviceInUse="DeviceInUse",Ki.Other="Other",function(e){e.getFailure=function(t){if(t&&"name"in t)return"NotFoundError"===t.name||"DevicesNotFoundError"===t.name?e.NotFound:"NotAllowedError"===t.name||"PermissionDeniedError"===t.name?e.PermissionDenied:"NotReadableError"===t.name||"TrackStartError"===t.name?e.DeviceInUse:e.Other}}(e.MediaDeviceFailure||(e.MediaDeviceFailure={}));class Bn{}Bn.setTimeout=function(){return setTimeout(...arguments)},Bn.setInterval=function(){return setInterval(...arguments)},Bn.clearTimeout=function(){return clearTimeout(...arguments)},Bn.clearInterval=function(){return clearInterval(...arguments)};const Fn=/version\/(\d+(\.?_?\d+)+)/i;let Jn;function jn(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0===e&&"undefined"==typeof navigator)return;const i=(null!=e?e:navigator.userAgent).toLowerCase();if(void 0===Jn||t){const e=Vn.find((e=>{let{test:t}=e;return t.test(i)}));Jn=null==e?void 0:e.describe(i)}return Jn}const Vn=[{test:/firefox|iceweasel|fxios/i,describe:e=>({name:"Firefox",version:qn(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("fxios")?"iOS":void 0})},{test:/chrom|crios|crmo/i,describe:e=>({name:"Chrome",version:qn(/(?:chrome|chromium|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e),os:e.toLowerCase().includes("crios")?"iOS":void 0})},{test:/safari|applewebkit/i,describe:e=>({name:"Safari",version:qn(Fn,e),os:e.includes("mobile/")?"iOS":"macOS"})}];function qn(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;const n=t.match(e);return n&&n.length>=i&&n[i]||""}const Kn="1.13.3";class Wn{constructor(e,t,i,n,r){this.width=e,this.height=t,this.encoding={maxBitrate:i,maxFramerate:n,priority:r}}get resolution(){return{width:this.width,height:this.height,frameRate:this.encoding.maxFramerate,aspectRatio:this.width/this.height}}}const Hn=["vp8","h264"],Gn=["vp8","h264","vp9","av1"];function zn(e){return!!Hn.find((t=>t===e))}function Qn(e,t){return(null==e?void 0:e.toLowerCase().replace(/audio\/|video\//y,""))===(null==t?void 0:t.toLowerCase().replace(/audio\/|video\//y,""))}var Yn;e.AudioPresets=void 0,(Yn=e.AudioPresets||(e.AudioPresets={})).telephone={maxBitrate:12e3},Yn.speech={maxBitrate:2e4},Yn.music={maxBitrate:32e3},Yn.musicStereo={maxBitrate:48e3},Yn.musicHighQuality={maxBitrate:64e3},Yn.musicHighQualityStereo={maxBitrate:96e3};const Xn={h90:new Wn(160,90,9e4,20),h180:new Wn(320,180,16e4,20),h216:new Wn(384,216,18e4,20),h360:new Wn(640,360,45e4,20),h540:new Wn(960,540,8e5,25),h720:new Wn(1280,720,17e5,30),h1080:new Wn(1920,1080,3e6,30),h1440:new Wn(2560,1440,5e6,30),h2160:new Wn(3840,2160,8e6,30)},Zn={h120:new Wn(160,120,7e4,20),h180:new Wn(240,180,125e3,20),h240:new Wn(320,240,14e4,20),h360:new Wn(480,360,33e4,20),h480:new Wn(640,480,5e5,20),h540:new Wn(720,540,6e5,25),h720:new Wn(960,720,13e5,30),h1080:new Wn(1440,1080,23e5,30),h1440:new Wn(1920,1440,38e5,30)},$n={h360fps3:new Wn(640,360,2e5,3,"medium"),h720fps5:new Wn(1280,720,4e5,5,"medium"),h720fps15:new Wn(1280,720,15e5,15,"medium"),h720fps30:new Wn(1280,720,2e6,30,"medium"),h1080fps15:new Wn(1920,1080,25e5,15,"medium"),h1080fps30:new Wn(1920,1080,4e6,30,"medium")};var er,tr,ir,nr;e.RoomEvent=void 0,(er=e.RoomEvent||(e.RoomEvent={})).Connected="connected",er.Reconnecting="reconnecting",er.Reconnected="reconnected",er.Disconnected="disconnected",er.ConnectionStateChanged="connectionStateChanged",er.StateChanged="connectionStateChanged",er.MediaDevicesChanged="mediaDevicesChanged",er.ParticipantConnected="participantConnected",er.ParticipantDisconnected="participantDisconnected",er.TrackPublished="trackPublished",er.TrackSubscribed="trackSubscribed",er.TrackSubscriptionFailed="trackSubscriptionFailed",er.TrackUnpublished="trackUnpublished",er.TrackUnsubscribed="trackUnsubscribed",er.TrackMuted="trackMuted",er.TrackUnmuted="trackUnmuted",er.LocalTrackPublished="localTrackPublished",er.LocalTrackUnpublished="localTrackUnpublished",er.LocalAudioSilenceDetected="localAudioSilenceDetected",er.ActiveSpeakersChanged="activeSpeakersChanged",er.ParticipantMetadataChanged="participantMetadataChanged",er.ParticipantNameChanged="participantNameChanged",er.RoomMetadataChanged="roomMetadataChanged",er.DataReceived="dataReceived",er.ConnectionQualityChanged="connectionQualityChanged",er.TrackStreamStateChanged="trackStreamStateChanged",er.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",er.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",er.AudioPlaybackStatusChanged="audioPlaybackChanged",er.MediaDevicesError="mediaDevicesError",er.ParticipantPermissionsChanged="participantPermissionsChanged",er.SignalConnected="signalConnected",er.RecordingStatusChanged="recordingStatusChanged",er.ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",er.EncryptionError="encryptionError",er.DCBufferStatusChanged="dcBufferStatusChanged",er.ActiveDeviceChanged="activeDeviceChanged",e.ParticipantEvent=void 0,(tr=e.ParticipantEvent||(e.ParticipantEvent={})).TrackPublished="trackPublished",tr.TrackSubscribed="trackSubscribed",tr.TrackSubscriptionFailed="trackSubscriptionFailed",tr.TrackUnpublished="trackUnpublished",tr.TrackUnsubscribed="trackUnsubscribed",tr.TrackMuted="trackMuted",tr.TrackUnmuted="trackUnmuted",tr.LocalTrackPublished="localTrackPublished",tr.LocalTrackUnpublished="localTrackUnpublished",tr.ParticipantMetadataChanged="participantMetadataChanged",tr.ParticipantNameChanged="participantNameChanged",tr.DataReceived="dataReceived",tr.IsSpeakingChanged="isSpeakingChanged",tr.ConnectionQualityChanged="connectionQualityChanged",tr.TrackStreamStateChanged="trackStreamStateChanged",tr.TrackSubscriptionPermissionChanged="trackSubscriptionPermissionChanged",tr.TrackSubscriptionStatusChanged="trackSubscriptionStatusChanged",tr.MediaDevicesError="mediaDevicesError",tr.ParticipantPermissionsChanged="participantPermissionsChanged",tr.PCTrackAdded="pcTrackAdded",e.EngineEvent=void 0,(ir=e.EngineEvent||(e.EngineEvent={})).TransportsCreated="transportsCreated",ir.Connected="connected",ir.Disconnected="disconnected",ir.Resuming="resuming",ir.Resumed="resumed",ir.Restarting="restarting",ir.Restarted="restarted",ir.SignalResumed="signalResumed",ir.SignalRestarted="signalRestarted",ir.Closing="closing",ir.MediaTrackAdded="mediaTrackAdded",ir.ActiveSpeakersUpdate="activeSpeakersUpdate",ir.DataPacketReceived="dataPacketReceived",ir.RTPVideoMapUpdate="rtpVideoMapUpdate",ir.DCBufferStatusChanged="dcBufferStatusChanged",ir.ParticipantUpdate="participantUpdate",ir.RoomUpdate="roomUpdate",ir.SpeakersChanged="speakersChanged",ir.StreamStateChanged="streamStateChanged",ir.ConnectionQualityUpdate="connectionQualityUpdate",ir.SubscriptionError="subscriptionError",ir.SubscriptionPermissionUpdate="subscriptionPermissionUpdate",e.TrackEvent=void 0,(nr=e.TrackEvent||(e.TrackEvent={})).Message="message",nr.Muted="muted",nr.Unmuted="unmuted",nr.Restarted="restarted",nr.Ended="ended",nr.Subscribed="subscribed",nr.Unsubscribed="unsubscribed",nr.UpdateSettings="updateSettings",nr.UpdateSubscription="updateSubscription",nr.AudioPlaybackStarted="audioPlaybackStarted",nr.AudioPlaybackFailed="audioPlaybackFailed",nr.AudioSilenceDetected="audioSilenceDetected",nr.VisibilityChanged="visibilityChanged",nr.VideoDimensionsChanged="videoDimensionsChanged",nr.ElementAttached="elementAttached",nr.ElementDetached="elementDetached",nr.UpstreamPaused="upstreamPaused",nr.UpstreamResumed="upstreamResumed",nr.SubscriptionPermissionChanged="subscriptionPermissionChanged",nr.SubscriptionStatusChanged="subscriptionStatusChanged",nr.SubscriptionFailed="subscriptionFailed";const rr=[];class sr extends xt.EventEmitter{constructor(e,t){super(),this.attachedElements=[],this.isMuted=!1,this.streamState=sr.StreamState.Active,this.isInBackground=!1,this._currentBitrate=0,this.appVisibilityChangedListener=()=>{this.backgroundTimeout&&clearTimeout(this.backgroundTimeout),"hidden"===document.visibilityState?this.backgroundTimeout=setTimeout((()=>this.handleAppVisibilityChanged()),5e3):this.handleAppVisibilityChanged()},this.setMaxListeners(100),this.kind=t,this._mediaStreamTrack=e,this._mediaStreamID=e.id,this.source=sr.Source.Unknown}get currentBitrate(){return this._currentBitrate}get mediaStreamTrack(){return this._mediaStreamTrack}get mediaStreamID(){return this._mediaStreamID}attach(t){let i="audio";this.kind===sr.Kind.Video&&(i="video"),0===this.attachedElements.length&&sr.Kind.Video&&this.addAppVisibilityListener(),t||("audio"===i&&(rr.forEach((e=>{null!==e.parentElement||t||(t=e)})),t&&rr.splice(rr.indexOf(t),1)),t||(t=document.createElement(i))),this.attachedElements.includes(t)||this.attachedElements.push(t),or(this.mediaStreamTrack,t);const n=t.srcObject.getTracks();return n.some((e=>"audio"===e.kind))&&t.play().then((()=>{this.emit(e.TrackEvent.AudioPlaybackStarted)})).catch((i=>{"NotAllowedError"===i.name?this.emit(e.TrackEvent.AudioPlaybackFailed,i):a.warn("could not playback audio",i),t&&n.some((e=>"video"===e.kind))&&"NotAllowedError"===i.name&&(t.muted=!0,t.play().catch((()=>{})))})),this.emit(e.TrackEvent.ElementAttached,t),t}detach(t){try{if(t){ar(this.mediaStreamTrack,t);const i=this.attachedElements.indexOf(t);return i>=0&&(this.attachedElements.splice(i,1),this.recycleElement(t),this.emit(e.TrackEvent.ElementDetached,t)),t}const i=[];return this.attachedElements.forEach((t=>{ar(this.mediaStreamTrack,t),i.push(t),this.recycleElement(t),this.emit(e.TrackEvent.ElementDetached,t)})),this.attachedElements=[],i}finally{0===this.attachedElements.length&&this.removeAppVisibilityListener()}}stop(){this.stopMonitor(),this._mediaStreamTrack.stop()}enable(){this._mediaStreamTrack.enabled=!0}disable(){this._mediaStreamTrack.enabled=!1}stopMonitor(){this.monitorInterval&&clearInterval(this.monitorInterval)}recycleElement(e){if(e instanceof HTMLAudioElement){let t=!0;e.pause(),rr.forEach((e=>{e.parentElement||(t=!1)})),t&&rr.push(e)}}handleAppVisibilityChanged(){return gt(this,void 0,void 0,(function*(){this.isInBackground="hidden"===document.visibilityState}))}addAppVisibilityListener(){Cr()?(this.isInBackground="hidden"===document.visibilityState,document.addEventListener("visibilitychange",this.appVisibilityChangedListener)):this.isInBackground=!1}removeAppVisibilityListener(){Cr()&&document.removeEventListener("visibilitychange",this.appVisibilityChangedListener)}}function or(e,t){let i,n;i=t.srcObject instanceof MediaStream?t.srcObject:new MediaStream,n="audio"===e.kind?i.getAudioTracks():i.getVideoTracks(),n.includes(e)||(n.forEach((e=>{i.removeTrack(e)})),i.addTrack(e)),t.autoplay=!0,t.muted=0===i.getAudioTracks().length,t instanceof HTMLVideoElement&&(t.playsInline=!0),t.srcObject!==i&&(t.srcObject=i,(wr()||Sr())&&t instanceof HTMLVideoElement&&setTimeout((()=>{t.srcObject=i,t.play().catch((()=>{}))}),0))}function ar(e,t){if(t.srcObject instanceof MediaStream){const i=t.srcObject;i.removeTrack(e),i.getTracks().length>0?t.srcObject=i:t.srcObject=null}}function cr(e,t,i){const n=Object.assign({},e);return!0===n.audio&&(n.audio={}),!0===n.video&&(n.video={}),n.audio&&dr(n.audio,t),n.video&&dr(n.video,i),n}function dr(e,t){return Object.keys(t).forEach((i=>{void 0===e[i]&&(e[i]=t[i])})),e}function ur(e){const t={};if(e.video)if("object"==typeof e.video){const i={},n=i,r=e.video;Object.keys(r).forEach((e=>{if("resolution"===e)dr(n,r.resolution);else n[e]=r[e]})),t.video=i}else t.video=e.video;else t.video=!1;return e.audio?"object"==typeof e.audio?t.audio=e.audio:t.audio=!0:t.audio=!1,t}function lr(){const e="undefined"!=typeof window&&(window.AudioContext||window.webkitAudioContext);if(e)return new e({latencyHint:"interactive"})}function hr(e){var t,i;let n=null===(t=e.video)||void 0===t||t;return e.resolution&&(n="boolean"==typeof n?{}:n,n=wr()?Object.assign(Object.assign({},n),{width:{max:e.resolution.width},height:{max:e.resolution.height},frameRate:e.resolution.frameRate}):Object.assign(Object.assign({},n),{width:{ideal:e.resolution.width},height:{ideal:e.resolution.height},frameRate:e.resolution.frameRate})),{audio:null!==(i=e.audio)&&void 0!==i&&i,video:n,controller:e.controller,selfBrowserSurface:e.selfBrowserSurface,surfaceSwitching:e.surfaceSwitching,systemAudio:e.systemAudio}}!function(e){let t,i,n;!function(e){e.Audio="audio",e.Video="video",e.Unknown="unknown"}(t=e.Kind||(e.Kind={})),function(e){e.Camera="camera",e.Microphone="microphone",e.ScreenShare="screen_share",e.ScreenShareAudio="screen_share_audio",e.Unknown="unknown"}(i=e.Source||(e.Source={})),function(e){e.Active="active",e.Paused="paused",e.Unknown="unknown"}(n=e.StreamState||(e.StreamState={})),e.kindToProto=function(e){switch(e){case t.Audio:return Ne.AUDIO;case t.Video:return Ne.VIDEO;default:return Ne.DATA}},e.kindFromProto=function(e){switch(e){case Ne.AUDIO:return t.Audio;case Ne.VIDEO:return t.Video;default:return t.Unknown}},e.sourceToProto=function(e){switch(e){case i.Camera:return Ae.CAMERA;case i.Microphone:return Ae.MICROPHONE;case i.ScreenShare:return Ae.SCREEN_SHARE;case i.ScreenShareAudio:return Ae.SCREEN_SHARE_AUDIO;default:return Ae.UNKNOWN}},e.sourceFromProto=function(e){switch(e){case Ae.CAMERA:return i.Camera;case Ae.MICROPHONE:return i.Microphone;case Ae.SCREEN_SHARE:return i.ScreenShare;case Ae.SCREEN_SHARE_AUDIO:return i.ScreenShareAudio;default:return i.Unknown}},e.streamStateFromProto=function(e){switch(e){case Vi.ACTIVE:return n.Active;case Vi.PAUSED:return n.Paused;default:return n.Unknown}}}(sr||(sr={}));const pr="https://aomediacodec.github.io/av1-rtp-spec/#dependency-descriptor-rtp-header-extension";function mr(e){return gt(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}function fr(){return"addTransceiver"in RTCPeerConnection.prototype}function vr(){return"addTrack"in RTCPeerConnection.prototype}function gr(){if(!("getCapabilities"in RTCRtpSender))return!1;const e=RTCRtpSender.getCapabilities("video");let t=!1;if(e)for(const i of e.codecs)if("video/AV1"===i.mimeType){t=!0;break}return t}function yr(){if(!("getCapabilities"in RTCRtpSender))return!1;const e=RTCRtpSender.getCapabilities("video");let t=!1;if(e)for(const i of e.codecs)if("video/VP9"===i.mimeType){t=!0;break}return t}function kr(e){return"av1"===e||"vp9"===e}function br(e){return!!document&&(e||(e=document.createElement("audio")),"setSinkId"in e)}const Tr={Chrome:"100",Safari:"15",Firefox:"100"};function Sr(){var e;return"Firefox"===(null===(e=jn())||void 0===e?void 0:e.name)}function wr(){var e;return"Safari"===(null===(e=jn())||void 0===e?void 0:e.name)}function Er(){return!!Cr()&&/Tablet|iPad|Mobile|Android|BlackBerry/.test(navigator.userAgent)}function Cr(){return"undefined"!=typeof document}function Pr(){return"ReactNative"==navigator.product}function Rr(e){return e.hostname.endsWith(".livekit.cloud")||e.hostname.endsWith(".livekit.run")}function Ir(){if(global&&global.LiveKitReactNativeGlobal)return global.LiveKitReactNativeGlobal}function Dr(){if(!Pr())return;let e=Ir();return e?e.platform:void 0}function _r(){if(Cr())return window.devicePixelRatio;if(Pr()){let e=Ir();if(e)return e.devicePixelRatio}return 1}function Lr(e,t){const i=e.split("."),n=t.split("."),r=Math.min(i.length,n.length);for(let e=0;e<r;++e){const t=parseInt(i[e],10),s=parseInt(n[e],10);if(t>s)return 1;if(t<s)return-1;if(e===r-1&&t===s)return 0}return""===e&&""!==t?-1:""===t?1:i.length==n.length?0:i.length<n.length?-1:1}function Nr(e){for(const t of e)t.target.handleResize(t)}function Ar(e){for(const t of e)t.target.handleVisibilityChanged(t)}let Or=null;const Mr=()=>(Or||(Or=new ResizeObserver(Nr)),Or);let xr=null;const Ur=()=>(xr||(xr=new IntersectionObserver(Ar,{root:null,rootMargin:"0px"})),xr);let Br,Fr;function Jr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:16,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:16,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const r=document.createElement("canvas");r.width=e,r.height=t;const s=r.getContext("2d");null==s||s.fillRect(0,0,r.width,r.height),n&&s&&(s.beginPath(),s.arc(e/2,t/2,50,0,2*Math.PI,!0),s.closePath(),s.fillStyle="grey",s.fill());const o=r.captureStream(),[a]=o.getTracks();if(!a)throw Error("Could not get empty media stream video track");return a.enabled=i,a}function jr(){if(!Fr){const e=new AudioContext,t=e.createOscillator(),i=e.createGain();i.gain.setValueAtTime(0,0);const n=e.createMediaStreamDestination();if(t.connect(i),i.connect(n),t.start(),[Fr]=n.stream.getAudioTracks(),!Fr)throw Error("Could not get empty media stream audio track");Fr.enabled=!1}return Fr.clone()}class Vr{constructor(e,t){this.onFinally=t,this.promise=new Promise(((t,i)=>gt(this,void 0,void 0,(function*(){this.resolve=t,this.reject=i,e&&(yield e(t,i))})))).finally((()=>{var e;return null===(e=this.onFinally)||void 0===e?void 0:e.call(this)}))}}class qr{constructor(){this._locking=Promise.resolve(),this._locks=0}isLocked(){return this._locks>0}lock(){let e;this._locks+=1;const t=new Promise((t=>e=()=>{this._locks-=1,t()})),i=this._locking.then((()=>e));return this._locking=this._locking.then((()=>t)),i}}function Kr(e){if("string"==typeof e)return e;if(Array.isArray(e))return e[0];if(e.exact)return Array.isArray(e.exact)?e.exact[0]:e.exact;if(e.ideal)return Array.isArray(e.ideal)?e.ideal[0]:e.ideal;throw Error("could not unwrap constraint")}function Wr(e){return e.startsWith("ws")?e.replace(/^(ws)/,"http"):e}var Hr;!function(e){e[e.WAITING=0]="WAITING",e[e.RUNNING=1]="RUNNING",e[e.COMPLETED=2]="COMPLETED"}(Hr||(Hr={}));class Gr{constructor(){this.pendingTasks=new Map,this.taskMutex=new qr,this.nextTaskIndex=0}run(e){return gt(this,void 0,void 0,(function*(){const t={id:this.nextTaskIndex++,enqueuedAt:Date.now(),status:Hr.WAITING};this.pendingTasks.set(t.id,t);const i=yield this.taskMutex.lock();try{return t.executedAt=Date.now(),t.status=Hr.RUNNING,yield e()}finally{t.status=Hr.COMPLETED,this.pendingTasks.delete(t.id),i()}}))}flush(){return gt(this,void 0,void 0,(function*(){return this.run((()=>gt(this,void 0,void 0,(function*(){}))))}))}snapshot(){return Array.from(this.pendingTasks.values())}}const zr=["syncState","trickle","offer","answer","simulate","leave"];class Qr{constructor(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.rtt=0,this.resetCallbacks=()=>{this.onAnswer=void 0,this.onLeave=void 0,this.onLocalTrackPublished=void 0,this.onLocalTrackUnpublished=void 0,this.onNegotiateRequested=void 0,this.onOffer=void 0,this.onRemoteMuteChanged=void 0,this.onSubscribedQualityUpdate=void 0,this.onTokenRefresh=void 0,this.onTrickle=void 0,this.onClose=void 0},this.isConnected=!1,this.isReconnecting=!1,this.useJSON=e,this.requestQueue=new Gr,this.queuedRequests=[],this.closingLock=new qr}join(e,t,i,n){return gt(this,void 0,void 0,(function*(){this.isConnected=!1,this.options=i;return yield this.connect(e,t,i,n)}))}reconnect(e,t,i,n){return gt(this,void 0,void 0,(function*(){if(!this.options)return void a.warn("attempted to reconnect without signal options being set, ignoring");this.isReconnecting=!0,this.clearPingInterval();return yield this.connect(e,t,Object.assign(Object.assign({},this.options),{reconnect:!0,sid:i,reconnectReason:n}))}))}connect(e,t,i,n){this.connectOptions=i,e=(e=function(e){return e.startsWith("http")?e.replace(/^(http)/,"ws"):e}(e)).replace(/\/$/,""),e+="/rtc";const r=function(e,t,i){var n;const r=new URLSearchParams;r.set("access_token",e),i.reconnect&&(r.set("reconnect","1"),i.sid&&r.set("sid",i.sid));r.set("auto_subscribe",i.autoSubscribe?"1":"0"),r.set("sdk",Pr()?"reactnative":"js"),r.set("version",t.version),r.set("protocol",t.protocol.toString()),t.deviceModel&&r.set("device_model",t.deviceModel);t.os&&r.set("os",t.os);t.osVersion&&r.set("os_version",t.osVersion);t.browser&&r.set("browser",t.browser);t.browserVersion&&r.set("browser_version",t.browserVersion);void 0!==i.publishOnly&&r.set("publish",i.publishOnly);i.adaptiveStream&&r.set("adaptive_stream","1");i.reconnectReason&&r.set("reconnect_reason",i.reconnectReason.toString());(null===(n=navigator.connection)||void 0===n?void 0:n.type)&&r.set("network",navigator.connection.type);return"?".concat(r.toString())}(t,function(){var e;const t=new ct({sdk:Xe.JS,protocol:9,version:Kn});return Pr()&&(t.os=null!==(e=Dr())&&void 0!==e?e:""),t}(),i);return new Promise(((t,s)=>gt(this,void 0,void 0,(function*(){const o=()=>gt(this,void 0,void 0,(function*(){this.close(),clearTimeout(c),s(new Nn("room connection has been cancelled (signal)"))})),c=setTimeout((()=>{this.close(),s(new Nn("room connection has timed out (signal)"))}),i.websocketTimeout);(null==n?void 0:n.aborted)&&o(),null==n||n.addEventListener("abort",o),a.debug("connecting to ".concat(e+r)),this.ws&&(yield this.close()),this.ws=new WebSocket(e+r),this.ws.binaryType="arraybuffer",this.ws.onopen=()=>{clearTimeout(c)},this.ws.onerror=t=>gt(this,void 0,void 0,(function*(){if(this.isConnected)this.handleWSError(t);else{clearTimeout(c);try{const t=yield fetch("http".concat(e.substring(2),"/validate").concat(r));if(t.status.toFixed(0).startsWith("4")){const e=yield t.text();s(new Nn(e,0,t.status))}else s(new Nn("Internal error",2,t.status))}catch(e){s(new Nn("server was not reachable",1))}}})),this.ws.onmessage=e=>gt(this,void 0,void 0,(function*(){var r,c,d,u;let l;if("string"==typeof e.data){const t=JSON.parse(e.data);l=Gi.fromJson(t)}else{if(!(e.data instanceof ArrayBuffer))return void a.error("could not decode websocket message: ".concat(typeof e.data));l=Gi.fromBinary(new Uint8Array(e.data))}if(!this.isConnected){let e=!1;if("join"===(null===(r=l.message)||void 0===r?void 0:r.case)?(this.isConnected=!0,null==n||n.removeEventListener("abort",o),this.pingTimeoutDuration=l.message.value.pingTimeout,this.pingIntervalDuration=l.message.value.pingInterval,this.pingTimeoutDuration&&this.pingTimeoutDuration>0&&(a.debug("ping config",{timeout:this.pingTimeoutDuration,interval:this.pingIntervalDuration}),this.startPingInterval()),t(l.message.value)):i.reconnect?(this.isConnected=!0,null==n||n.removeEventListener("abort",o),this.startPingInterval(),"reconnect"===(null===(c=l.message)||void 0===c?void 0:c.case)?t(null===(d=l.message)||void 0===d?void 0:d.value):(t(),e=!0)):i.reconnect||s(new Nn("did not receive join response, got ".concat(null===(u=l.message)||void 0===u?void 0:u.case," instead"))),!e)return}this.signalLatency&&(yield mr(this.signalLatency)),this.handleSignalResponse(l)})),this.ws.onclose=e=>{a.warn("websocket closed",{ev:e}),this.handleOnClose(e.reason)}}))))}close(){return gt(this,void 0,void 0,(function*(){const e=yield this.closingLock.lock();try{if(this.isConnected=!1,this.ws){this.ws.onmessage=null,this.ws.onopen=null,this.ws.onclose=null;const e=new Promise((e=>{this.ws?this.ws.onclose=()=>{e()}:e()}));this.ws.readyState<this.ws.CLOSING&&(this.ws.close(),yield Promise.race([e,mr(250)])),this.ws=void 0}}finally{this.clearPingInterval(),e()}}))}sendOffer(e){a.debug("sending offer",e),this.sendRequest({case:"offer",value:Xr(e)})}sendAnswer(e){return a.debug("sending answer"),this.sendRequest({case:"answer",value:Xr(e)})}sendIceCandidate(e,t){return a.trace("sending ice candidate",e),this.sendRequest({case:"trickle",value:new Yi({candidateInit:JSON.stringify(e),target:t})})}sendMuteTrack(e,t){return this.sendRequest({case:"mute",value:new Xi({sid:e,muted:t})})}sendAddTrack(e){return this.sendRequest({case:"addTrack",value:e})}sendUpdateLocalMetadata(e,t){return this.sendRequest({case:"updateMetadata",value:new dn({metadata:e,name:t})})}sendUpdateTrackSettings(e){this.sendRequest({case:"trackSetting",value:e})}sendUpdateSubscription(e){return this.sendRequest({case:"subscription",value:e})}sendSyncState(e){return this.sendRequest({case:"syncState",value:e})}sendUpdateVideoLayers(e,t){return this.sendRequest({case:"updateLayers",value:new cn({trackSid:e,layers:t})})}sendUpdateSubscriptionPermissions(e,t){return this.sendRequest({case:"subscriptionPermission",value:new Tn({allParticipants:e,trackPermissions:t})})}sendSimulateScenario(e){return this.sendRequest({case:"simulate",value:e})}sendPing(){return Promise.all([this.sendRequest({case:"ping",value:M.parse(Date.now())}),this.sendRequest({case:"pingReq",value:new Pn({timestamp:M.parse(Date.now()),rtt:M.parse(this.rtt)})})])}sendLeave(){return this.sendRequest({case:"leave",value:new an({canReconnect:!1,reason:e.DisconnectReason.CLIENT_INITIATED})})}sendRequest(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return gt(this,void 0,void 0,(function*(){const i=!t&&!function(e){const t=zr.indexOf(e.case)>=0;return a.trace("request allowed to bypass queue:",{canPass:t,req:e}),t}(e);if(i&&this.isReconnecting)return void this.queuedRequests.push((()=>gt(this,void 0,void 0,(function*(){yield this.sendRequest(e,!0)}))));if(t||(yield this.requestQueue.flush()),this.signalLatency&&(yield mr(this.signalLatency)),!this.ws||this.ws.readyState!==this.ws.OPEN)return void a.error("cannot send signal request before connected, type: ".concat(null==e?void 0:e.case));const n=new Hi({message:e});try{this.useJSON?this.ws.send(n.toJsonString()):this.ws.send(n.toBinary())}catch(e){a.error("error sending signal message",{error:e})}}))}handleSignalResponse(e){var t,i;const n=e.message;if(null!=n)if("answer"===n.case){const e=Yr(n.value);this.onAnswer&&this.onAnswer(e)}else if("offer"===n.case){const e=Yr(n.value);this.onOffer&&this.onOffer(e)}else if("trickle"===n.case){const e=JSON.parse(n.value.candidateInit);this.onTrickle&&this.onTrickle(e,n.value.target)}else"update"===n.case?this.onParticipantUpdate&&this.onParticipantUpdate(null!==(t=n.value.participants)&&void 0!==t?t:[]):"trackPublished"===n.case?this.onLocalTrackPublished&&this.onLocalTrackPublished(n.value):"speakersChanged"===n.case?this.onSpeakersChanged&&this.onSpeakersChanged(null!==(i=n.value.speakers)&&void 0!==i?i:[]):"leave"===n.case?this.onLeave&&this.onLeave(n.value):"mute"===n.case?this.onRemoteMuteChanged&&this.onRemoteMuteChanged(n.value.sid,n.value.muted):"roomUpdate"===n.case?this.onRoomUpdate&&n.value.room&&this.onRoomUpdate(n.value.room):"connectionQuality"===n.case?this.onConnectionQuality&&this.onConnectionQuality(n.value):"streamStateUpdate"===n.case?this.onStreamStateUpdate&&this.onStreamStateUpdate(n.value):"subscribedQualityUpdate"===n.case?this.onSubscribedQualityUpdate&&this.onSubscribedQualityUpdate(n.value):"subscriptionPermissionUpdate"===n.case?this.onSubscriptionPermissionUpdate&&this.onSubscriptionPermissionUpdate(n.value):"refreshToken"===n.case?this.onTokenRefresh&&this.onTokenRefresh(n.value):"trackUnpublished"===n.case?this.onLocalTrackUnpublished&&this.onLocalTrackUnpublished(n.value):"subscriptionResponse"===n.case?this.onSubscriptionError&&this.onSubscriptionError(n.value):"pong"===n.case?this.resetPingTimeout():"pongResp"===n.case?(this.rtt=Date.now()-Number.parseInt(n.value.lastPingTimestamp.toString()),this.resetPingTimeout()):a.debug("unsupported message",n);else a.debug("received unsupported message")}setReconnected(){for(;this.queuedRequests.length>0;){const e=this.queuedRequests.shift();e&&this.requestQueue.run(e)}this.isReconnecting=!1}handleOnClose(e){return gt(this,void 0,void 0,(function*(){if(!this.isConnected)return;const t=this.onClose;yield this.close(),a.debug("websocket connection closed: ".concat(e)),t&&t(e)}))}handleWSError(e){a.error("websocket error",e)}resetPingTimeout(){this.clearPingTimeout(),this.pingTimeoutDuration?this.pingTimeout=Bn.setTimeout((()=>{a.warn("ping timeout triggered. last pong received at: ".concat(new Date(Date.now()-1e3*this.pingTimeoutDuration).toUTCString())),this.handleOnClose("ping timeout")}),1e3*this.pingTimeoutDuration):a.warn("ping timeout duration not set")}clearPingTimeout(){this.pingTimeout&&Bn.clearTimeout(this.pingTimeout)}startPingInterval(){this.clearPingInterval(),this.resetPingTimeout(),this.pingIntervalDuration?(a.debug("start ping interval"),this.pingInterval=Bn.setInterval((()=>{this.sendPing()}),1e3*this.pingIntervalDuration)):a.warn("ping interval duration not set")}clearPingInterval(){a.debug("clearing ping interval"),this.clearPingTimeout(),this.pingInterval&&Bn.clearInterval(this.pingInterval)}}function Yr(e){const t={type:"offer",sdp:e.sdp};switch(e.type){case"answer":case"offer":case"pranswer":case"rollback":t.type=e.type}return t}function Xr(e){return new nn({sdp:e.sdp,type:e.type})}const Zr="AES-GCM",$r="lk_e2ee",es={sharedKey:!1,ratchetSalt:"LKFrameEncryptionKey",ratchetWindowSize:8,failureTolerance:10};var ts,is;function ns(){return ss()||rs()}function rs(){return void 0!==window.RTCRtpScriptTransform}function ss(){return void 0!==window.RTCRtpSender&&void 0!==window.RTCRtpSender.prototype.createEncodedStreams}function os(e){return gt(this,void 0,void 0,(function*(){let t=new TextEncoder;return yield crypto.subtle.importKey("raw",t.encode(e),{name:"PBKDF2"},!1,["deriveBits","deriveKey"])}))}function as(e){return gt(this,void 0,void 0,(function*(){return yield crypto.subtle.importKey("raw",e,"HKDF",!1,["deriveBits","deriveKey"])}))}function cs(e,t){const i=(new TextEncoder).encode(t);switch(e){case"HKDF":return{name:"HKDF",salt:i,hash:"SHA-256",info:new ArrayBuffer(128)};case"PBKDF2":return{name:"PBKDF2",salt:i,hash:"SHA-256",iterations:1e5};default:throw new Error("algorithm ".concat(e," is currently unsupported"))}}function ds(e){const t=e.split("/")[1].toLowerCase();if(!Gn.includes(t))throw Error("Video codec not supported: ".concat(t));return t}e.KeyProviderEvent=void 0,(ts=e.KeyProviderEvent||(e.KeyProviderEvent={})).SetKey="setKey",ts.RatchetRequest="ratchetRequest",ts.KeyRatcheted="keyRatcheted",e.KeyHandlerEvent=void 0,(e.KeyHandlerEvent||(e.KeyHandlerEvent={})).KeyRatcheted="keyRatcheted",e.EncryptionEvent=void 0,(is=e.EncryptionEvent||(e.EncryptionEvent={})).ParticipantEncryptionStatusChanged="participantEncryptionStatusChanged",is.EncryptionError="encryptionError",e.CryptorEvent=void 0,(e.CryptorEvent||(e.CryptorEvent={})).Error="cryptorError";class us extends xt.EventEmitter{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this.onKeyRatcheted=(e,t)=>{a.debug("key ratcheted event received",{material:e,keyIndex:t})},this.keyInfoMap=new Map,this.options=Object.assign(Object.assign({},es),t),this.on(e.KeyProviderEvent.KeyRatcheted,this.onKeyRatcheted)}onSetEncryptionKey(t,i,n){const r={key:t,participantIdentity:i,keyIndex:n};this.keyInfoMap.set("".concat(null!=i?i:"shared","-").concat(null!=n?n:0),r),this.emit(e.KeyProviderEvent.SetKey,r)}getKeys(){return Array.from(this.keyInfoMap.values())}getOptions(){return this.options}ratchetKey(t,i){this.emit(e.KeyProviderEvent.RatchetRequest,t,i)}}function ls(e,t,i){var n,r,s;void 0===t&&(t=50),void 0===i&&(i={});var o=null!=(n=i.isImmediate)&&n,a=null!=(r=i.callback)&&r,c=i.maxWait,d=Date.now(),u=[];function l(){if(void 0!==c){var e=Date.now()-d;if(e+t>=c)return c-e}return t}var h=function(){var t=[].slice.call(arguments),i=this;return new Promise((function(n,r){var c=o&&void 0===s;if(void 0!==s&&clearTimeout(s),s=setTimeout((function(){if(s=void 0,d=Date.now(),!o){var n=e.apply(i,t);a&&a(n),u.forEach((function(e){return(0,e.resolve)(n)})),u=[]}}),l()),c){var h=e.apply(i,t);return a&&a(h),n(h)}u.push({resolve:n,reject:r})}))};return h.cancel=function(e){void 0!==s&&clearTimeout(s),u.forEach((function(t){return(0,t.reject)(e)})),u=[]},h}const hs="default";class ps{static getInstance(){return void 0===this.instance&&(this.instance=new ps),this.instance}getDevices(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];var i;return gt(this,void 0,void 0,(function*(){if((null===(i=ps.userMediaPromiseMap)||void 0===i?void 0:i.size)>0){a.debug("awaiting getUserMedia promise");try{e?yield ps.userMediaPromiseMap.get(e):yield Promise.all(ps.userMediaPromiseMap.values())}catch(e){a.warn("error waiting for media permissons")}}let n=yield navigator.mediaDevices.enumerateDevices();if(t&&(!wr()||!this.hasDeviceInUse(e))){if(0===n.length||n.some((t=>{const i=""===t.label,n=!e||t.kind===e;return i&&n}))){const t={video:"audioinput"!==e&&"audiooutput"!==e,audio:"videoinput"!==e},i=yield navigator.mediaDevices.getUserMedia(t);n=yield navigator.mediaDevices.enumerateDevices(),i.getTracks().forEach((e=>{e.stop()}))}}return e&&(n=n.filter((t=>t.kind===e))),n}))}normalizeDeviceId(e,t,i){return gt(this,void 0,void 0,(function*(){if(t!==hs)return t;const n=(yield this.getDevices(e)).find((e=>e.groupId===i&&e.deviceId!==hs));return null==n?void 0:n.deviceId}))}hasDeviceInUse(e){return e?ps.userMediaPromiseMap.has(e):ps.userMediaPromiseMap.size>0}}ps.mediaDeviceKinds=["audioinput","audiooutput","videoinput"],ps.userMediaPromiseMap=new Map;class ms extends sr{get constraints(){return this._constraints}constructor(t,i,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];super(t,i),this._isUpstreamPaused=!1,this.handleTrackMuteEvent=()=>this.debouncedTrackMuteHandler().catch((()=>a.debug("track mute bounce got cancelled by an unmute event"))),this.debouncedTrackMuteHandler=ls((()=>gt(this,void 0,void 0,(function*(){yield this.pauseUpstream()}))),5e3),this.handleTrackUnmuteEvent=()=>gt(this,void 0,void 0,(function*(){this.debouncedTrackMuteHandler.cancel("unmute"),yield this.resumeUpstream()})),this.handleEnded=()=>{this.isInBackground&&(this.reacquireTrack=!0),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.emit(e.TrackEvent.Ended,this)},this.reacquireTrack=!1,this.providedByUser=r,this.muteLock=new qr,this.pauseUpstreamLock=new qr,this.processorLock=new qr,this.setMediaStreamTrack(t,!0),this._constraints=t.getConstraints(),n&&(this._constraints=n)}get id(){return this._mediaStreamTrack.id}get dimensions(){if(this.kind!==sr.Kind.Video)return;const{width:e,height:t}=this._mediaStreamTrack.getSettings();return e&&t?{width:e,height:t}:void 0}get isUpstreamPaused(){return this._isUpstreamPaused}get isUserProvided(){return this.providedByUser}get mediaStreamTrack(){var e,t;return null!==(t=null===(e=this.processor)||void 0===e?void 0:e.processedTrack)&&void 0!==t?t:this._mediaStreamTrack}setMediaStreamTrack(e,t){return gt(this,void 0,void 0,(function*(){if(e===this._mediaStreamTrack&&!t)return;let i;if(this._mediaStreamTrack&&(this.attachedElements.forEach((e=>{ar(this._mediaStreamTrack,e)})),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),this.providedByUser||this._mediaStreamTrack===e||this._mediaStreamTrack.stop()),this.mediaStream=new MediaStream([e]),e&&(e.addEventListener("ended",this.handleEnded),e.addEventListener("mute",this.handleTrackMuteEvent),e.addEventListener("unmute",this.handleTrackUnmuteEvent),this._constraints=e.getConstraints()),this.processor&&e&&this.processorElement){if(a.debug("restarting processor"),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");or(e,this.processorElement),yield this.processor.restart({track:e,kind:this.kind,element:this.processorElement}),i=this.processor.processedTrack}this.sender&&(yield this.sender.replaceTrack(null!=i?i:e)),this._mediaStreamTrack=e,e&&(this._mediaStreamTrack.enabled=!this.isMuted,yield this.resumeUpstream(),this.attachedElements.forEach((t=>{or(null!=i?i:e,t)})))}))}waitForDimensions(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;return gt(this,void 0,void 0,(function*(){if(this.kind===sr.Kind.Audio)throw new Error("cannot get dimensions for audio tracks");const t=Date.now();for(;Date.now()-t<e;){const e=this.dimensions;if(e)return e;yield mr(50)}throw new On("unable to get track dimensions after timeout")}))}getDeviceId(){return gt(this,void 0,void 0,(function*(){if(this.source===sr.Source.ScreenShare)return;const{deviceId:e,groupId:t}=this._mediaStreamTrack.getSettings(),i=this.kind===sr.Kind.Audio?"audioinput":"videoinput";return ps.getInstance().normalizeDeviceId(i,e,t)}))}mute(){return gt(this,void 0,void 0,(function*(){return this.setTrackMuted(!0),this}))}unmute(){return gt(this,void 0,void 0,(function*(){return this.setTrackMuted(!1),this}))}replaceTrack(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return gt(this,void 0,void 0,(function*(){if(!this.sender)throw new On("unable to replace an unpublished track");return a.debug("replace MediaStreamTrack"),yield this.setMediaStreamTrack(e),this.providedByUser=t,this.processor&&(yield this.stopProcessor()),this}))}restart(t){return gt(this,void 0,void 0,(function*(){t||(t=this._constraints),a.debug("restarting track with constraints",t);const i={audio:!1,video:!1};this.kind===sr.Kind.Video?i.video=t:i.audio=t,this.attachedElements.forEach((e=>{ar(this.mediaStreamTrack,e)})),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.stop();const n=(yield navigator.mediaDevices.getUserMedia(i)).getTracks()[0];return n.addEventListener("ended",this.handleEnded),a.debug("re-acquired MediaStreamTrack"),yield this.setMediaStreamTrack(n),this._constraints=t,this.emit(e.TrackEvent.Restarted,this),this}))}setTrackMuted(t){a.debug("setting ".concat(this.kind," track ").concat(t?"muted":"unmuted")),this.isMuted===t&&this._mediaStreamTrack.enabled!==t||(this.isMuted=t,this._mediaStreamTrack.enabled=!t,this.emit(t?e.TrackEvent.Muted:e.TrackEvent.Unmuted,this))}get needsReAcquisition(){return"live"!==this._mediaStreamTrack.readyState||this._mediaStreamTrack.muted||!this._mediaStreamTrack.enabled||this.reacquireTrack}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return gt(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),Er()&&(a.debug("visibility changed, is in Background: ".concat(this.isInBackground)),this.isInBackground||!this.needsReAcquisition||this.isUserProvided||this.isMuted||(a.debug("track needs to be reacquired, restarting ".concat(this.source)),yield this.restart(),this.reacquireTrack=!1))}))}stop(){var e;super.stop(),this._mediaStreamTrack.removeEventListener("ended",this.handleEnded),this._mediaStreamTrack.removeEventListener("mute",this.handleTrackMuteEvent),this._mediaStreamTrack.removeEventListener("unmute",this.handleTrackUnmuteEvent),null===(e=this.processor)||void 0===e||e.destroy(),this.processor=void 0}pauseUpstream(){return gt(this,void 0,void 0,(function*(){const t=yield this.pauseUpstreamLock.lock();try{if(!0===this._isUpstreamPaused)return;if(!this.sender)return void a.warn("unable to pause upstream for an unpublished track");this._isUpstreamPaused=!0,this.emit(e.TrackEvent.UpstreamPaused,this);const t=jn();if("Safari"===(null==t?void 0:t.name)&&Lr(t.version,"12.0")<0)throw new An("pauseUpstream is not supported on Safari < 12.");yield this.sender.replaceTrack(null)}finally{t()}}))}resumeUpstream(){return gt(this,void 0,void 0,(function*(){const t=yield this.pauseUpstreamLock.lock();try{if(!1===this._isUpstreamPaused)return;if(!this.sender)return void a.warn("unable to resume upstream for an unpublished track");this._isUpstreamPaused=!1,this.emit(e.TrackEvent.UpstreamResumed,this),yield this.sender.replaceTrack(this._mediaStreamTrack)}finally{t()}}))}setProcessor(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];var i,n;return gt(this,void 0,void 0,(function*(){const r=yield this.processorLock.lock();try{if(a.debug("setting up processor"),this.processor&&(yield this.stopProcessor()),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");this.processorElement=null!==(i=this.processorElement)&&void 0!==i?i:document.createElement(this.kind),this.processorElement.muted=!0,or(this._mediaStreamTrack,this.processorElement),this.processorElement.play().catch((e=>a.error("failed to play processor element",{error:e})));const r={kind:this.kind,track:this._mediaStreamTrack,element:this.processorElement};if(yield e.init(r),this.processor=e,this.processor.processedTrack){for(const e of this.attachedElements)e!==this.processorElement&&t&&(ar(this._mediaStreamTrack,e),or(this.processor.processedTrack,e));yield null===(n=this.sender)||void 0===n?void 0:n.replaceTrack(this.processor.processedTrack)}}finally{r()}}))}getProcessor(){return this.processor}stopProcessor(){var e,t;return gt(this,void 0,void 0,(function*(){this.processor&&(a.debug("stopping processor"),null===(e=this.processor.processedTrack)||void 0===e||e.stop(),yield this.processor.destroy(),this.processor=void 0,null===(t=this.processorElement)||void 0===t||t.remove(),this.processorElement=void 0,yield this.restart())}))}}class fs extends xt.EventEmitter{constructor(t){super(),this.onWorkerMessage=t=>{var i,n;const{kind:r,data:s}=t.data;switch(r){case"error":a.error(s.error.message),this.emit(e.EncryptionEvent.EncryptionError,s.error);break;case"initAck":s.enabled&&this.keyProvider.getKeys().forEach((e=>{this.postKey(e)}));break;case"enable":if(this.encryptionEnabled!==s.enabled&&s.participantIdentity===(null===(i=this.room)||void 0===i?void 0:i.localParticipant.identity))this.emit(e.EncryptionEvent.ParticipantEncryptionStatusChanged,s.enabled,this.room.localParticipant),this.encryptionEnabled=s.enabled;else if(s.participantIdentity){const t=null===(n=this.room)||void 0===n?void 0:n.getParticipantByIdentity(s.participantIdentity);if(!t)throw TypeError("couldn't set encryption status, participant not found".concat(s.participantIdentity));this.emit(e.EncryptionEvent.ParticipantEncryptionStatusChanged,s.enabled,t)}this.encryptionEnabled&&this.keyProvider.getKeys().forEach((e=>{this.postKey(e)}));break;case"ratchetKey":this.keyProvider.emit(e.KeyProviderEvent.KeyRatcheted,s.material,s.keyIndex)}},this.onWorkerError=t=>{a.error("e2ee worker encountered an error:",{error:t.error}),this.emit(e.EncryptionEvent.EncryptionError,t.error)},this.keyProvider=t.keyProvider,this.worker=t.worker,this.encryptionEnabled=!1}setup(e){if(!ns())throw new An("tried to setup end-to-end encryption on an unsupported browser");if(a.info("setting up e2ee"),e!==this.room){this.room=e,this.setupEventListeners(e,this.keyProvider);const t={kind:"init",data:{keyProviderOptions:this.keyProvider.getOptions()}};this.worker&&(a.info("initializing worker",{worker:this.worker}),this.worker.onmessage=this.onWorkerMessage,this.worker.onerror=this.onWorkerError,this.worker.postMessage(t))}}setParticipantCryptorEnabled(e,t){a.debug("set e2ee to ".concat(e," for participant ").concat(t)),this.postEnable(e,t)}setSifTrailer(e){e&&0!==e.length?this.postSifTrailer(e):a.warn("ignoring server sent trailer as it's empty")}setupEngine(t){t.on(e.EngineEvent.RTPVideoMapUpdate,(e=>{this.postRTPMap(e)}))}setupEventListeners(t,i){t.on(e.RoomEvent.TrackPublished,((e,t)=>this.setParticipantCryptorEnabled(e.trackInfo.encryption!==ze.NONE,t.identity))),t.on(e.RoomEvent.ConnectionStateChanged,(i=>{i===e.ConnectionState.Connected&&t.participants.forEach((e=>{e.tracks.forEach((t=>{this.setParticipantCryptorEnabled(t.trackInfo.encryption!==ze.NONE,e.identity)}))}))})).on(e.RoomEvent.TrackUnsubscribed,((e,t,i)=>{var n;const r={kind:"removeTransform",data:{participantIdentity:i.identity,trackId:e.mediaStreamID}};null===(n=this.worker)||void 0===n||n.postMessage(r)})).on(e.RoomEvent.TrackSubscribed,((e,t,i)=>{this.setupE2EEReceiver(e,i.identity,t.trackInfo)})).on(e.RoomEvent.SignalConnected,(()=>{if(!this.room)throw new TypeError("expected room to be present on signal connect");this.setParticipantCryptorEnabled(this.room.localParticipant.isE2EEEnabled,this.room.localParticipant.identity),i.getKeys().forEach((e=>{this.postKey(e)}))})),t.localParticipant.on(e.ParticipantEvent.LocalTrackPublished,(e=>gt(this,void 0,void 0,(function*(){this.setupE2EESender(e.track,e.track.sender)})))),i.on(e.KeyProviderEvent.SetKey,(e=>this.postKey(e))).on(e.KeyProviderEvent.RatchetRequest,((e,t)=>this.postRatchetRequest(e,t)))}postRatchetRequest(e,t){if(!this.worker)throw Error("could not ratchet key, worker is missing");const i={kind:"ratchetRequest",data:{participantIdentity:e,keyIndex:t}};this.worker.postMessage(i)}postKey(e){let{key:t,participantIdentity:i,keyIndex:n}=e;var r;if(!this.worker)throw Error("could not set key, worker is missing");const s={kind:"setKey",data:{participantIdentity:i,isPublisher:i===(null===(r=this.room)||void 0===r?void 0:r.localParticipant.identity),key:t,keyIndex:n}};this.worker.postMessage(s)}postEnable(e,t){if(!this.worker)throw new ReferenceError("failed to enable e2ee, worker is not ready");{const i={kind:"enable",data:{enabled:e,participantIdentity:t}};this.worker.postMessage(i)}}postRTPMap(e){var t;if(!this.worker)throw TypeError("could not post rtp map, worker is missing");if(!(null===(t=this.room)||void 0===t?void 0:t.localParticipant.identity))throw TypeError("could not post rtp map, local participant identity is missing");const i={kind:"setRTPMap",data:{map:e,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(i)}postSifTrailer(e){if(!this.worker)throw Error("could not post SIF trailer, worker is missing");const t={kind:"setSifTrailer",data:{trailer:e}};this.worker.postMessage(t)}setupE2EEReceiver(e,t,i){if(e.receiver){if(!(null==i?void 0:i.mimeType)||""===i.mimeType)throw new TypeError("MimeType missing from trackInfo, cannot set up E2EE cryptor");this.handleReceiver(e.receiver,e.mediaStreamID,t,"video"===e.kind?ds(i.mimeType):void 0)}}setupE2EESender(e,t){e instanceof ms&&t?this.handleSender(t,e.mediaStreamID,void 0):t||a.warn("early return because sender is not ready")}handleReceiver(e,t,i,n){return gt(this,void 0,void 0,(function*(){if(this.worker){if(rs()){const r={kind:"decode",participantIdentity:i,trackId:t,codec:n};e.transform=new RTCRtpScriptTransform(this.worker,r)}else{if($r in e&&n){const e={kind:"updateCodec",data:{trackId:t,codec:n,participantIdentity:i}};return void this.worker.postMessage(e)}let r=e.writableStream,s=e.readableStream;if(!r||!s){const t=e.createEncodedStreams();e.writableStream=t.writable,r=t.writable,e.readableStream=t.readable,s=t.readable}const o={kind:"decode",data:{readableStream:s,writableStream:r,trackId:t,codec:n,participantIdentity:i}};this.worker.postMessage(o,[s,r])}e[$r]=!0}}))}handleSender(e,t,i){var n;if(!($r in e)&&this.worker){if(!(null===(n=this.room)||void 0===n?void 0:n.localParticipant.identity)||""===this.room.localParticipant.identity)throw TypeError("local identity needs to be known in order to set up encrypted sender");if(rs()){a.info("initialize script transform");const n={kind:"encode",participantIdentity:this.room.localParticipant.identity,trackId:t,codec:i};e.transform=new RTCRtpScriptTransform(this.worker,n)}else{a.info("initialize encoded streams");const n=e.createEncodedStreams(),r={kind:"encode",data:{readableStream:n.readable,writableStream:n.writable,codec:i,trackId:t,participantIdentity:this.room.localParticipant.identity}};this.worker.postMessage(r,[n.readable,n.writable])}e[$r]=!0}}}var vs={},gs={exports:{}},ys=gs.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+(e["encrypt-uri"]?" %s":"%v")+" %s"+(e.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{name:"sourceFilter",reg:/^source-filter: *(excl|incl) (\S*) (IP4|IP6|\*) (\S*) (.*)/,names:["filterMode","netType","addressTypes","destAddress","srcList"],format:"source-filter: %s %s %s %s %s"},{name:"bundleOnly",reg:/^(bundle-only)/},{name:"label",reg:/^label:(.+)/,format:"label:%s"},{name:"sctpPort",reg:/^sctp-port:(\d+)$/,format:"sctp-port:%s"},{name:"maxMessageSize",reg:/^max-message-size:(\d+)$/,format:"max-message-size:%s"},{push:"tsRefClocks",reg:/^ts-refclk:([^\s=]*)(?:=(\S*))?/,names:["clksrc","clksrcExt"],format:function(e){return"ts-refclk:%s"+(null!=e.clksrcExt?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(e){var t="mediaclk:";return t+=null!=e.id?"id=%s %s":"%v%s",t+=null!=e.mediaClockValue?"=%s":"",t+=null!=e.rateNumerator?" rate=%s":"",t+=null!=e.rateDenominator?"/%s":""}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(ys).forEach((function(e){ys[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}));var ks=gs.exports;!function(e){var t=function(e){return String(Number(e))===e?Number(e):e},i=function(e,i,n){var r=e.name&&e.names;e.push&&!i[e.push]?i[e.push]=[]:r&&!i[e.name]&&(i[e.name]={});var s=e.push?{}:r?i[e.name]:i;!function(e,i,n,r){if(r&&!n)i[r]=t(e[1]);else for(var s=0;s<n.length;s+=1)null!=e[s+1]&&(i[n[s]]=t(e[s+1]))}(n.match(e.reg),s,e.names,e.name),e.push&&i[e.push].push(s)},n=ks,r=RegExp.prototype.test.bind(/^([a-z])=(.*)/);e.parse=function(e){var t={},s=[],o=t;return e.split(/(\r\n|\r|\n)/).filter(r).forEach((function(e){var t=e[0],r=e.slice(2);"m"===t&&(s.push({rtp:[],fmtp:[]}),o=s[s.length-1]);for(var a=0;a<(n[t]||[]).length;a+=1){var c=n[t][a];if(c.reg.test(r))return i(c,o,r)}})),t.media=s,t};var s=function(e,i){var n=i.split(/=(.+)/,2);return 2===n.length?e[n[0]]=t(n[1]):1===n.length&&i.length>1&&(e[n[0]]=void 0),e};e.parseParams=function(e){return e.split(/;\s?/).reduce(s,{})},e.parseFmtpConfig=e.parseParams,e.parsePayloads=function(e){return e.toString().split(" ").map(Number)},e.parseRemoteCandidates=function(e){for(var i=[],n=e.split(" ").map(t),r=0;r<n.length;r+=3)i.push({component:n[r],ip:n[r+1],port:n[r+2]});return i},e.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},e.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var i,n=!1;return"~"!==e[0]?i=t(e):(i=t(e.substring(1,e.length)),n=!0),{scid:i,paused:n}}))}))}}(vs);var bs=ks,Ts=/%[sdv%]/g,Ss=function(e){var t=1,i=arguments,n=i.length;return e.replace(Ts,(function(e){if(t>=n)return e;var r=i[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(r);case"%d":return Number(r);case"%v":return""}}))},ws=function(e,t,i){var n=[e+"="+(t.format instanceof Function?t.format(t.push?i:i[t.name]):t.format)];if(t.names)for(var r=0;r<t.names.length;r+=1){var s=t.names[r];t.name?n.push(i[t.name][s]):n.push(i[t.names[r]])}else n.push(i[t.name]);return Ss.apply(null,n)},Es=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Cs=["i","c","b","a"],Ps=vs,Rs=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var i=t.outerOrder||Es,n=t.innerOrder||Cs,r=[];return i.forEach((function(t){bs[t].forEach((function(i){i.name in e&&null!=e[i.name]?r.push(ws(t,i,e)):i.push in e&&null!=e[i.push]&&e[i.push].forEach((function(e){r.push(ws(t,i,e))}))}))})),e.media.forEach((function(e){r.push(ws("m",bs.m[0],e)),n.forEach((function(t){bs[t].forEach((function(i){i.name in e&&null!=e[i.name]?r.push(ws(t,i,e)):i.push in e&&null!=e[i.push]&&e[i.push].forEach((function(e){r.push(ws(t,i,e))}))}))}))})),r.join("\r\n")+"\r\n"},Is=Rs,Ds=Ps.parse;const _s="negotiationStarted",Ls="negotiationComplete",Ns="rtpVideoPayloadTypes";class As extends xt.EventEmitter{get pc(){if(this._pc)return this._pc;throw new xn("Expected peer connection to be available")}constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var i;super(),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate=!1,this.trackBitrates=[],this.remoteStereoMids=[],this.remoteNackMids=[],this.negotiate=ls((e=>{this.emit(_s);try{this.createAndSendOffer()}catch(t){if(!e)throw t;e(t)}}),100),this._pc="Chrome"===(null===(i=jn())||void 0===i?void 0:i.name)?new RTCPeerConnection(e,t):new RTCPeerConnection(e)}get isICEConnected(){return null!==this._pc&&("connected"===this.pc.iceConnectionState||"completed"===this.pc.iceConnectionState)}addIceCandidate(e){return gt(this,void 0,void 0,(function*(){if(this.pc.remoteDescription&&!this.restartingIce)return this.pc.addIceCandidate(e);this.pendingCandidates.push(e)}))}setRemoteDescription(e){var t;return gt(this,void 0,void 0,(function*(){let i;if("offer"===e.type){let{stereoMids:t,nackMids:i}=function(e){var t;const i=[],n=[],r=Ds(null!==(t=e.sdp)&&void 0!==t?t:"");let s=0;return r.media.forEach((e=>{var t;"audio"===e.type&&(e.rtp.some((e=>"opus"===e.codec&&(s=e.payload,!0))),(null===(t=e.rtcpFb)||void 0===t?void 0:t.some((e=>e.payload===s&&"nack"===e.type)))&&n.push(e.mid),e.fmtp.some((t=>t.payload===s&&(t.config.includes("sprop-stereo=1")&&i.push(e.mid),!0))))})),{stereoMids:i,nackMids:n}}(e);this.remoteStereoMids=t,this.remoteNackMids=i}else if("answer"===e.type){const n=Ds(null!==(t=e.sdp)&&void 0!==t?t:"");n.media.forEach((e=>{"audio"===e.type&&this.trackBitrates.some((t=>{if(!t.transceiver||e.mid!=t.transceiver.mid)return!1;let i=0;if(e.rtp.some((e=>e.codec.toUpperCase()===t.codec.toUpperCase()&&(i=e.payload,!0))),0===i)return!0;let n=!1;for(const r of e.fmtp)if(r.payload===i){r.config=r.config.split(";").filter((e=>!e.includes("maxaveragebitrate"))).join(";"),t.maxbr>0&&(r.config+=";maxaveragebitrate=".concat(1e3*t.maxbr)),n=!0;break}return n||t.maxbr>0&&e.fmtp.push({payload:i,config:"maxaveragebitrate=".concat(1e3*t.maxbr)}),!0}))})),i=Is(n)}if(yield this.setMungedSDP(e,i,!0),this.pendingCandidates.forEach((e=>{this.pc.addIceCandidate(e)})),this.pendingCandidates=[],this.restartingIce=!1,this.renegotiate)this.renegotiate=!1,this.createAndSendOffer();else if("answer"===e.type&&(this.emit(Ls),e.sdp)){Ds(e.sdp).media.forEach((e=>{"video"===e.type&&this.emit(Ns,e.rtp)}))}}))}createAndSendOffer(e){var t;return gt(this,void 0,void 0,(function*(){if(void 0===this.onOffer)return;if((null==e?void 0:e.iceRestart)&&(a.debug("restarting ICE"),this.restartingIce=!0),this._pc&&"have-local-offer"===this._pc.signalingState){const t=this.pc.remoteDescription;if(!(null==e?void 0:e.iceRestart)||!t)return void(this.renegotiate=!0);yield this.pc.setRemoteDescription(t)}else if(!this._pc||"closed"===this._pc.signalingState)return void a.warn("could not createOffer with closed peer connection");a.debug("starting to negotiate");const i=yield this.pc.createOffer(e),n=Ds(null!==(t=i.sdp)&&void 0!==t?t:"");n.media.forEach((e=>{"audio"===e.type?Os(e,[],[]):"video"===e.type&&(!function(e){var t,i,n,r;const s=null===(i=null===(t=e.rtp[0])||void 0===t?void 0:t.codec)||void 0===i?void 0:i.toLowerCase();if(!kr(s))return;let o=0;const a=null===(n=e.ext)||void 0===n?void 0:n.some((e=>e.uri===pr||(e.value>o&&(o=e.value),!1)));a||null===(r=e.ext)||void 0===r||r.push({value:o+1,uri:pr})}(e),this.trackBitrates.some((t=>{if(!e.msid||!t.cid||!e.msid.includes(t.cid))return!1;let i=0;if(e.rtp.some((e=>e.codec.toUpperCase()===t.codec.toUpperCase()&&(i=e.payload,!0))),0===i)return!0;let n=!1;for(const r of e.fmtp)if(r.payload===i){r.config.includes("x-google-start-bitrate")||(r.config+=";x-google-start-bitrate=".concat(.7*t.maxbr)),r.config.includes("x-google-max-bitrate")||(r.config+=";x-google-max-bitrate=".concat(t.maxbr)),n=!0;break}return n||e.fmtp.push({payload:i,config:"x-google-start-bitrate=".concat(.7*t.maxbr,";x-google-max-bitrate=").concat(t.maxbr)}),!0})))})),yield this.setMungedSDP(i,Is(n)),this.onOffer(i)}))}createAndSetAnswer(){var e;return gt(this,void 0,void 0,(function*(){const t=yield this.pc.createAnswer(),i=Ds(null!==(e=t.sdp)&&void 0!==e?e:"");return i.media.forEach((e=>{"audio"===e.type&&Os(e,this.remoteStereoMids,this.remoteNackMids)})),yield this.setMungedSDP(t,Is(i)),t}))}setTrackCodecBitrate(e){this.trackBitrates.push(e)}close(){this._pc&&(this._pc.close(),this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.ondatachannel=null,this._pc.onnegotiationneeded=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ondatachannel=null,this._pc.ontrack=null,this._pc.onconnectionstatechange=null,this._pc.oniceconnectionstatechange=null,this._pc=null)}setMungedSDP(e,t,i){return gt(this,void 0,void 0,(function*(){if(t){const n=e.sdp;e.sdp=t;try{return a.debug("setting munged ".concat(i?"remote":"local"," description")),void(i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e))}catch(i){a.warn("not able to set ".concat(e.type,", falling back to unmodified sdp"),{error:i,sdp:t}),e.sdp=n}}try{i?yield this.pc.setRemoteDescription(e):yield this.pc.setLocalDescription(e)}catch(t){let n="unknown error";t instanceof Error?n=t.message:"string"==typeof t&&(n=t);const r={error:n,sdp:e.sdp};throw!i&&this.pc.remoteDescription&&(r.remoteSdp=this.pc.remoteDescription),a.error("unable to set ".concat(e.type),r),new Un(n)}}))}}function Os(e,t,i){let n=0;e.rtp.some((e=>"opus"===e.codec&&(n=e.payload,!0))),n>0&&(e.rtcpFb||(e.rtcpFb=[]),i.includes(e.mid)&&!e.rtcpFb.some((e=>e.payload===n&&"nack"===e.type))&&e.rtcpFb.push({payload:n,type:"nack"}),t.includes(e.mid)&&e.fmtp.some((e=>e.payload===n&&(e.config.includes("stereo=1")||(e.config+=";stereo=1"),!0))))}const Ms={audioBitrate:e.AudioPresets.music.maxBitrate,audioPreset:e.AudioPresets.music,dtx:!0,red:!0,forceStereo:!1,simulcast:!0,screenShareEncoding:$n.h1080fps15.encoding,stopMicTrackOnMute:!1,videoCodec:"vp8",backupCodec:!1},xs={autoGainControl:!0,echoCancellation:!0,noiseSuppression:!0},Us={resolution:Xn.h720.resolution},Bs={adaptiveStream:!1,dynacast:!1,stopLocalTrackOnUnpublish:!0,reconnectPolicy:new vt,disconnectOnPageLeave:!0,expWebAudioMix:!1},Fs={autoSubscribe:!0,maxRetries:1,peerConnectionTimeout:15e3,websocketTimeout:15e3},Js="_lossy",js="_reliable",Vs="leave-reconnect";var qs;!function(e){e[e.New=0]="New",e[e.Connected=1]="Connected",e[e.Disconnected=2]="Disconnected",e[e.Reconnecting=3]="Reconnecting",e[e.Closed=4]="Closed"}(qs||(qs={}));class Ks extends xt.EventEmitter{get isClosed(){return this._isClosed}constructor(t){super(),this.options=t,this.rtcConfig={},this.peerConnectionTimeout=Fs.peerConnectionTimeout,this.fullReconnectOnNext=!1,this.subscriberPrimary=!1,this.pcState=qs.New,this._isClosed=!0,this.pendingTrackResolvers={},this.hasPublished=!1,this.reconnectAttempts=0,this.reconnectStart=0,this.attemptingReconnect=!1,this.joinAttempts=0,this.maxJoinAttempts=1,this.shouldFailNext=!1,this.handleDataChannel=e=>{let{channel:t}=e;return gt(this,void 0,void 0,(function*(){if(t){if(t.label===js)this.reliableDCSub=t;else{if(t.label!==Js)return;this.lossyDCSub=t}a.debug("on data channel ".concat(t.id,", ").concat(t.label)),t.onmessage=this.handleDataMessage}}))},this.handleDataMessage=t=>gt(this,void 0,void 0,(function*(){var i,n;const r=yield this.dataProcessLock.lock();try{let r;if(t.data instanceof ArrayBuffer)r=t.data;else{if(!(t.data instanceof Blob))return void a.error("unsupported data type",t.data);r=yield t.data.arrayBuffer()}const s=it.fromBinary(new Uint8Array(r));"speaker"===(null===(i=s.value)||void 0===i?void 0:i.case)?this.emit(e.EngineEvent.ActiveSpeakersUpdate,s.value.value.speakers):"user"===(null===(n=s.value)||void 0===n?void 0:n.case)&&this.emit(e.EngineEvent.DataPacketReceived,s.value.value,s.kind)}finally{r()}})),this.handleDataError=e=>{const t=0===e.currentTarget.maxRetransmits?"lossy":"reliable";if(e instanceof ErrorEvent&&e.error){const{error:i}=e.error;a.error("DataChannel error on ".concat(t,": ").concat(e.message),i)}else a.error("Unknown DataChannel error on ".concat(t),e)},this.handleBufferedAmountLow=t=>{const i=0===t.currentTarget.maxRetransmits?e.DataPacket_Kind.LOSSY:e.DataPacket_Kind.RELIABLE;this.updateAndEmitDCBufferStatus(i)},this.handleDisconnect=(t,i)=>{if(this._isClosed)return;a.warn("".concat(t," disconnected")),0===this.reconnectAttempts&&(this.reconnectStart=Date.now());const n=t=>{a.warn("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(t,"ms. giving up")),this.emit(e.EngineEvent.Disconnected),this.close()},r=Date.now()-this.reconnectStart;let s=this.getNextRetryDelay({elapsedMs:r,retryCount:this.reconnectAttempts});null!==s?(t===Vs&&(s=0),a.debug("reconnecting in ".concat(s,"ms")),this.clearReconnectTimeout(),this.token&&this.regionUrlProvider&&this.regionUrlProvider.updateToken(this.token),this.reconnectTimeout=Bn.setTimeout((()=>this.attemptReconnect(i)),s)):n(r)},this.waitForRestarted=()=>new Promise(((t,i)=>{this.pcState===qs.Connected&&t();const n=()=>{this.off(e.EngineEvent.Disconnected,r),t()},r=()=>{this.off(e.EngineEvent.Restarted,n),i()};this.once(e.EngineEvent.Restarted,n),this.once(e.EngineEvent.Disconnected,r)})),this.updateAndEmitDCBufferStatus=t=>{const i=this.isBufferStatusLow(t);void 0!==i&&i!==this.dcBufferStatus.get(t)&&(this.dcBufferStatus.set(t,i),this.emit(e.EngineEvent.DCBufferStatusChanged,i,t))},this.isBufferStatusLow=e=>{const t=this.dataChannelForKind(e);if(t)return t.bufferedAmount<=t.bufferedAmountLowThreshold},this.handleBrowserOnLine=()=>{this.client.isReconnecting&&(this.clearReconnectTimeout(),this.attemptReconnect(Be.RR_SIGNAL_DISCONNECTED))},this.client=new Qr,this.client.signalLatency=this.options.expSignalLatency,this.reconnectPolicy=this.options.reconnectPolicy,this.registerOnLineListener(),this.closingLock=new qr,this.dataProcessLock=new qr,this.dcBufferStatus=new Map([[e.DataPacket_Kind.LOSSY,!0],[e.DataPacket_Kind.RELIABLE,!0]]),this.client.onParticipantUpdate=t=>this.emit(e.EngineEvent.ParticipantUpdate,t),this.client.onConnectionQuality=t=>this.emit(e.EngineEvent.ConnectionQualityUpdate,t),this.client.onRoomUpdate=t=>this.emit(e.EngineEvent.RoomUpdate,t),this.client.onSubscriptionError=t=>this.emit(e.EngineEvent.SubscriptionError,t),this.client.onSubscriptionPermissionUpdate=t=>this.emit(e.EngineEvent.SubscriptionPermissionUpdate,t),this.client.onSpeakersChanged=t=>this.emit(e.EngineEvent.SpeakersChanged,t),this.client.onStreamStateUpdate=t=>this.emit(e.EngineEvent.StreamStateChanged,t)}join(e,t,i,n){return gt(this,void 0,void 0,(function*(){this.url=e,this.token=t,this.signalOpts=i,this.maxJoinAttempts=i.maxRetries;try{this.joinAttempts+=1,this.setupSignalClientCallbacks();const r=yield this.client.join(e,t,i,n);return this._isClosed=!1,this.latestJoinResponse=r,this.subscriberPrimary=r.subscriberPrimary,this.publisher||this.configure(r),this.subscriberPrimary||this.negotiate(),this.clientConfiguration=r.clientConfiguration,r}catch(r){if(r instanceof Nn&&1===r.reason&&(a.warn("Couldn't connect to server, attempt ".concat(this.joinAttempts," of ").concat(this.maxJoinAttempts)),this.joinAttempts<this.maxJoinAttempts))return this.join(e,t,i,n);throw r}}))}close(){return gt(this,void 0,void 0,(function*(){const t=yield this.closingLock.lock();if(this.isClosed)t();else try{this._isClosed=!0,this.emit(e.EngineEvent.Closing),this.removeAllListeners(),this.deregisterOnLineListener(),this.clearPendingReconnect(),yield this.cleanupPeerConnections(),yield this.cleanupClient()}finally{t()}}))}cleanupPeerConnections(){return gt(this,void 0,void 0,(function*(){this.publisher&&"closed"!==this.publisher.pc.signalingState&&this.publisher.pc.getSenders().forEach((e=>{var t,i;try{(null===(t=this.publisher)||void 0===t?void 0:t.pc.removeTrack)&&(null===(i=this.publisher)||void 0===i||i.pc.removeTrack(e))}catch(e){a.warn("could not removeTrack",{error:e})}})),this.publisher&&(this.publisher.close(),this.publisher=void 0),this.subscriber&&(this.subscriber.close(),this.subscriber=void 0),this.primaryPC=void 0;const e=e=>{e&&(e.close(),e.onbufferedamountlow=null,e.onclose=null,e.onclosing=null,e.onerror=null,e.onmessage=null,e.onopen=null)};e(this.lossyDC),e(this.lossyDCSub),e(this.reliableDC),e(this.reliableDCSub),this.lossyDC=void 0,this.lossyDCSub=void 0,this.reliableDC=void 0,this.reliableDCSub=void 0}))}cleanupClient(){return gt(this,void 0,void 0,(function*(){yield this.client.close(),this.client.resetCallbacks()}))}addTrack(e){if(this.pendingTrackResolvers[e.cid])throw new On("a track with the same ID has already been published");return new Promise(((t,i)=>{const n=setTimeout((()=>{delete this.pendingTrackResolvers[e.cid],i(new Nn("publication of local track timed out, no response from server"))}),1e4);this.pendingTrackResolvers[e.cid]={resolve:e=>{clearTimeout(n),t(e)},reject:()=>{clearTimeout(n),i(new Error("Cancelled publication by calling unpublish"))}},this.client.sendAddTrack(e)}))}removeTrack(e){var t;if(e.track&&this.pendingTrackResolvers[e.track.id]){const{reject:t}=this.pendingTrackResolvers[e.track.id];t&&t(),delete this.pendingTrackResolvers[e.track.id]}try{return null===(t=this.publisher)||void 0===t||t.pc.removeTrack(e),!0}catch(e){a.warn("failed to remove track",{error:e,method:"removeTrack"})}return!1}updateMuteStatus(e,t){this.client.sendMuteTrack(e,t)}get dataSubscriberReadyState(){var e;return null===(e=this.reliableDCSub)||void 0===e?void 0:e.readyState}getConnectedServerAddress(){return gt(this,void 0,void 0,(function*(){if(void 0!==this.primaryPC)return function(e){var t;return gt(this,void 0,void 0,(function*(){let i="";const n=new Map,r=new Map;if((yield e.getStats()).forEach((e=>{switch(e.type){case"transport":i=e.selectedCandidatePairId;break;case"candidate-pair":""===i&&e.selected&&(i=e.id),n.set(e.id,e);break;case"remote-candidate":r.set(e.id,"".concat(e.address,":").concat(e.port))}})),""===i)return;const s=null===(t=n.get(i))||void 0===t?void 0:t.remoteCandidateId;return void 0!==s?r.get(s):void 0}))}(this.primaryPC)}))}setRegionUrlProvider(e){this.regionUrlProvider=e}configure(t){var i,n;if(this.publisher||this.subscriber)return;this.participantSid=null===(i=t.participant)||void 0===i?void 0:i.sid;const r=this.makeRTCConfiguration(t);(null===(n=this.signalOpts)||void 0===n?void 0:n.e2eeEnabled)&&(a.debug("E2EE - setting up transports with insertable streams"),r.encodedInsertableStreams=!0);this.publisher=new As(r,{optional:[{googDscp:!0}]}),this.subscriber=new As(r),this.emit(e.EngineEvent.TransportsCreated,this.publisher,this.subscriber),this.publisher.pc.onicecandidate=e=>{e.candidate&&(a.trace("adding ICE candidate for peer",e.candidate),this.client.sendIceCandidate(e.candidate,ji.PUBLISHER))},this.subscriber.pc.onicecandidate=e=>{e.candidate&&this.client.sendIceCandidate(e.candidate,ji.SUBSCRIBER)},this.publisher.onOffer=e=>{this.client.sendOffer(e)};let s=this.publisher.pc,o=this.subscriber.pc,c=t.subscriberPrimary;c&&(s=this.subscriber.pc,o=this.publisher.pc,this.subscriber.pc.ondatachannel=this.handleDataChannel),this.primaryPC=s,s.onconnectionstatechange=()=>gt(this,void 0,void 0,(function*(){if(a.debug("primary PC state changed ".concat(s.connectionState)),"connected"===s.connectionState){const i=this.pcState===qs.New;this.pcState=qs.Connected,i&&this.emit(e.EngineEvent.Connected,t)}else"failed"===s.connectionState&&this.pcState===qs.Connected&&(this.pcState=qs.Disconnected,this.handleDisconnect("primary peerconnection",c?Be.RR_SUBSCRIBER_FAILED:Be.RR_PUBLISHER_FAILED))})),o.onconnectionstatechange=()=>gt(this,void 0,void 0,(function*(){a.debug("secondary PC state changed ".concat(o.connectionState)),"failed"===o.connectionState&&this.handleDisconnect("secondary peerconnection",c?Be.RR_PUBLISHER_FAILED:Be.RR_SUBSCRIBER_FAILED)})),this.subscriber.pc.ontrack=t=>{this.emit(e.EngineEvent.MediaTrackAdded,t.track,t.streams[0],t.receiver)},this.createDataChannels()}setupSignalClientCallbacks(){this.client.onAnswer=e=>gt(this,void 0,void 0,(function*(){this.publisher&&(a.debug("received server answer",{RTCSdpType:e.type,signalingState:this.publisher.pc.signalingState.toString()}),yield this.publisher.setRemoteDescription(e))})),this.client.onTrickle=(e,t)=>{this.publisher&&this.subscriber&&(a.trace("got ICE candidate from peer",{candidate:e,target:t}),t===ji.PUBLISHER?this.publisher.addIceCandidate(e):this.subscriber.addIceCandidate(e))},this.client.onOffer=e=>gt(this,void 0,void 0,(function*(){if(!this.subscriber)return;a.debug("received server offer",{RTCSdpType:e.type,signalingState:this.subscriber.pc.signalingState.toString()}),yield this.subscriber.setRemoteDescription(e);const t=yield this.subscriber.createAndSetAnswer();this.client.sendAnswer(t)})),this.client.onLocalTrackPublished=e=>{if(a.debug("received trackPublishedResponse",e),!this.pendingTrackResolvers[e.cid])return void a.error("missing track resolver for ".concat(e.cid));const{resolve:t}=this.pendingTrackResolvers[e.cid];delete this.pendingTrackResolvers[e.cid],t(e.track)},this.client.onTokenRefresh=e=>{this.token=e},this.client.onClose=()=>{this.handleDisconnect("signal",Be.RR_SIGNAL_DISCONNECTED)},this.client.onLeave=t=>{(null==t?void 0:t.canReconnect)?(this.fullReconnectOnNext=!0,this.primaryPC=void 0,this.handleDisconnect(Vs)):(this.emit(e.EngineEvent.Disconnected,null==t?void 0:t.reason),this.close()),a.trace("leave request",{leave:t})}}makeRTCConfiguration(e){const t=Object.assign({},this.rtcConfig);if(e.iceServers&&!t.iceServers){const i=[];e.iceServers.forEach((e=>{const t={urls:e.urls};e.username&&(t.username=e.username),e.credential&&(t.credential=e.credential),i.push(t)})),t.iceServers=i}return e.clientConfiguration&&e.clientConfiguration.forceRelay===xe.ENABLED&&(t.iceTransportPolicy="relay"),t.sdpSemantics="unified-plan",t.continualGatheringPolicy="gather_continually",t}createDataChannels(){this.publisher&&(this.lossyDC&&(this.lossyDC.onmessage=null,this.lossyDC.onerror=null),this.reliableDC&&(this.reliableDC.onmessage=null,this.reliableDC.onerror=null),this.lossyDC=this.publisher.pc.createDataChannel(Js,{ordered:!0,maxRetransmits:0}),this.reliableDC=this.publisher.pc.createDataChannel(js,{ordered:!0}),this.lossyDC.onmessage=this.handleDataMessage,this.reliableDC.onmessage=this.handleDataMessage,this.lossyDC.onerror=this.handleDataError,this.reliableDC.onerror=this.handleDataError,this.lossyDC.bufferedAmountLowThreshold=65535,this.reliableDC.bufferedAmountLowThreshold=65535,this.lossyDC.onbufferedamountlow=this.handleBufferedAmountLow,this.reliableDC.onbufferedamountlow=this.handleBufferedAmountLow)}setPreferredCodec(e,t,i){if(!("getCapabilities"in RTCRtpSender))return;const n=RTCRtpSender.getCapabilities(t);if(!n)return;a.debug("get capabilities",n);const r=[],s=[],o=[];n.codecs.forEach((e=>{const t=e.mimeType.toLowerCase();if("audio/opus"===t)return void r.push(e);t==="video/".concat(i)?"h264"!==i||e.sdpFmtpLine&&e.sdpFmtpLine.includes("profile-level-id=42e01f")?r.push(e):s.push(e):o.push(e)})),function(e){if(!Cr())return!1;if(!("setCodecPreferences"in e))return!1;const t=jn();if(!(null==t?void 0:t.name)||!t.version)return!1;const i=Tr[t.name];return!!i&&Lr(t.version,i)>=0}(e)&&e.setCodecPreferences(r.concat(s,o))}createSender(e,t,i){return gt(this,void 0,void 0,(function*(){if(fr()){return yield this.createTransceiverRTCRtpSender(e,t,i)}if(vr()){a.warn("using add-track fallback");return yield this.createRTCRtpSender(e.mediaStreamTrack)}throw new xn("Required webRTC APIs not supported on this device")}))}createSimulcastSender(e,t,i,n){return gt(this,void 0,void 0,(function*(){if(fr())return this.createSimulcastTransceiverSender(e,t,i,n);if(vr())return a.debug("using add-track fallback"),this.createRTCRtpSender(e.mediaStreamTrack);throw new xn("Cannot stream on this device")}))}createTransceiverRTCRtpSender(e,t,i){return gt(this,void 0,void 0,(function*(){if(!this.publisher)throw new xn("publisher is closed");const n=[];e.mediaStream&&n.push(e.mediaStream);const r={direction:"sendonly",streams:n};i&&(r.sendEncodings=i);const s=yield this.publisher.pc.addTransceiver(e.mediaStreamTrack,r);return e.kind===sr.Kind.Video&&t.videoCodec&&(this.setPreferredCodec(s,e.kind,t.videoCodec),e.codec=t.videoCodec),s.sender}))}createSimulcastTransceiverSender(e,t,i,n){return gt(this,void 0,void 0,(function*(){if(!this.publisher)throw new xn("publisher is closed");const r={direction:"sendonly"};n&&(r.sendEncodings=n);const s=yield this.publisher.pc.addTransceiver(t.mediaStreamTrack,r);if(i.videoCodec)return this.setPreferredCodec(s,e.kind,i.videoCodec),e.setSimulcastTrackSender(i.videoCodec,s.sender),s.sender}))}createRTCRtpSender(e){return gt(this,void 0,void 0,(function*(){if(!this.publisher)throw new xn("publisher is closed");return this.publisher.pc.addTrack(e)}))}attemptReconnect(t){var i,n,r;return gt(this,void 0,void 0,(function*(){if(!this._isClosed&&!this.attemptingReconnect){(null===(i=this.clientConfiguration)||void 0===i?void 0:i.resumeConnection)!==xe.DISABLED&&"closed"!==(null!==(r=null===(n=this.primaryPC)||void 0===n?void 0:n.signalingState)&&void 0!==r?r:"closed")||(this.fullReconnectOnNext=!0);try{this.attemptingReconnect=!0,this.fullReconnectOnNext?yield this.restartConnection():yield this.resumeConnection(t),this.clearPendingReconnect(),this.fullReconnectOnNext=!1}catch(t){this.reconnectAttempts+=1;let i=!0;t instanceof xn?(a.debug("received unrecoverable error",{error:t}),i=!1):t instanceof Ws||(this.fullReconnectOnNext=!0),i?this.handleDisconnect("reconnect",Be.RR_UNKNOWN):(a.info("could not recover connection after ".concat(this.reconnectAttempts," attempts, ").concat(Date.now()-this.reconnectStart,"ms. giving up")),this.emit(e.EngineEvent.Disconnected),yield this.close())}finally{this.attemptingReconnect=!1}}}))}getNextRetryDelay(e){try{return this.reconnectPolicy.nextRetryDelayInMs(e)}catch(e){a.warn("encountered error in reconnect policy",{error:e})}return null}restartConnection(t){var i,n,r;return gt(this,void 0,void 0,(function*(){try{if(!this.url||!this.token)throw new xn("could not reconnect, url or token not saved");let n;a.info("reconnecting, attempt: ".concat(this.reconnectAttempts)),this.emit(e.EngineEvent.Restarting),this.client.isConnected&&(yield this.client.sendLeave()),yield this.cleanupPeerConnections(),yield this.cleanupClient();try{if(!this.signalOpts)throw a.warn("attempted connection restart, without signal options present"),new Ws;n=yield this.join(null!=t?t:this.url,this.token,this.signalOpts)}catch(e){if(e instanceof Nn&&0===e.reason)throw new xn("could not reconnect, token might be expired");throw new Ws}if(this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");this.client.setReconnected(),this.emit(e.EngineEvent.SignalRestarted,n),yield this.waitForPCReconnected(),null===(i=this.regionUrlProvider)||void 0===i||i.resetAttempts(),this.emit(e.EngineEvent.Restarted)}catch(e){const t=yield null===(n=this.regionUrlProvider)||void 0===n?void 0:n.getNextBestRegionUrl();if(t)return void(yield this.restartConnection(t));throw null===(r=this.regionUrlProvider)||void 0===r||r.resetAttempts(),e}}))}resumeConnection(t){var i;return gt(this,void 0,void 0,(function*(){if(!this.url||!this.token)throw new xn("could not reconnect, url or token not saved");if(!this.publisher||!this.subscriber)throw new xn("publisher and subscriber connections unset");a.info("resuming signal connection, attempt ".concat(this.reconnectAttempts)),this.emit(e.EngineEvent.Resuming);try{this.setupSignalClientCallbacks();const e=yield this.client.reconnect(this.url,this.token,this.participantSid,t);if(e){const t=this.makeRTCConfiguration(e);this.publisher.pc.setConfiguration(t),this.subscriber.pc.setConfiguration(t)}}catch(e){let t="";if(e instanceof Error&&(t=e.message),e instanceof Nn&&0===e.reason)throw new xn("could not reconnect, token might be expired");throw new Ws(t)}if(this.emit(e.EngineEvent.SignalResumed),this.shouldFailNext)throw this.shouldFailNext=!1,new Error("simulated failure");this.subscriber.restartingIce=!0,this.hasPublished&&(yield this.publisher.createAndSendOffer({iceRestart:!0})),yield this.waitForPCReconnected(),this.client.setReconnected(),"open"===(null===(i=this.reliableDC)||void 0===i?void 0:i.readyState)&&null===this.reliableDC.id&&this.createDataChannels(),this.emit(e.EngineEvent.Resumed)}))}waitForPCInitialConnection(t,i){return gt(this,void 0,void 0,(function*(){if(this.pcState!==qs.Connected){if(this.pcState!==qs.New)throw new xn("Expected peer connection to be new on initial connection");return new Promise(((n,r)=>{const s=()=>{a.warn("closing engine"),Bn.clearTimeout(c),r(new Nn("room connection has been cancelled",3))};(null==i?void 0:i.signal.aborted)&&s(),null==i||i.signal.addEventListener("abort",s);const o=()=>{Bn.clearTimeout(c),null==i||i.signal.removeEventListener("abort",s),n()},c=Bn.setTimeout((()=>{this.off(e.EngineEvent.Connected,o),r(new Nn("could not establish pc connection"))}),null!=t?t:this.peerConnectionTimeout);this.once(e.EngineEvent.Connected,o)}))}}))}waitForPCReconnected(){var e;return gt(this,void 0,void 0,(function*(){const t=Date.now();let i=t;for(this.pcState=qs.Reconnecting,a.debug("waiting for peer connection to reconnect");i-t<this.peerConnectionTimeout&&void 0!==this.primaryPC;){if(i-t>2e3&&"connected"===(null===(e=this.primaryPC)||void 0===e?void 0:e.connectionState)&&(this.pcState=qs.Connected),this.pcState===qs.Connected)return;yield mr(100),i=Date.now()}throw new Nn("could not establish PC connection")}))}sendDataPacket(e,t){return gt(this,void 0,void 0,(function*(){const i=e.toBinary();yield this.ensurePublisherConnected(t);const n=this.dataChannelForKind(t);n&&n.send(i),this.updateAndEmitDCBufferStatus(t)}))}ensureDataTransportConnected(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.subscriberPrimary;var i,n,r;return gt(this,void 0,void 0,(function*(){const s=t?this.subscriber:this.publisher,o=t?"Subscriber":"Publisher";if(!s)throw new Nn("".concat(o," connection not set"));t||(null===(i=this.publisher)||void 0===i?void 0:i.isICEConnected)||"checking"===(null===(n=this.publisher)||void 0===n?void 0:n.pc.iceConnectionState)||this.negotiate();const a=this.dataChannelForKind(e,t);if("open"===(null==a?void 0:a.readyState))return;const c=(new Date).getTime()+this.peerConnectionTimeout;for(;(new Date).getTime()<c;){if(s.isICEConnected&&"open"===(null===(r=this.dataChannelForKind(e,t))||void 0===r?void 0:r.readyState))return;yield mr(50)}throw new Nn("could not establish ".concat(o," connection, state: ").concat(s.pc.iceConnectionState))}))}ensurePublisherConnected(e){return gt(this,void 0,void 0,(function*(){yield this.ensureDataTransportConnected(e,!1)}))}verifyTransport(){if(!this.primaryPC)return!1;if("closed"===this.primaryPC.connectionState||"failed"===this.primaryPC.connectionState)return!1;if(this.hasPublished&&this.subscriberPrimary){if(!this.publisher)return!1;if("closed"===this.publisher.pc.connectionState||"failed"===this.publisher.pc.connectionState)return!1}return!(!this.client.ws||this.client.ws.readyState===WebSocket.CLOSED)}negotiate(){return new Promise(((t,i)=>{if(!this.publisher)return void i(new Un("publisher is not defined"));this.hasPublished=!0;const n=()=>{a.debug("engine disconnected while negotiation was ongoing"),s(),t()};this.isClosed&&i("cannot negotiate on closed engine"),this.on(e.EngineEvent.Closing,n);const r=setTimeout((()=>{i("negotiation timed out"),this.handleDisconnect("negotiation",Be.RR_SIGNAL_DISCONNECTED)}),this.peerConnectionTimeout),s=()=>{clearTimeout(r),this.off(e.EngineEvent.Closing,n)};this.publisher.once(_s,(()=>{var e;null===(e=this.publisher)||void 0===e||e.once(Ls,(()=>{s(),t()}))})),this.publisher.once(Ns,(t=>{const i=new Map;t.forEach((e=>{const t=e.codec.toLowerCase();var n;n=t,Gn.includes(n)&&i.set(e.payload,t)})),this.emit(e.EngineEvent.RTPVideoMapUpdate,i)})),this.publisher.negotiate((e=>{s(),i(e),e instanceof Un&&(this.fullReconnectOnNext=!0),this.handleDisconnect("negotiation",Be.RR_UNKNOWN)}))}))}dataChannelForKind(t,i){if(i){if(t===e.DataPacket_Kind.LOSSY)return this.lossyDCSub;if(t===e.DataPacket_Kind.RELIABLE)return this.reliableDCSub}else{if(t===e.DataPacket_Kind.LOSSY)return this.lossyDC;if(t===e.DataPacket_Kind.RELIABLE)return this.reliableDC}}failNext(){this.shouldFailNext=!0}clearReconnectTimeout(){this.reconnectTimeout&&Bn.clearTimeout(this.reconnectTimeout)}clearPendingReconnect(){this.clearReconnectTimeout(),this.reconnectAttempts=0}registerOnLineListener(){Cr()&&window.addEventListener("online",this.handleBrowserOnLine)}deregisterOnLineListener(){Cr()&&window.removeEventListener("online",this.handleBrowserOnLine)}}class Ws extends Error{}class Hs{constructor(e,t){this.lastUpdateAt=0,this.settingsCacheTime=3e3,this.attemptedRegions=[],this.serverUrl=new URL(e),this.token=t}updateToken(e){this.token=e}isCloud(){return Rr(this.serverUrl)}getServerUrl(){return this.serverUrl}getNextBestRegionUrl(e){return gt(this,void 0,void 0,(function*(){if(!this.isCloud())throw Error("region availability is only supported for LiveKit Cloud domains");(!this.regionSettings||Date.now()-this.lastUpdateAt>this.settingsCacheTime)&&(this.regionSettings=yield this.fetchRegionSettings(e));const t=this.regionSettings.regions.filter((e=>!this.attemptedRegions.find((t=>t.url===e.url))));if(t.length>0){const e=t[0];return this.attemptedRegions.push(e),a.debug("next region: ".concat(e.region)),e.url}return null}))}resetAttempts(){this.attemptedRegions=[]}fetchRegionSettings(e){return gt(this,void 0,void 0,(function*(){const t=yield fetch("".concat((i=this.serverUrl,"".concat(i.protocol.replace("ws","http"),"//").concat(i.host,"/settings")),"/regions"),{headers:{authorization:"Bearer ".concat(this.token)},signal:e});var i;if(t.ok){const e=yield t.json();return this.lastUpdateAt=Date.now(),e}throw new Nn("Could not fetch region settings: ".concat(t.statusText),401===t.status?0:void 0,t.status)}))}}const Gs=2e3;function zs(e,t){if(!t)return 0;let i,n;return"bytesReceived"in e?(i=e.bytesReceived,n=t.bytesReceived):"bytesSent"in e&&(i=e.bytesSent,n=t.bytesSent),void 0===i||void 0===n||void 0===e.timestamp||void 0===t.timestamp?0:8*(i-n)*1e3/(e.timestamp-t.timestamp)}class Qs extends ms{constructor(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>3?arguments[3]:void 0;super(e,sr.Kind.Audio,t,i),this.stopOnMute=!1,this.monitorSender=()=>gt(this,void 0,void 0,(function*(){if(!this.sender)return void(this._currentBitrate=0);let e;try{e=yield this.getSenderStats()}catch(e){return void a.error("could not get audio sender stats",{error:e})}e&&this.prevStats&&(this._currentBitrate=zs(e,this.prevStats)),this.prevStats=e})),this.audioContext=n,this.checkForSilence()}setDeviceId(e){return gt(this,void 0,void 0,(function*(){return this._constraints.deviceId===e||(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||Kr(e)===this.mediaStreamTrack.getSettings().deviceId)}))}mute(){const e=Object.create(null,{mute:{get:()=>super.mute}});return gt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{return this.source===sr.Source.Microphone&&this.stopOnMute&&!this.isUserProvided&&(a.debug("stopping mic track"),this._mediaStreamTrack.stop()),yield e.mute.call(this),this}finally{t()}}))}unmute(){const e=Object.create(null,{unmute:{get:()=>super.unmute}});return gt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{const t=this._constraints.deviceId&&this._mediaStreamTrack.getSettings().deviceId!==Kr(this._constraints.deviceId);return this.source!==sr.Source.Microphone||!this.stopOnMute&&"ended"!==this._mediaStreamTrack.readyState&&!t||this.isUserProvided||(a.debug("reacquiring mic track"),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}}))}restartTrack(e){return gt(this,void 0,void 0,(function*(){let t;if(e){const i=ur({audio:e});"boolean"!=typeof i.audio&&(t=i.audio)}yield this.restart(t)}))}restart(e){const t=Object.create(null,{restart:{get:()=>super.restart}});return gt(this,void 0,void 0,(function*(){const i=yield t.restart.call(this,e);return this.checkForSilence(),i}))}startMonitor(){Cr()&&(this.monitorInterval||(this.monitorInterval=setInterval((()=>{this.monitorSender()}),Gs)))}setProcessor(e){var t;return gt(this,void 0,void 0,(function*(){const i=yield this.processorLock.lock();try{if(!this.audioContext)throw Error("Audio context needs to be set on LocalAudioTrack in order to enable processors");if(this.processor&&(yield this.stopProcessor()),"unknown"===this.kind)throw TypeError("cannot set processor on track of unknown kind");const i={kind:this.kind,track:this._mediaStreamTrack,audioContext:this.audioContext};a.debug("setting up audio processor ".concat(e.name)),yield e.init(i),this.processor=e,this.processor.processedTrack&&(yield null===(t=this.sender)||void 0===t?void 0:t.replaceTrack(this.processor.processedTrack))}finally{i()}}))}setAudioContext(e){this.audioContext=e}getSenderStats(){var e;return gt(this,void 0,void 0,(function*(){if(!(null===(e=this.sender)||void 0===e?void 0:e.getStats))return;let t;return(yield this.sender.getStats()).forEach((e=>{"outbound-rtp"===e.type&&(t={type:"audio",streamId:e.id,packetsSent:e.packetsSent,packetsLost:e.packetsLost,bytesSent:e.bytesSent,timestamp:e.timestamp,roundTripTime:e.roundTripTime,jitter:e.jitter})})),t}))}checkForSilence(){return gt(this,void 0,void 0,(function*(){const t=yield function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;return gt(this,void 0,void 0,(function*(){const i=lr();if(i){const n=i.createAnalyser();n.fftSize=2048;const r=n.frequencyBinCount,s=new Uint8Array(r);i.createMediaStreamSource(new MediaStream([e.mediaStreamTrack])).connect(n),yield mr(t),n.getByteTimeDomainData(s);const o=s.some((e=>128!==e&&0!==e));return i.close(),!o}return!1}))}(this);return t&&(this.isMuted||a.warn("silence detected on local audio track"),this.emit(e.TrackEvent.AudioSilenceDetected)),t}))}}function Ys(e,t){switch(e.kind){case"audio":return new Qs(e,t,!1);case"video":return new lo(e,t,!1);default:throw new On("unsupported track type: ".concat(e.kind))}}const Xs=Object.values(Xn),Zs=Object.values(Zn),$s=Object.values($n),eo=[Xn.h180,Xn.h360],to=[Zn.h180,Zn.h360],io=e=>[{scaleResolutionDownBy:2,fps:3}].map((t=>{var i;return new Wn(Math.floor(e.width/t.scaleResolutionDownBy),Math.floor(e.height/t.scaleResolutionDownBy),Math.max(15e4,Math.floor(e.encoding.maxBitrate/(Math.pow(t.scaleResolutionDownBy,2)*((null!==(i=e.encoding.maxFramerate)&&void 0!==i?i:30)/t.fps)))),t.fps,e.encoding.priority)})),no=["q","h","f"];function ro(e,t,i,n){var r,s;let o=null==n?void 0:n.videoEncoding;e&&(o=null==n?void 0:n.screenShareEncoding);const c=null==n?void 0:n.simulcast,d=null==n?void 0:n.scalabilityMode,u=null==n?void 0:n.videoCodec;if(!o&&!c&&!d||!t||!i)return[{}];o||(o=function(e,t,i,n){const r=function(e,t,i){if(e)return $s;const n=t>i?t/i:i/t;if(Math.abs(n-16/9)<Math.abs(n-4/3))return Xs;return Zs}(e,t,i);let{encoding:s}=r[0];const o=Math.max(t,i);for(let e=0;e<r.length;e+=1){const t=r[e];if(s=t.encoding,t.width>=o)break}if(n)switch(n){case"av1":s=Object.assign({},s),s.maxBitrate=.7*s.maxBitrate;break;case"vp9":s=Object.assign({},s),s.maxBitrate=.85*s.maxBitrate}return s}(e,t,i,u),a.debug("using video encoding",o));const l=new Wn(t,i,o.maxBitrate,o.maxFramerate,o.priority);if(d&&kr(u)){a.debug("using svc with scalabilityMode ".concat(d));const e=new uo(d),t=[];if(e.spatial>3)throw new Error("unsupported scalabilityMode: ".concat(d));for(let i=0;i<e.spatial;i+=1)t.push({rid:no[2-i],maxBitrate:o.maxBitrate/Math.pow(3,i),maxFramerate:l.encoding.maxFramerate});return t[0].scalabilityMode=d,a.debug("encodings",t),t}if(!c)return[o];let h,p=[];if(p=e?null!==(r=co(null==n?void 0:n.screenShareSimulcastLayers))&&void 0!==r?r:oo(e,l):null!==(s=co(null==n?void 0:n.videoSimulcastLayers))&&void 0!==s?s:oo(e,l),p.length>0){const e=p[0];p.length>1&&([,h]=p);const n=Math.max(t,i);if(n>=960&&h)return ao(t,i,[e,h,l]);if(n>=480)return ao(t,i,[e,l])}return ao(t,i,[l])}function so(e,t,i){var n,r,s,o;if(!i.backupCodec||i.backupCodec.codec===i.videoCodec)return;t!==i.backupCodec.codec&&a.warn("requested a different codec than specified as backup",{serverRequested:t,backup:i.backupCodec.codec}),i.videoCodec=t,i.videoEncoding=i.backupCodec.encoding;const c=e.mediaStreamTrack.getSettings(),d=null!==(n=c.width)&&void 0!==n?n:null===(r=e.dimensions)||void 0===r?void 0:r.width,u=null!==(s=c.height)&&void 0!==s?s:null===(o=e.dimensions)||void 0===o?void 0:o.height;return ro(e.source===sr.Source.ScreenShare,d,u,i)}function oo(e,t){if(e)return io(t);const{width:i,height:n}=t,r=i>n?i/n:n/i;return Math.abs(r-16/9)<Math.abs(r-4/3)?eo:to}function ao(e,t,i){const n=[];if(i.forEach(((i,r)=>{if(r>=no.length)return;const s=Math.min(e,t),o={rid:no[r],scaleResolutionDownBy:Math.max(1,s/Math.min(i.width,i.height)),maxBitrate:i.encoding.maxBitrate};i.encoding.maxFramerate&&(o.maxFramerate=i.encoding.maxFramerate);const a=Sr()||0===r;i.encoding.priority&&a&&(o.priority=i.encoding.priority,o.networkPriority=i.encoding.priority),n.push(o)})),Pr()&&"ios"===Dr()){let e;n.forEach((t=>{e?t.maxFramerate&&t.maxFramerate>e&&(e=t.maxFramerate):e=t.maxFramerate}));let t=!0;n.forEach((i=>{var n;i.maxFramerate!=e&&(t&&(t=!1,a.info("Simulcast on iOS React-Native requires all encodings to share the same framerate.")),a.info('Setting framerate of encoding "'.concat(null!==(n=i.rid)&&void 0!==n?n:"",'" to ').concat(e)),i.maxFramerate=e)}))}return n}function co(e){if(e)return e.sort(((e,t)=>{const{encoding:i}=e,{encoding:n}=t;return i.maxBitrate>n.maxBitrate?1:i.maxBitrate<n.maxBitrate?-1:i.maxBitrate===n.maxBitrate&&i.maxFramerate&&n.maxFramerate?i.maxFramerate>n.maxFramerate?1:-1:0}))}class uo{constructor(e){const t=e.match(/^L(\d)T(\d)(h|_KEY|_KEY_SHIFT){0,1}$/);if(!t)throw new Error("invalid scalability mode");if(this.spatial=parseInt(t[1]),this.temporal=parseInt(t[2]),t.length>3)switch(t[3]){case"h":case"_KEY":case"_KEY_SHIFT":this.suffix=t[3]}}toString(){var e;return"L".concat(this.spatial,"T").concat(this.temporal).concat(null!==(e=this.suffix)&&void 0!==e?e:"")}}class lo extends ms{constructor(e,t){let i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super(e,sr.Kind.Video,t,i),this.simulcastCodecs=new Map,this.monitorSender=()=>gt(this,void 0,void 0,(function*(){if(!this.sender)return void(this._currentBitrate=0);let e;try{e=yield this.getSenderStats()}catch(e){return void a.error("could not get audio sender stats",{error:e})}const t=new Map(e.map((e=>[e.rid,e])));if(this.prevStats){let e=0;t.forEach(((t,i)=>{var n;const r=null===(n=this.prevStats)||void 0===n?void 0:n.get(i);e+=zs(t,r)})),this._currentBitrate=e}this.prevStats=t})),this.senderLock=new qr}get isSimulcast(){return!!(this.sender&&this.sender.getParameters().encodings.length>1)}startMonitor(e){var t;if(this.signalClient=e,!Cr())return;const i=null===(t=this.sender)||void 0===t?void 0:t.getParameters();i&&(this.encodings=i.encodings),this.monitorInterval||(this.monitorInterval=setInterval((()=>{this.monitorSender()}),Gs))}stop(){this._mediaStreamTrack.getConstraints(),this.simulcastCodecs.forEach((e=>{e.mediaStreamTrack.stop()})),super.stop()}pauseUpstream(){const e=Object.create(null,{pauseUpstream:{get:()=>super.pauseUpstream}});var t,i,n,r,s;return gt(this,void 0,void 0,(function*(){yield e.pauseUpstream.call(this);try{for(var o,a=!0,c=kt(this.simulcastCodecs.values());o=yield c.next(),!(t=o.done);a=!0){r=o.value,a=!1;const e=r;yield null===(s=e.sender)||void 0===s?void 0:s.replaceTrack(null)}}catch(e){i={error:e}}finally{try{a||t||!(n=c.return)||(yield n.call(c))}finally{if(i)throw i.error}}}))}resumeUpstream(){const e=Object.create(null,{resumeUpstream:{get:()=>super.resumeUpstream}});var t,i,n,r,s;return gt(this,void 0,void 0,(function*(){yield e.resumeUpstream.call(this);try{for(var o,a=!0,c=kt(this.simulcastCodecs.values());o=yield c.next(),!(t=o.done);a=!0){r=o.value,a=!1;const e=r;yield null===(s=e.sender)||void 0===s?void 0:s.replaceTrack(e.mediaStreamTrack)}}catch(e){i={error:e}}finally{try{a||t||!(n=c.return)||(yield n.call(c))}finally{if(i)throw i.error}}}))}mute(){const e=Object.create(null,{mute:{get:()=>super.mute}});return gt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{return this.source!==sr.Source.Camera||this.isUserProvided||(a.debug("stopping camera track"),this._mediaStreamTrack.stop()),yield e.mute.call(this),this}finally{t()}}))}unmute(){const e=Object.create(null,{unmute:{get:()=>super.unmute}});return gt(this,void 0,void 0,(function*(){const t=yield this.muteLock.lock();try{return this.source!==sr.Source.Camera||this.isUserProvided||(a.debug("reacquiring camera track"),yield this.restartTrack()),yield e.unmute.call(this),this}finally{t()}}))}setTrackMuted(e){super.setTrackMuted(e);for(const t of this.simulcastCodecs.values())t.mediaStreamTrack.enabled=!e}getSenderStats(){var e;return gt(this,void 0,void 0,(function*(){if(!(null===(e=this.sender)||void 0===e?void 0:e.getStats))return[];const t=[],i=yield this.sender.getStats();return i.forEach((e=>{var n;if("outbound-rtp"===e.type){const r={type:"video",streamId:e.id,frameHeight:e.frameHeight,frameWidth:e.frameWidth,firCount:e.firCount,pliCount:e.pliCount,nackCount:e.nackCount,packetsSent:e.packetsSent,bytesSent:e.bytesSent,framesSent:e.framesSent,timestamp:e.timestamp,rid:null!==(n=e.rid)&&void 0!==n?n:e.id,retransmittedPacketsSent:e.retransmittedPacketsSent,qualityLimitationReason:e.qualityLimitationReason,qualityLimitationResolutionChanges:e.qualityLimitationResolutionChanges},s=i.get(e.remoteId);s&&(r.jitter=s.jitter,r.packetsLost=s.packetsLost,r.roundTripTime=s.roundTripTime),t.push(r)}})),t}))}setPublishingQuality(t){const i=[];for(let n=e.VideoQuality.LOW;n<=e.VideoQuality.HIGH;n+=1)i.push(new gn({quality:n,enabled:n<=t}));a.debug("setting publishing quality. max quality ".concat(t)),this.setPublishingLayers(i)}setDeviceId(e){return gt(this,void 0,void 0,(function*(){return this._constraints.deviceId===e&&this._mediaStreamTrack.getSettings().deviceId===Kr(e)||(this._constraints.deviceId=e,this.isMuted||(yield this.restartTrack()),this.isMuted||Kr(e)===this._mediaStreamTrack.getSettings().deviceId)}))}restartTrack(e){var t,i,n,r;return gt(this,void 0,void 0,(function*(){let s;if(e){const t=ur({video:e});"boolean"!=typeof t.video&&(s=t.video)}yield this.restart(s);try{for(var o,a=!0,c=kt(this.simulcastCodecs.values());o=yield c.next(),!(t=o.done);a=!0){r=o.value,a=!1;const e=r;e.sender&&(e.mediaStreamTrack=this.mediaStreamTrack.clone(),yield e.sender.replaceTrack(e.mediaStreamTrack))}}catch(e){i={error:e}}finally{try{a||t||!(n=c.return)||(yield n.call(c))}finally{if(i)throw i.error}}}))}setProcessor(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const i=Object.create(null,{setProcessor:{get:()=>super.setProcessor}});var n,r,s,o,a,c;return gt(this,void 0,void 0,(function*(){if(yield i.setProcessor.call(this,e,t),null===(a=this.processor)||void 0===a?void 0:a.processedTrack)try{for(var d,u=!0,l=kt(this.simulcastCodecs.values());d=yield l.next(),!(n=d.done);u=!0){o=d.value,u=!1;const e=o;yield null===(c=e.sender)||void 0===c?void 0:c.replaceTrack(this.processor.processedTrack)}}catch(e){r={error:e}}finally{try{u||n||!(s=l.return)||(yield s.call(l))}finally{if(r)throw r.error}}}))}addSimulcastTrack(e,t){if(this.simulcastCodecs.has(e))throw new Error("".concat(e," already added"));const i={codec:e,mediaStreamTrack:this.mediaStreamTrack.clone(),sender:void 0,encodings:t};return this.simulcastCodecs.set(e,i),i}setSimulcastTrackSender(e,t){const i=this.simulcastCodecs.get(e);i&&(i.sender=t,setTimeout((()=>{this.subscribedCodecs&&this.setPublishingCodecs(this.subscribedCodecs)}),5e3))}setPublishingCodecs(e){var t,i,n,r,s,o,c;return gt(this,void 0,void 0,(function*(){if(a.debug("setting publishing codecs",{codecs:e,currentCodec:this.codec}),!this.codec&&e.length>0)return yield this.setPublishingLayers(e[0].qualities),[];this.subscribedCodecs=e;const d=[];try{for(t=!0,i=kt(e);n=yield i.next(),!(r=n.done);t=!0){c=n.value,t=!1;const e=c;if(this.codec&&this.codec!==e.codec){const t=this.simulcastCodecs.get(e.codec);if(a.debug("try setPublishingCodec for ".concat(e.codec),t),t&&t.sender)t.encodings&&(a.debug("try setPublishingLayersForSender ".concat(e.codec)),yield ho(t.sender,t.encodings,e.qualities,this.senderLock));else for(const t of e.qualities)if(t.enabled){d.push(e.codec);break}}else yield this.setPublishingLayers(e.qualities)}}catch(e){s={error:e}}finally{try{t||r||!(o=i.return)||(yield o.call(i))}finally{if(s)throw s.error}}return d}))}setPublishingLayers(e){return gt(this,void 0,void 0,(function*(){a.debug("setting publishing layers",e),this.sender&&this.encodings&&(yield ho(this.sender,this.encodings,e,this.senderLock))}))}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return gt(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),Er()&&this.isInBackground&&this.source===sr.Source.Camera&&(this._mediaStreamTrack.enabled=!1)}))}}function ho(e,t,i,n){return gt(this,void 0,void 0,(function*(){const r=yield n.lock();a.debug("setPublishingLayersForSender",{sender:e,qualities:i,senderEncodings:t});try{const n=e.getParameters(),{encodings:r}=n;if(!r)return;if(r.length!==t.length)return void a.warn("cannot set publishing layers, encodings mismatch");let s=!1;!1&&r[0].scalabilityMode||r.forEach(((e,n)=>{var r;let o=null!==(r=e.rid)&&void 0!==r?r:"";""===o&&(o="q");const c=po(o),d=i.find((e=>e.quality===c));d&&e.active!==d.enabled&&(s=!0,e.active=d.enabled,a.debug("setting layer ".concat(d.quality," to ").concat(e.active?"enabled":"disabled")),Sr()&&(d.enabled?(e.scaleResolutionDownBy=t[n].scaleResolutionDownBy,e.maxBitrate=t[n].maxBitrate,e.maxFrameRate=t[n].maxFrameRate):(e.scaleResolutionDownBy=4,e.maxBitrate=10,e.maxFrameRate=2)))})),s&&(n.encodings=r,a.debug("setting encodings",n.encodings),yield e.setParameters(n))}finally{r()}}))}function po(t){switch(t){case"f":default:return e.VideoQuality.HIGH;case"h":return e.VideoQuality.MEDIUM;case"q":return e.VideoQuality.LOW}}function mo(t,i,n,r){if(!n)return[new tt({quality:e.VideoQuality.HIGH,width:t,height:i,bitrate:0,ssrc:0})];if(r){const r=n[0].scalabilityMode,s=new uo(r),o=[];for(let r=0;r<s.spatial;r+=1)o.push(new tt({quality:e.VideoQuality.HIGH-r,width:Math.ceil(t/Math.pow(2,r)),height:Math.ceil(i/Math.pow(2,r)),bitrate:n[0].maxBitrate?Math.ceil(n[0].maxBitrate/Math.pow(3,r)):0,ssrc:0}));return o}return n.map((e=>{var n,r,s;const o=null!==(n=e.scaleResolutionDownBy)&&void 0!==n?n:1;let a=po(null!==(r=e.rid)&&void 0!==r?r:"");return new tt({quality:a,width:Math.ceil(t/o),height:Math.ceil(i/o),bitrate:null!==(s=e.maxBitrate)&&void 0!==s?s:0,ssrc:0})}))}class fo extends sr{constructor(e,t,i,n){super(e,i),this.sid=t,this.receiver=n}setMuted(t){this.isMuted!==t&&(this.isMuted=t,this._mediaStreamTrack.enabled=!t,this.emit(t?e.TrackEvent.Muted:e.TrackEvent.Unmuted,this))}setMediaStream(t){this.mediaStream=t,t.onremovetrack=()=>{this.receiver=void 0,this._currentBitrate=0,this.emit(e.TrackEvent.Ended,this)}}start(){this.startMonitor(),super.enable()}stop(){this.stopMonitor(),super.disable()}startMonitor(){this.monitorInterval||(this.monitorInterval=setInterval((()=>this.monitorReceiver()),Gs))}}class vo extends fo{constructor(e,t,i,n,r){super(e,t,sr.Kind.Audio,i),this.monitorReceiver=()=>gt(this,void 0,void 0,(function*(){if(!this.receiver)return void(this._currentBitrate=0);const e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=zs(e,this.prevStats)),this.prevStats=e})),this.audioContext=n,this.webAudioPluginNodes=[],r&&(this.sinkId=r.deviceId)}setVolume(e){var t;for(const i of this.attachedElements)this.audioContext?null===(t=this.gainNode)||void 0===t||t.gain.setTargetAtTime(e,0,.1):i.volume=e;Pr()&&this._mediaStreamTrack._setVolume(e),this.elementVolume=e}getVolume(){if(this.elementVolume)return this.elementVolume;if(Pr())return 1;let e=0;return this.attachedElements.forEach((t=>{t.volume>e&&(e=t.volume)})),e}setSinkId(e){return gt(this,void 0,void 0,(function*(){this.sinkId=e,yield Promise.all(this.attachedElements.map((t=>{if(br(t))return t.setSinkId(e)})))}))}attach(e){const t=0===this.attachedElements.length;return e?super.attach(e):e=super.attach(),this.elementVolume&&(e.volume=this.elementVolume),this.sinkId&&br(e)&&e.setSinkId(this.sinkId),this.audioContext&&t&&(a.debug("using audio context mapping"),this.connectWebAudio(this.audioContext,e),e.volume=0,e.muted=!0),e}detach(e){let t;return e?(t=super.detach(e),this.audioContext&&(this.attachedElements.length>0?this.connectWebAudio(this.audioContext,this.attachedElements[0]):this.disconnectWebAudio())):(t=super.detach(),this.disconnectWebAudio()),t}setAudioContext(e){this.audioContext=e,e&&this.attachedElements.length>0?this.connectWebAudio(e,this.attachedElements[0]):e||this.disconnectWebAudio()}setWebAudioPlugins(e){this.webAudioPluginNodes=e,this.attachedElements.length>0&&this.audioContext&&this.connectWebAudio(this.audioContext,this.attachedElements[0])}connectWebAudio(t,i){this.disconnectWebAudio(),this.sourceNode=t.createMediaStreamSource(i.srcObject);let n=this.sourceNode;this.webAudioPluginNodes.forEach((e=>{n.connect(e),n=e})),this.gainNode=t.createGain(),n.connect(this.gainNode),this.gainNode.connect(t.destination),this.elementVolume&&this.gainNode.gain.setTargetAtTime(this.elementVolume,0,.1),"running"!==t.state&&t.resume().then((()=>{"running"!==t.state&&this.emit(e.TrackEvent.AudioPlaybackFailed,new Error("Audio Context couldn't be started automatically"))})).catch((t=>{this.emit(e.TrackEvent.AudioPlaybackFailed,t)}))}disconnectWebAudio(){var e,t;null===(e=this.gainNode)||void 0===e||e.disconnect(),null===(t=this.sourceNode)||void 0===t||t.disconnect(),this.gainNode=void 0,this.sourceNode=void 0}getReceiverStats(){return gt(this,void 0,void 0,(function*(){if(!this.receiver||!this.receiver.getStats)return;let e;return(yield this.receiver.getStats()).forEach((t=>{"inbound-rtp"===t.type&&(e={type:"audio",timestamp:t.timestamp,jitter:t.jitter,bytesReceived:t.bytesReceived,concealedSamples:t.concealedSamples,concealmentEvents:t.concealmentEvents,silentConcealedSamples:t.silentConcealedSamples,silentConcealmentEvents:t.silentConcealmentEvents,totalAudioEnergy:t.totalAudioEnergy,totalSamplesDuration:t.totalSamplesDuration})})),e}))}}class go extends fo{constructor(e,t,i,n){super(e,t,sr.Kind.Video,i),this.elementInfos=[],this.monitorReceiver=()=>gt(this,void 0,void 0,(function*(){if(!this.receiver)return void(this._currentBitrate=0);const e=yield this.getReceiverStats();e&&this.prevStats&&this.receiver&&(this._currentBitrate=zs(e,this.prevStats)),this.prevStats=e})),this.debouncedHandleResize=ls((()=>{this.updateDimensions()}),100),this.adaptiveStreamSettings=n}get isAdaptiveStream(){return void 0!==this.adaptiveStreamSettings}get mediaStreamTrack(){return this._mediaStreamTrack}setMuted(e){super.setMuted(e),this.attachedElements.forEach((t=>{e?ar(this._mediaStreamTrack,t):or(this._mediaStreamTrack,t)}))}attach(e){if(e?super.attach(e):e=super.attach(),this.adaptiveStreamSettings&&void 0===this.elementInfos.find((t=>t.element===e))){const t=new yo(e);this.observeElementInfo(t)}return e}observeElementInfo(e){this.adaptiveStreamSettings&&void 0===this.elementInfos.find((t=>t===e))?(e.handleResize=()=>{this.debouncedHandleResize()},e.handleVisibilityChanged=()=>{this.updateVisibility()},this.elementInfos.push(e),e.observe(),this.debouncedHandleResize(),this.updateVisibility()):a.warn("visibility resize observer not triggered")}stopObservingElementInfo(e){if(!this.isAdaptiveStream)return void a.warn("stopObservingElementInfo ignored");const t=this.elementInfos.filter((t=>t===e));for(const e of t)e.stopObserving();this.elementInfos=this.elementInfos.filter((t=>t!==e)),this.updateVisibility(),this.debouncedHandleResize()}detach(e){let t=[];if(e)return this.stopObservingElement(e),super.detach(e);t=super.detach();for(const e of t)this.stopObservingElement(e);return t}getDecoderImplementation(){var e;return null===(e=this.prevStats)||void 0===e?void 0:e.decoderImplementation}getReceiverStats(){return gt(this,void 0,void 0,(function*(){if(!this.receiver||!this.receiver.getStats)return;let e;return(yield this.receiver.getStats()).forEach((t=>{"inbound-rtp"===t.type&&(e={type:"video",framesDecoded:t.framesDecoded,framesDropped:t.framesDropped,framesReceived:t.framesReceived,packetsReceived:t.packetsReceived,packetsLost:t.packetsLost,frameWidth:t.frameWidth,frameHeight:t.frameHeight,pliCount:t.pliCount,firCount:t.firCount,nackCount:t.nackCount,jitter:t.jitter,timestamp:t.timestamp,bytesReceived:t.bytesReceived,decoderImplementation:t.decoderImplementation})})),e}))}stopObservingElement(e){const t=this.elementInfos.filter((t=>t.element===e));for(const e of t)this.stopObservingElementInfo(e)}handleAppVisibilityChanged(){const e=Object.create(null,{handleAppVisibilityChanged:{get:()=>super.handleAppVisibilityChanged}});return gt(this,void 0,void 0,(function*(){yield e.handleAppVisibilityChanged.call(this),this.isAdaptiveStream&&this.updateVisibility()}))}updateVisibility(){var t,i;const n=this.elementInfos.reduce(((e,t)=>Math.max(e,t.visibilityChangedAt||0)),0),r=!(null!==(i=null===(t=this.adaptiveStreamSettings)||void 0===t?void 0:t.pauseVideoInBackground)&&void 0!==i&&!i)&&this.isInBackground,s=this.elementInfos.some((e=>e.pictureInPicture)),o=this.elementInfos.some((e=>e.visible))&&!r||s;this.lastVisible!==o&&(!o&&Date.now()-n<100?Bn.setTimeout((()=>{this.updateVisibility()}),100):(this.lastVisible=o,this.emit(e.TrackEvent.VisibilityChanged,o,this)))}updateDimensions(){var t,i;let n=0,r=0;const s=this.getPixelDensity();for(const e of this.elementInfos){const t=e.width()*s,i=e.height()*s;t+i>n+r&&(n=t,r=i)}(null===(t=this.lastDimensions)||void 0===t?void 0:t.width)===n&&(null===(i=this.lastDimensions)||void 0===i?void 0:i.height)===r||(this.lastDimensions={width:n,height:r},this.emit(e.TrackEvent.VideoDimensionsChanged,this.lastDimensions,this))}getPixelDensity(){var e;const t=null===(e=this.adaptiveStreamSettings)||void 0===e?void 0:e.pixelDensity;if("screen"===t)return _r();if(!t){return _r()>2?2:1}return t}}class yo{get visible(){return this.isPiP||this.isIntersecting}get pictureInPicture(){return this.isPiP}constructor(e,t){this.onVisibilityChanged=e=>{var t;const{target:i,isIntersecting:n}=e;i===this.element&&(this.isIntersecting=n,this.visibilityChangedAt=Date.now(),null===(t=this.handleVisibilityChanged)||void 0===t||t.call(this))},this.onEnterPiP=()=>{var e;this.isPiP=!0,null===(e=this.handleVisibilityChanged)||void 0===e||e.call(this)},this.onLeavePiP=()=>{var e;this.isPiP=!1,null===(e=this.handleVisibilityChanged)||void 0===e||e.call(this)},this.element=e,this.isIntersecting=null!=t?t:ko(e),this.isPiP=Cr()&&document.pictureInPictureElement===e,this.visibilityChangedAt=0}width(){return this.element.clientWidth}height(){return this.element.clientHeight}observe(){this.isIntersecting=ko(this.element),this.isPiP=document.pictureInPictureElement===this.element,this.element.handleResize=()=>{var e;null===(e=this.handleResize)||void 0===e||e.call(this)},this.element.handleVisibilityChanged=this.onVisibilityChanged,Ur().observe(this.element),Mr().observe(this.element),this.element.addEventListener("enterpictureinpicture",this.onEnterPiP),this.element.addEventListener("leavepictureinpicture",this.onLeavePiP)}stopObserving(){var e,t;null===(e=Ur())||void 0===e||e.unobserve(this.element),null===(t=Mr())||void 0===t||t.unobserve(this.element),this.element.removeEventListener("enterpictureinpicture",this.onEnterPiP),this.element.removeEventListener("leavepictureinpicture",this.onLeavePiP)}}function ko(e){let t=e.offsetTop,i=e.offsetLeft;const n=e.offsetWidth,r=e.offsetHeight,{hidden:s}=e,{opacity:o,display:a}=getComputedStyle(e);for(;e.offsetParent;)t+=(e=e.offsetParent).offsetTop,i+=e.offsetLeft;return t<window.pageYOffset+window.innerHeight&&i<window.pageXOffset+window.innerWidth&&t+r>window.pageYOffset&&i+n>window.pageXOffset&&!s&&(""===o||parseFloat(o)>0)&&"none"!==a}class bo extends xt.EventEmitter{constructor(t,i,n){super(),this.metadataMuted=!1,this.encryption=ze.NONE,this.handleMuted=()=>{this.emit(e.TrackEvent.Muted)},this.handleUnmuted=()=>{this.emit(e.TrackEvent.Unmuted)},this.setMaxListeners(100),this.kind=t,this.trackSid=i,this.trackName=n,this.source=sr.Source.Unknown}setTrack(t){this.track&&(this.track.off(e.TrackEvent.Muted,this.handleMuted),this.track.off(e.TrackEvent.Unmuted,this.handleUnmuted)),this.track=t,t&&(t.on(e.TrackEvent.Muted,this.handleMuted),t.on(e.TrackEvent.Unmuted,this.handleUnmuted))}get isMuted(){return this.metadataMuted}get isEnabled(){return!0}get isSubscribed(){return void 0!==this.track}get isEncrypted(){return this.encryption!==ze.NONE}get audioTrack(){if(this.track instanceof Qs||this.track instanceof vo)return this.track}get videoTrack(){if(this.track instanceof lo||this.track instanceof go)return this.track}updateInfo(e){this.trackSid=e.sid,this.trackName=e.name,this.source=sr.sourceFromProto(e.source),this.mimeType=e.mimeType,this.kind===sr.Kind.Video&&e.width>0&&(this.dimensions={width:e.width,height:e.height},this.simulcasted=e.simulcast),this.encryption=e.encryption,this.trackInfo=e,a.debug("update publication info",{info:e})}}!function(e){var t,i;(t=e.SubscriptionStatus||(e.SubscriptionStatus={})).Desired="desired",t.Subscribed="subscribed",t.Unsubscribed="unsubscribed",(i=e.PermissionStatus||(e.PermissionStatus={})).Allowed="allowed",i.NotAllowed="not_allowed"}(bo||(bo={}));class To extends bo{get isUpstreamPaused(){var e;return null===(e=this.track)||void 0===e?void 0:e.isUpstreamPaused}constructor(t,i,n){super(t,i.sid,i.name),this.track=void 0,this.handleTrackEnded=()=>{this.emit(e.TrackEvent.Ended)},this.updateInfo(i),this.setTrack(n)}setTrack(t){this.track&&this.track.off(e.TrackEvent.Ended,this.handleTrackEnded),super.setTrack(t),t&&t.on(e.TrackEvent.Ended,this.handleTrackEnded)}get isMuted(){return this.track?this.track.isMuted:super.isMuted}get audioTrack(){return super.audioTrack}get videoTrack(){return super.videoTrack}mute(){var e;return gt(this,void 0,void 0,(function*(){return null===(e=this.track)||void 0===e?void 0:e.mute()}))}unmute(){var e;return gt(this,void 0,void 0,(function*(){return null===(e=this.track)||void 0===e?void 0:e.unmute()}))}pauseUpstream(){var e;return gt(this,void 0,void 0,(function*(){yield null===(e=this.track)||void 0===e?void 0:e.pauseUpstream()}))}resumeUpstream(){var e;return gt(this,void 0,void 0,(function*(){yield null===(e=this.track)||void 0===e?void 0:e.resumeUpstream()}))}}e.ConnectionQuality=void 0,function(e){e.Excellent="excellent",e.Good="good",e.Poor="poor",e.Unknown="unknown"}(e.ConnectionQuality||(e.ConnectionQuality={}));class So extends xt.EventEmitter{get isEncrypted(){return this.tracks.size>0&&Array.from(this.tracks.values()).every((e=>e.isEncrypted))}constructor(t,i,n,r){super(),this.audioLevel=0,this.isSpeaking=!1,this._connectionQuality=e.ConnectionQuality.Unknown,this.setMaxListeners(100),this.sid=t,this.identity=i,this.name=n,this.metadata=r,this.audioTracks=new Map,this.videoTracks=new Map,this.tracks=new Map}getTracks(){return Array.from(this.tracks.values())}getTrack(e){for(const[,t]of this.tracks)if(t.source===e)return t}getTrackByName(e){for(const[,t]of this.tracks)if(t.trackName===e)return t}get connectionQuality(){return this._connectionQuality}get isCameraEnabled(){var e;const t=this.getTrack(sr.Source.Camera);return!(null===(e=null==t?void 0:t.isMuted)||void 0===e||e)}get isMicrophoneEnabled(){var e;const t=this.getTrack(sr.Source.Microphone);return!(null===(e=null==t?void 0:t.isMuted)||void 0===e||e)}get isScreenShareEnabled(){return!!this.getTrack(sr.Source.ScreenShare)}get isLocal(){return!1}get joinedAt(){return this.participantInfo?new Date(1e3*Number.parseInt(this.participantInfo.joinedAt.toString())):new Date}updateInfo(e){return!(this.participantInfo&&this.participantInfo.sid===e.sid&&this.participantInfo.version>e.version)&&(this.identity=e.identity,this.sid=e.sid,this._setName(e.name),this._setMetadata(e.metadata),e.permission&&this.setPermissions(e.permission),this.participantInfo=e,a.trace("update participant info",{info:e}),!0)}_setMetadata(t){const i=this.metadata!==t,n=this.metadata;this.metadata=t,i&&this.emit(e.ParticipantEvent.ParticipantMetadataChanged,n)}_setName(t){const i=this.name!==t;this.name=t,i&&this.emit(e.ParticipantEvent.ParticipantNameChanged,t)}setPermissions(t){var i,n,r,s,o;const a=this.permissions,c=t.canPublish!==(null===(i=this.permissions)||void 0===i?void 0:i.canPublish)||t.canSubscribe!==(null===(n=this.permissions)||void 0===n?void 0:n.canSubscribe)||t.canPublishData!==(null===(r=this.permissions)||void 0===r?void 0:r.canPublishData)||t.hidden!==(null===(s=this.permissions)||void 0===s?void 0:s.hidden)||t.recorder!==(null===(o=this.permissions)||void 0===o?void 0:o.recorder)||t.canPublishSources.length!==this.permissions.canPublishSources.length||t.canPublishSources.some(((e,t)=>{var i;return e!==(null===(i=this.permissions)||void 0===i?void 0:i.canPublishSources[t])}));return this.permissions=t,c&&this.emit(e.ParticipantEvent.ParticipantPermissionsChanged,a),c}setIsSpeaking(t){t!==this.isSpeaking&&(this.isSpeaking=t,t&&(this.lastSpokeAt=new Date),this.emit(e.ParticipantEvent.IsSpeakingChanged,t))}setConnectionQuality(t){const i=this._connectionQuality;this._connectionQuality=function(t){switch(t){case Me.EXCELLENT:return e.ConnectionQuality.Excellent;case Me.GOOD:return e.ConnectionQuality.Good;case Me.POOR:return e.ConnectionQuality.Poor;default:return e.ConnectionQuality.Unknown}}(t),i!==this._connectionQuality&&this.emit(e.ParticipantEvent.ConnectionQualityChanged,this._connectionQuality)}setAudioContext(e){this.audioContext=e,this.audioTracks.forEach((t=>(t.track instanceof vo||t.track instanceof Qs)&&t.track.setAudioContext(e)))}addTrackPublication(t){t.on(e.TrackEvent.Muted,(()=>{this.emit(e.ParticipantEvent.TrackMuted,t)})),t.on(e.TrackEvent.Unmuted,(()=>{this.emit(e.ParticipantEvent.TrackUnmuted,t)}));const i=t;switch(i.track&&(i.track.sid=t.trackSid),this.tracks.set(t.trackSid,t),t.kind){case sr.Kind.Audio:this.audioTracks.set(t.trackSid,t);break;case sr.Kind.Video:this.videoTracks.set(t.trackSid,t)}}}class wo extends bo{constructor(t,i,n){super(t,i.sid,i.name),this.track=void 0,this.allowed=!0,this.disabled=!1,this.currentVideoQuality=e.VideoQuality.HIGH,this.handleEnded=t=>{this.setTrack(void 0),this.emit(e.TrackEvent.Ended,t)},this.handleVisibilityChange=e=>{a.debug("adaptivestream video visibility ".concat(this.trackSid,", visible=").concat(e),{trackSid:this.trackSid}),this.disabled=!e,this.emitTrackUpdate()},this.handleVideoDimensionsChange=e=>{a.debug("adaptivestream video dimensions ".concat(e.width,"x").concat(e.height),{trackSid:this.trackSid}),this.videoDimensions=e,this.emitTrackUpdate()},this.subscribed=n,this.updateInfo(i)}setSubscribed(t){const i=this.subscriptionStatus,n=this.permissionStatus;this.subscribed=t,t&&(this.allowed=!0);const r=new sn({trackSids:[this.trackSid],subscribe:this.subscribed,participantTracks:[new ot({participantSid:"",trackSids:[this.trackSid]})]});this.emit(e.TrackEvent.UpdateSubscription,r),this.emitSubscriptionUpdateIfChanged(i),this.emitPermissionUpdateIfChanged(n)}get subscriptionStatus(){return!1===this.subscribed?bo.SubscriptionStatus.Unsubscribed:super.isSubscribed?bo.SubscriptionStatus.Subscribed:bo.SubscriptionStatus.Desired}get permissionStatus(){return this.allowed?bo.PermissionStatus.Allowed:bo.PermissionStatus.NotAllowed}get isSubscribed(){return!1!==this.subscribed&&super.isSubscribed}get isDesired(){return!1!==this.subscribed}get isEnabled(){return!this.disabled}setEnabled(e){this.isManualOperationAllowed()&&this.disabled!==!e&&(this.disabled=!e,this.emitTrackUpdate())}setVideoQuality(e){this.isManualOperationAllowed()&&this.currentVideoQuality!==e&&(this.currentVideoQuality=e,this.videoDimensions=void 0,this.emitTrackUpdate())}setVideoDimensions(e){var t,i;this.isManualOperationAllowed()&&((null===(t=this.videoDimensions)||void 0===t?void 0:t.width)===e.width&&(null===(i=this.videoDimensions)||void 0===i?void 0:i.height)===e.height||(this.track instanceof go&&(this.videoDimensions=e),this.currentVideoQuality=void 0,this.emitTrackUpdate()))}setVideoFPS(e){this.isManualOperationAllowed()&&this.track instanceof go&&this.fps!==e&&(this.fps=e,this.emitTrackUpdate())}get videoQuality(){return this.currentVideoQuality}setTrack(t){const i=this.subscriptionStatus,n=this.permissionStatus,r=this.track;r!==t&&(r&&(r.off(e.TrackEvent.VideoDimensionsChanged,this.handleVideoDimensionsChange),r.off(e.TrackEvent.VisibilityChanged,this.handleVisibilityChange),r.off(e.TrackEvent.Ended,this.handleEnded),r.detach(),r.stopMonitor(),this.emit(e.TrackEvent.Unsubscribed,r)),super.setTrack(t),t&&(t.sid=this.trackSid,t.on(e.TrackEvent.VideoDimensionsChanged,this.handleVideoDimensionsChange),t.on(e.TrackEvent.VisibilityChanged,this.handleVisibilityChange),t.on(e.TrackEvent.Ended,this.handleEnded),this.emit(e.TrackEvent.Subscribed,t)),this.emitPermissionUpdateIfChanged(n),this.emitSubscriptionUpdateIfChanged(i))}setAllowed(e){const t=this.subscriptionStatus,i=this.permissionStatus;this.allowed=e,this.emitPermissionUpdateIfChanged(i),this.emitSubscriptionUpdateIfChanged(t)}setSubscriptionError(t){this.emit(e.TrackEvent.SubscriptionFailed,t)}updateInfo(t){super.updateInfo(t);const i=this.metadataMuted;this.metadataMuted=t.muted,this.track?this.track.setMuted(t.muted):i!==t.muted&&this.emit(t.muted?e.TrackEvent.Muted:e.TrackEvent.Unmuted)}emitSubscriptionUpdateIfChanged(t){const i=this.subscriptionStatus;t!==i&&this.emit(e.TrackEvent.SubscriptionStatusChanged,i,t)}emitPermissionUpdateIfChanged(t){this.permissionStatus!==t&&this.emit(e.TrackEvent.SubscriptionPermissionChanged,this.permissionStatus,t)}isManualOperationAllowed(){return this.kind===sr.Kind.Video&&this.isAdaptiveStream?(a.warn("adaptive stream is enabled, cannot change video track settings",{trackSid:this.trackSid}),!1):!!this.isDesired||(a.warn("cannot update track settings when not subscribed",{trackSid:this.trackSid}),!1)}get isAdaptiveStream(){return this.track instanceof go&&this.track.isAdaptiveStream}emitTrackUpdate(){const t=new on({trackSids:[this.trackSid],disabled:this.disabled,fps:this.fps});this.videoDimensions?(t.width=Math.ceil(this.videoDimensions.width),t.height=Math.ceil(this.videoDimensions.height)):void 0!==this.currentVideoQuality?t.quality=this.currentVideoQuality:t.quality=e.VideoQuality.HIGH,this.emit(e.TrackEvent.UpdateSettings,t)}}class Eo extends So{static fromParticipantInfo(e,t){return new Eo(e,t.sid,t.identity,t.name,t.metadata)}constructor(e,t,i,n,r){super(t,i||"",n,r),this.signalClient=e,this.tracks=new Map,this.audioTracks=new Map,this.videoTracks=new Map,this.volumeMap=new Map}addTrackPublication(t){super.addTrackPublication(t),t.on(e.TrackEvent.UpdateSettings,(e=>{a.debug("send update settings",e),this.signalClient.sendUpdateTrackSettings(e)})),t.on(e.TrackEvent.UpdateSubscription,(e=>{e.participantTracks.forEach((e=>{e.participantSid=this.sid})),this.signalClient.sendUpdateSubscription(e)})),t.on(e.TrackEvent.SubscriptionPermissionChanged,(i=>{this.emit(e.ParticipantEvent.TrackSubscriptionPermissionChanged,t,i)})),t.on(e.TrackEvent.SubscriptionStatusChanged,(i=>{this.emit(e.ParticipantEvent.TrackSubscriptionStatusChanged,t,i)})),t.on(e.TrackEvent.Subscribed,(i=>{this.emit(e.ParticipantEvent.TrackSubscribed,i,t)})),t.on(e.TrackEvent.Unsubscribed,(i=>{this.emit(e.ParticipantEvent.TrackUnsubscribed,i,t)})),t.on(e.TrackEvent.SubscriptionFailed,(i=>{this.emit(e.ParticipantEvent.TrackSubscriptionFailed,t.trackSid,i)}))}getTrack(e){const t=super.getTrack(e);if(t)return t}getTrackByName(e){const t=super.getTrackByName(e);if(t)return t}setVolume(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:sr.Source.Microphone;this.volumeMap.set(t,e);const i=this.getTrack(t);i&&i.track&&i.track.setVolume(e)}getVolume(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:sr.Source.Microphone;const t=this.getTrack(e);return t&&t.track?t.track.getVolume():this.volumeMap.get(e)}addSubscribedMediaTrack(t,i,n,r,s,o){let c=this.getTrackPublication(i);if(c||i.startsWith("TR")||this.tracks.forEach((e=>{c||t.kind!==e.kind.toString()||(c=e)})),!c)return 0===o?(a.error("could not find published track",{participant:this.sid,trackSid:i}),void this.emit(e.ParticipantEvent.TrackSubscriptionFailed,i)):(void 0===o&&(o=20),void setTimeout((()=>{this.addSubscribedMediaTrack(t,i,n,r,s,o-1)}),150));if("ended"===t.readyState)return a.error("unable to subscribe because MediaStreamTrack is ended. Do not call MediaStreamTrack.stop()",{participant:this.sid,trackSid:i}),void this.emit(e.ParticipantEvent.TrackSubscriptionFailed,i);let d;return d="video"===t.kind?new go(t,i,r,s):new vo(t,i,r,this.audioContext,this.audioOutput),d.source=c.source,d.isMuted=c.isMuted,d.setMediaStream(n),d.start(),c.setTrack(d),this.volumeMap.has(c.source)&&d instanceof vo&&d.setVolume(this.volumeMap.get(c.source)),c}get hasMetadata(){return!!this.participantInfo}getTrackPublication(e){return this.tracks.get(e)}updateInfo(t){if(!super.updateInfo(t))return!1;const i=new Map,n=new Map;return t.tracks.forEach((e=>{var r;let s=this.getTrackPublication(e.sid);if(s)s.updateInfo(e);else{const i=sr.kindFromProto(e.type);if(!i)return;s=new wo(i,e,null===(r=this.signalClient.connectOptions)||void 0===r?void 0:r.autoSubscribe),s.updateInfo(e),n.set(e.sid,s);const o=Array.from(this.tracks.values()).find((e=>e.source===(null==s?void 0:s.source)));o&&s.source!==sr.Source.Unknown&&a.debug("received a second track publication for ".concat(this.identity," with the same source: ").concat(s.source),{oldTrack:o,newTrack:s,participant:this,participantInfo:t}),this.addTrackPublication(s)}i.set(e.sid,s)})),this.tracks.forEach((e=>{i.has(e.trackSid)||(a.trace("detected removed track on remote participant, unpublishing",{publication:e,participantSid:this.sid}),this.unpublishTrack(e.trackSid,!0))})),n.forEach((t=>{this.emit(e.ParticipantEvent.TrackPublished,t)})),!0}unpublishTrack(t,i){const n=this.tracks.get(t);if(!n)return;const{track:r}=n;switch(r&&(r.stop(),n.setTrack(void 0)),this.tracks.delete(t),n.kind){case sr.Kind.Audio:this.audioTracks.delete(t);break;case sr.Kind.Video:this.videoTracks.delete(t)}i&&this.emit(e.ParticipantEvent.TrackUnpublished,n)}setAudioOutput(e){return gt(this,void 0,void 0,(function*(){this.audioOutput=e;const t=[];this.audioTracks.forEach((i=>{var n;i.track instanceof vo&&t.push(i.track.setSinkId(null!==(n=e.deviceId)&&void 0!==n?n:"default"))})),yield Promise.all(t)}))}emit(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];return a.trace("participant event",{participant:this.sid,event:e,args:i}),super.emit(e,...i)}}class Co extends So{constructor(e,t,i,n){super(e,t),this.pendingPublishing=new Set,this.pendingPublishPromises=new Map,this.participantTrackPermissions=[],this.allParticipantsAllowedToSubscribe=!0,this.encryptionType=ze.NONE,this.handleReconnecting=()=>{this.reconnectFuture||(this.reconnectFuture=new Vr)},this.handleReconnected=()=>{var e,t;null===(t=null===(e=this.reconnectFuture)||void 0===e?void 0:e.resolve)||void 0===t||t.call(e),this.reconnectFuture=void 0,this.updateTrackSubscriptionPermissions()},this.handleDisconnected=()=>{var e,t;this.reconnectFuture&&(this.reconnectFuture.promise.catch((e=>a.warn(e))),null===(t=null===(e=this.reconnectFuture)||void 0===e?void 0:e.reject)||void 0===t||t.call(e,"Got disconnected during reconnection attempt"),this.reconnectFuture=void 0)},this.updateTrackSubscriptionPermissions=()=>{a.debug("updating track subscription permissions",{allParticipantsAllowed:this.allParticipantsAllowedToSubscribe,participantTrackPermissions:this.participantTrackPermissions}),this.engine.client.sendUpdateSubscriptionPermissions(this.allParticipantsAllowedToSubscribe,this.participantTrackPermissions.map((e=>function(e){var t,i,n;if(!e.participantSid&&!e.participantIdentity)throw new Error("Invalid track permission, must provide at least one of participantIdentity and participantSid");return new bn({participantIdentity:null!==(t=e.participantIdentity)&&void 0!==t?t:"",participantSid:null!==(i=e.participantSid)&&void 0!==i?i:"",allTracks:null!==(n=e.allowAll)&&void 0!==n&&n,trackSids:e.allowedTrackSids||[]})}(e))))},this.onTrackUnmuted=e=>{this.onTrackMuted(e,e.isUpstreamPaused)},this.onTrackMuted=(e,t)=>{void 0===t&&(t=!0),e.sid?this.engine.updateMuteStatus(e.sid,t):a.error("could not update mute status for unpublished track",e)},this.onTrackUpstreamPaused=e=>{a.debug("upstream paused"),this.onTrackMuted(e,!0)},this.onTrackUpstreamResumed=e=>{a.debug("upstream resumed"),this.onTrackMuted(e,e.isMuted)},this.handleSubscribedQualityUpdate=e=>gt(this,void 0,void 0,(function*(){var t,i,n,r,s,o;if(!(null===(s=this.roomOptions)||void 0===s?void 0:s.dynacast))return;const c=this.videoTracks.get(e.trackSid);if(c)if(e.subscribedCodecs.length>0){if(!c.videoTrack)return;const s=yield c.videoTrack.setPublishingCodecs(e.subscribedCodecs);try{for(var d,u=!0,l=kt(s);!(t=(d=yield l.next()).done);u=!0){r=d.value,u=!1;const e=r;zn(e)&&(a.debug("publish ".concat(e," for ").concat(c.videoTrack.sid)),yield this.publishAdditionalCodecForTrack(c.videoTrack,e,c.options))}}catch(e){i={error:e}}finally{try{u||t||!(n=l.return)||(yield n.call(l))}finally{if(i)throw i.error}}}else e.subscribedQualities.length>0&&(yield null===(o=c.videoTrack)||void 0===o?void 0:o.setPublishingLayers(e.subscribedQualities));else a.warn("received subscribed quality update for unknown track",{method:"handleSubscribedQualityUpdate",sid:e.trackSid})})),this.handleLocalTrackUnpublished=e=>{const t=this.tracks.get(e.trackSid);t?this.unpublishTrack(t.track):a.warn("received unpublished event for unknown track",{method:"handleLocalTrackUnpublished",trackSid:e.trackSid})},this.handleTrackEnded=e=>gt(this,void 0,void 0,(function*(){if(e.source===sr.Source.ScreenShare||e.source===sr.Source.ScreenShareAudio)a.debug("unpublishing local track due to TrackEnded",{track:e.sid}),this.unpublishTrack(e);else if(e.isUserProvided)yield e.mute();else if(e instanceof Qs||e instanceof lo)try{if(Cr())try{const t=yield null===navigator||void 0===navigator?void 0:navigator.permissions.query({name:e.source===sr.Source.Camera?"camera":"microphone"});if(t&&"denied"===t.state)throw a.warn("user has revoked access to ".concat(e.source)),t.onchange=()=>{"denied"!==t.state&&(e.isMuted||e.restartTrack(),t.onchange=null)},new Error("GetUserMedia Permission denied")}catch(e){}e.isMuted||(a.debug("track ended, attempting to use a different device"),yield e.restartTrack())}catch(t){a.warn("could not restart track, muting instead"),yield e.mute()}})),this.audioTracks=new Map,this.videoTracks=new Map,this.tracks=new Map,this.engine=i,this.roomOptions=n,this.setupEngine(i),this.activeDeviceMap=new Map}get lastCameraError(){return this.cameraError}get lastMicrophoneError(){return this.microphoneError}get isE2EEEnabled(){return this.encryptionType!==ze.NONE}getTrack(e){const t=super.getTrack(e);if(t)return t}getTrackByName(e){const t=super.getTrackByName(e);if(t)return t}setupEngine(t){this.engine=t,this.engine.client.onRemoteMuteChanged=(e,t)=>{const i=this.tracks.get(e);i&&i.track&&(t?i.mute():i.unmute())},this.engine.client.onSubscribedQualityUpdate=this.handleSubscribedQualityUpdate,this.engine.client.onLocalTrackUnpublished=this.handleLocalTrackUnpublished,this.engine.on(e.EngineEvent.Connected,this.handleReconnected).on(e.EngineEvent.Restarted,this.handleReconnected).on(e.EngineEvent.Resumed,this.handleReconnected).on(e.EngineEvent.Restarting,this.handleReconnecting).on(e.EngineEvent.Resuming,this.handleReconnecting).on(e.EngineEvent.Disconnected,this.handleDisconnected)}setMetadata(e){var t;this.engine.client.sendUpdateLocalMetadata(e,null!==(t=this.name)&&void 0!==t?t:"")}setName(e){var t;this.engine.client.sendUpdateLocalMetadata(null!==(t=this.metadata)&&void 0!==t?t:"",e)}setCameraEnabled(e,t,i){return this.setTrackEnabled(sr.Source.Camera,e,t,i)}setMicrophoneEnabled(e,t,i){return this.setTrackEnabled(sr.Source.Microphone,e,t,i)}setScreenShareEnabled(e,t,i){return this.setTrackEnabled(sr.Source.ScreenShare,e,t,i)}setPermissions(t){const i=this.permissions,n=super.setPermissions(t);return n&&i&&this.emit(e.ParticipantEvent.ParticipantPermissionsChanged,i),n}setE2EEEnabled(e){return gt(this,void 0,void 0,(function*(){this.encryptionType=e?ze.GCM:ze.NONE,yield this.republishAllTracks(void 0,!1)}))}setTrackEnabled(t,i,n,r){var s,o;return gt(this,void 0,void 0,(function*(){a.debug("setTrackEnabled",{source:t,enabled:i});let c=this.getTrack(t);if(i)if(c)yield c.unmute();else{let i;if(this.pendingPublishing.has(t))return void a.info("skipping duplicate published source",{source:t});this.pendingPublishing.add(t);try{switch(t){case sr.Source.Camera:i=yield this.createTracks({video:null===(s=n)||void 0===s||s});break;case sr.Source.Microphone:i=yield this.createTracks({audio:null===(o=n)||void 0===o||o});break;case sr.Source.ScreenShare:i=yield this.createScreenTracks(Object.assign({},n));break;default:throw new On(t)}const e=[];for(const t of i)a.info("publishing track",{localTrack:t}),e.push(this.publishTrack(t,r));const d=yield Promise.all(e);[c]=d}catch(t){throw null==i||i.forEach((e=>{e.stop()})),t instanceof Error&&!(t instanceof On)&&this.emit(e.ParticipantEvent.MediaDevicesError,t),t}finally{this.pendingPublishing.delete(t)}}else if(c&&c.track)if(t===sr.Source.ScreenShare){c=yield this.unpublishTrack(c.track);const e=this.getTrack(sr.Source.ScreenShareAudio);e&&e.track&&this.unpublishTrack(e.track)}else yield c.mute();return c}))}enableCameraAndMicrophone(){return gt(this,void 0,void 0,(function*(){if(!this.pendingPublishing.has(sr.Source.Camera)&&!this.pendingPublishing.has(sr.Source.Microphone)){this.pendingPublishing.add(sr.Source.Camera),this.pendingPublishing.add(sr.Source.Microphone);try{const e=yield this.createTracks({audio:!0,video:!0});yield Promise.all(e.map((e=>this.publishTrack(e))))}finally{this.pendingPublishing.delete(sr.Source.Camera),this.pendingPublishing.delete(sr.Source.Microphone)}}}))}createTracks(e){var t,i;return gt(this,void 0,void 0,(function*(){const n=ur(cr(e,null===(t=this.roomOptions)||void 0===t?void 0:t.audioCaptureDefaults,null===(i=this.roomOptions)||void 0===i?void 0:i.videoCaptureDefaults));let r;try{r=yield navigator.mediaDevices.getUserMedia(n)}catch(e){throw e instanceof Error&&(n.audio&&(this.microphoneError=e),n.video&&(this.cameraError=e)),e}return n.audio&&(this.microphoneError=void 0),n.video&&(this.cameraError=void 0),r.getTracks().map((t=>{const i="audio"===t.kind;let s;i?e.audio:e.video;const o=i?n.audio:n.video;"boolean"!=typeof o&&(s=o);const a=Ys(t,s);return a.kind===sr.Kind.Video?a.source=sr.Source.Camera:a.kind===sr.Kind.Audio&&(a.source=sr.Source.Microphone),a.mediaStream=r,a}))}))}createScreenTracks(e){return gt(this,void 0,void 0,(function*(){if(void 0===e&&(e={}),void 0===e.resolution&&(e.resolution=$n.h1080fps15.resolution),void 0===navigator.mediaDevices.getDisplayMedia)throw new An("getDisplayMedia not supported");const t=hr(e),i=yield navigator.mediaDevices.getDisplayMedia(t),n=i.getVideoTracks();if(0===n.length)throw new On("no video track found");const r=new lo(n[0],void 0,!1);r.source=sr.Source.ScreenShare;const s=[r];if(i.getAudioTracks().length>0){const e=new Qs(i.getAudioTracks()[0],void 0,!1,this.audioContext);e.source=sr.Source.ScreenShareAudio,s.push(e)}return s}))}publishTrack(e,t){var i,n,r,s;return gt(this,void 0,void 0,(function*(){let o,c;if(yield null===(i=this.reconnectFuture)||void 0===i?void 0:i.promise,e instanceof ms&&this.pendingPublishPromises.has(e)&&(yield this.pendingPublishPromises.get(e)),e instanceof MediaStreamTrack)o=e.getConstraints();else{let t;switch(o=e.constraints,e.source){case sr.Source.Microphone:t="audioinput";break;case sr.Source.Camera:t="videoinput"}t&&this.activeDeviceMap.has(t)&&(o=Object.assign(Object.assign({},o),{deviceId:this.activeDeviceMap.get(t)}))}if(e instanceof MediaStreamTrack)switch(e.kind){case"audio":e=new Qs(e,o,!0,this.audioContext);break;case"video":e=new lo(e,o,!0);break;default:throw new On("unsupported MediaStreamTrack kind ".concat(e.kind))}if(e instanceof Qs&&e.setAudioContext(this.audioContext),this.tracks.forEach((t=>{t.track&&t.track===e&&(c=t)})),c)return a.warn("track has already been published, skipping"),c;const d="channelCount"in e.mediaStreamTrack.getSettings()&&2===e.mediaStreamTrack.getSettings().channelCount||2===e.mediaStreamTrack.getConstraints().channelCount,u=null!==(n=null==t?void 0:t.forceStereo)&&void 0!==n?n:d;u&&(t||(t={}),void 0===t.dtx&&a.info("Opus DTX will be disabled for stereo tracks by default. Enable them explicitly to make it work."),void 0===t.red&&a.info("Opus RED will be disabled for stereo tracks by default. Enable them explicitly to make it work."),null!==(r=t.dtx)&&void 0!==r||(t.dtx=!1),null!==(s=t.red)&&void 0!==s||(t.red=!1));const l=Object.assign(Object.assign({},this.roomOptions.publishDefaults),t);wr()&&this.roomOptions.e2ee&&(a.info("End-to-end encryption is set up, simulcast publishing will be disabled on Safari"),l.simulcast=!1),l.source&&(e.source=l.source);const h=this.publish(e,l,u);this.pendingPublishPromises.set(e,h);try{return yield h}catch(e){throw e}finally{this.pendingPublishPromises.delete(e)}}))}publish(t,i,n){var r,s,o,c,d,u,l,h,p,m,f,v,g,y;return gt(this,void 0,void 0,(function*(){const k=Array.from(this.tracks.values()).find((e=>t instanceof ms&&e.source===t.source));if(k&&t.source!==sr.Source.Unknown)try{throw Error("publishing a second track with the same source: ".concat(t.source))}catch(e){e instanceof Error&&a.warn(e.message,{oldTrack:k,newTrack:t,trace:e.stack})}i.stopMicTrackOnMute&&t instanceof Qs&&(t.stopOnMute=!0),t.source===sr.Source.ScreenShare&&Sr()&&(i.simulcast=!1),"av1"!==i.videoCodec||gr()||(i.videoCodec=void 0),"vp9"!==i.videoCodec||yr()||(i.videoCodec=void 0),t.on(e.TrackEvent.Muted,this.onTrackMuted),t.on(e.TrackEvent.Unmuted,this.onTrackUnmuted),t.on(e.TrackEvent.Ended,this.handleTrackEnded),t.on(e.TrackEvent.UpstreamPaused,this.onTrackUpstreamPaused),t.on(e.TrackEvent.UpstreamResumed,this.onTrackUpstreamResumed);const b=new Qi({cid:t.mediaStreamTrack.id,name:i.name,type:sr.kindToProto(t.kind),muted:t.isMuted,source:sr.sourceToProto(t.source),disableDtx:!(null===(r=i.dtx)||void 0===r||r),encryption:this.encryptionType,stereo:n,disableRed:this.isE2EEEnabled||!(null===(s=i.red)||void 0===s||s)});let T,S;if(t.kind===sr.Kind.Video){let e={width:0,height:0};try{e=yield t.waitForDimensions()}catch(t){const i=null!==(c=null===(o=this.roomOptions.videoCaptureDefaults)||void 0===o?void 0:o.resolution)&&void 0!==c?c:Xn.h720.resolution;e={width:i.width,height:i.height},a.error("could not determine track dimensions, using defaults",e)}if(b.width=e.width,b.height=e.height,t instanceof lo)if(kr(i.videoCodec)&&(i.scalabilityMode=null!==(d=i.scalabilityMode)&&void 0!==d?d:"L3T3_KEY"),i.videoCodec&&i.backupCodec&&i.videoCodec!==i.backupCodec.codec){this.roomOptions.dynacast||(this.roomOptions.dynacast=!0);const e=Object.assign({},i);e.simulcast=!0,S=so(t,i.backupCodec.codec,e),b.simulcastCodecs=[new zi({codec:i.videoCodec,cid:t.mediaStreamTrack.id,enableSimulcastLayers:!0}),new zi({codec:i.backupCodec.codec,cid:"",enableSimulcastLayers:!0})]}else i.videoCodec&&(b.simulcastCodecs=[new zi({codec:i.videoCodec,cid:t.mediaStreamTrack.id,enableSimulcastLayers:null!==(u=i.simulcast)&&void 0!==u&&u})]);T=ro(t.source===sr.Source.ScreenShare,e.width,e.height,i),b.layers=mo(b.width,b.height,T,kr(i.videoCodec))}else t.kind===sr.Kind.Audio&&(T=[{maxBitrate:null!==(h=null===(l=i.audioPreset)||void 0===l?void 0:l.maxBitrate)&&void 0!==h?h:i.audioBitrate,priority:null!==(m=null===(p=i.audioPreset)||void 0===p?void 0:p.priority)&&void 0!==m?m:"high",networkPriority:null!==(v=null===(f=i.audioPreset)||void 0===f?void 0:f.priority)&&void 0!==v?v:"high"}]);if(!this.engine||this.engine.isClosed)throw new xn("cannot publish track when not connected");const w=yield this.engine.addTrack(b);let E=!1,C=!1;if(w.codecs.forEach((e=>{Qn(e.mimeType,i.videoCodec)?E=!0:i.backupCodec&&Qn(e.mimeType,i.backupCodec.codec)&&(C=!0)})),b.simulcastCodecs.length>0){if(!E&&!C)throw Error("cannot publish track, codec not supported by server");if(!E&&i.backupCodec){const e=i.backupCodec;i=Object.assign({},i),a.debug("primary codec ".concat(i.videoCodec," not supported, fallback to ").concat(e.codec)),i.videoCodec=e.codec,i.videoEncoding=e.encoding,T=S}}const P=new To(t.kind,w,t);if(P.options=i,t.sid=w.sid,!this.engine.publisher)throw new xn("publisher is closed");if(a.debug("publishing ".concat(t.kind," with encodings"),{encodings:T,trackInfo:w}),t.sender=yield this.engine.createSender(t,i,T),T)if(Sr()&&t.kind===sr.Kind.Audio){let e;for(const i of this.engine.publisher.pc.getTransceivers())if(i.sender===t.sender){e=i;break}e&&this.engine.publisher.setTrackCodecBitrate({transceiver:e,codec:"opus",maxbr:(null===(g=T[0])||void 0===g?void 0:g.maxBitrate)?T[0].maxBitrate/1e3:0})}else t.codec&&kr(t.codec)&&(null===(y=T[0])||void 0===y?void 0:y.maxBitrate)&&this.engine.publisher.setTrackCodecBitrate({cid:b.cid,codec:t.codec,maxbr:T[0].maxBitrate/1e3});return yield this.engine.negotiate(),t instanceof lo?t.startMonitor(this.engine.client):t instanceof Qs&&t.startMonitor(),this.addTrackPublication(P),this.emit(e.ParticipantEvent.LocalTrackPublished,P),P}))}get isLocal(){return!0}publishAdditionalCodecForTrack(e,t,i){var n;return gt(this,void 0,void 0,(function*(){let r;if(this.tracks.forEach((t=>{t.track&&t.track===e&&(r=t)})),!r)throw new On("track is not published");if(!(e instanceof lo))throw new On("track is not a video track");const s=Object.assign(Object.assign({},null===(n=this.roomOptions)||void 0===n?void 0:n.publishDefaults),i),o=so(e,t,s);if(!o)return void a.info("backup codec has been disabled, ignoring request to add additional codec for track");const c=e.addSimulcastTrack(t,o),d=new Qi({cid:c.mediaStreamTrack.id,type:sr.kindToProto(e.kind),muted:e.isMuted,source:sr.sourceToProto(e.source),sid:e.sid,simulcastCodecs:[{codec:s.videoCodec,cid:c.mediaStreamTrack.id,enableSimulcastLayers:s.simulcast}]});if(d.layers=mo(d.width,d.height,o),!this.engine||this.engine.isClosed)throw new xn("cannot publish track when not connected");const u=yield this.engine.addTrack(d);yield this.engine.createSimulcastSender(e,c,s,o),yield this.engine.negotiate(),a.debug("published ".concat(t," for track ").concat(e.sid),{encodings:o,trackInfo:u})}))}unpublishTrack(t,i){var n,r;return gt(this,void 0,void 0,(function*(){const s=this.getPublicationForTrack(t);if(a.debug("unpublishing track",{track:t,method:"unpublishTrack"}),!s||!s.track)return void a.warn("track was not unpublished because no publication was found",{track:t,method:"unpublishTrack"});(t=s.track).off(e.TrackEvent.Muted,this.onTrackMuted),t.off(e.TrackEvent.Unmuted,this.onTrackUnmuted),t.off(e.TrackEvent.Ended,this.handleTrackEnded),t.off(e.TrackEvent.UpstreamPaused,this.onTrackUpstreamPaused),t.off(e.TrackEvent.UpstreamResumed,this.onTrackUpstreamResumed),void 0===i&&(i=null===(r=null===(n=this.roomOptions)||void 0===n?void 0:n.stopLocalTrackOnUnpublish)||void 0===r||r),i&&t.stop();let o=!1;const c=t.sender;if(t.sender=void 0,this.engine.publisher&&"closed"!==this.engine.publisher.pc.connectionState&&c)try{for(const e of this.engine.publisher.pc.getTransceivers())e.sender===c&&(e.direction="inactive",o=!0);if(this.engine.removeTrack(c)&&(o=!0),t instanceof lo){for(const[,e]of t.simulcastCodecs)e.sender&&(this.engine.removeTrack(e.sender)&&(o=!0),e.sender=void 0);t.simulcastCodecs.clear()}}catch(e){a.warn("failed to unpublish track",{error:e,method:"unpublishTrack"})}switch(this.tracks.delete(s.trackSid),s.kind){case sr.Kind.Audio:this.audioTracks.delete(s.trackSid);break;case sr.Kind.Video:this.videoTracks.delete(s.trackSid)}return this.emit(e.ParticipantEvent.LocalTrackUnpublished,s),s.setTrack(void 0),o&&(yield this.engine.negotiate()),s}))}unpublishTracks(e){return gt(this,void 0,void 0,(function*(){return(yield Promise.all(e.map((e=>this.unpublishTrack(e))))).filter((e=>e instanceof To))}))}republishAllTracks(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return gt(this,void 0,void 0,(function*(){const i=[];this.tracks.forEach((t=>{t.track&&(e&&(t.options=Object.assign(Object.assign({},t.options),e)),i.push(t))})),yield Promise.all(i.map((e=>gt(this,void 0,void 0,(function*(){const i=e.track;yield this.unpublishTrack(i,!1),t&&!i.isMuted&&(i instanceof Qs||i instanceof lo)&&!i.isUserProvided&&(a.debug("restarting existing track",{track:e.trackSid}),yield i.restartTrack()),yield this.publishTrack(i,e.options)})))))}))}publishData(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return gt(this,void 0,void 0,(function*(){const n=Array.isArray(i)?i:null==i?void 0:i.destination,r=[],s=Array.isArray(i)?void 0:i.topic;void 0!==n&&n.forEach((e=>{e instanceof Eo?r.push(e.sid):r.push(e)}));const o=new it({kind:t,value:{case:"user",value:new st({participantSid:this.sid,payload:e,destinationSids:r,topic:s})}});yield this.engine.sendDataPacket(o,t)}))}setTrackSubscriptionPermissions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];this.participantTrackPermissions=t,this.allParticipantsAllowedToSubscribe=e,this.engine.client.isConnected&&this.updateTrackSubscriptionPermissions()}updateInfo(e){return e.sid===this.sid&&(!!super.updateInfo(e)&&(e.tracks.forEach((e=>{var t,i;const n=this.tracks.get(e.sid);if(n){const r=n.isMuted||null!==(i=null===(t=n.track)||void 0===t?void 0:t.isUpstreamPaused)&&void 0!==i&&i;r!==e.muted&&(a.debug("updating server mute state after reconcile",{sid:e.sid,muted:r}),this.engine.client.sendMuteTrack(e.sid,r))}})),!0))}getPublicationForTrack(e){let t;return this.tracks.forEach((i=>{const n=i.track;n&&(e instanceof MediaStreamTrack?(n instanceof Qs||n instanceof lo)&&n.mediaStreamTrack===e&&(t=i):e===n&&(t=i))})),t}publishedTracksInfo(){const e=[];return this.tracks.forEach((t=>{void 0!==t.track&&e.push(new en({cid:t.track.mediaStreamID,track:t.trackInfo}))})),e}dataChannelsInfo(){const t=[],i=(e,i)=>{void 0!==(null==e?void 0:e.id)&&null!==e.id&&t.push(new En({label:e.label,id:e.id,target:i}))};return i(this.engine.dataChannelForKind(e.DataPacket_Kind.LOSSY),ji.PUBLISHER),i(this.engine.dataChannelForKind(e.DataPacket_Kind.RELIABLE),ji.PUBLISHER),i(this.engine.dataChannelForKind(e.DataPacket_Kind.LOSSY,!0),ji.SUBSCRIBER),i(this.engine.dataChannelForKind(e.DataPacket_Kind.RELIABLE,!0),ji.SUBSCRIBER),t}}var Po;e.ConnectionState=void 0,(Po=e.ConnectionState||(e.ConnectionState={})).Disconnected="disconnected",Po.Connecting="connecting",Po.Connected="connected",Po.Reconnecting="reconnecting";const Ro=e.ConnectionState;class Io extends xt.EventEmitter{constructor(t){var i,n;super(),i=this,this.state=e.ConnectionState.Disconnected,this.activeSpeakers=[],this.isE2EEEnabled=!1,this.audioEnabled=!0,this.connect=(t,i,n)=>gt(this,void 0,void 0,(function*(){var r;const s=yield this.disconnectLock.lock();if(this.state===e.ConnectionState.Connected)return a.info("already connected to room ".concat(this.name)),s(),Promise.resolve();if(this.connectFuture)return s(),this.connectFuture.promise;this.setAndEmitConnectionState(e.ConnectionState.Connecting),(null===(r=this.regionUrlProvider)||void 0===r?void 0:r.getServerUrl().toString())!==t&&(this.regionUrl=void 0,this.regionUrlProvider=void 0),Rr(new URL(t))&&(void 0===this.regionUrlProvider?this.regionUrlProvider=new Hs(t,i):this.regionUrlProvider.updateToken(i),this.regionUrlProvider.fetchRegionSettings().catch((e=>{a.warn("could not fetch region settings",{error:e})})));const o=(e,r,c)=>gt(this,void 0,void 0,(function*(){var d;this.abortController&&this.abortController.abort();const u=new AbortController;this.abortController=u,null==s||s();try{yield this.attemptConnection(null!=c?c:t,i,n,u),this.abortController=void 0,e()}catch(t){if(this.regionUrlProvider&&t instanceof Nn&&3!==t.reason&&0!==t.reason){let i=null;try{i=yield this.regionUrlProvider.getNextBestRegionUrl(null===(d=this.abortController)||void 0===d?void 0:d.signal)}catch(e){if(e instanceof Nn&&(401===e.status||3===e.reason))return void r(e)}i?(a.info("initial connection failed, retrying with another region",{nextUrl:i}),yield o(e,r,i)):r(t)}else r(t)}})),c=this.regionUrl;return this.regionUrl=void 0,this.connectFuture=new Vr(((e,t)=>{o(e,t,c)}),(()=>{this.clearConnectionFutures()})),this.connectFuture.promise})),this.connectSignal=(e,t,i,n,r,s)=>gt(this,void 0,void 0,(function*(){const o=yield i.join(e,t,{autoSubscribe:n.autoSubscribe,publishOnly:n.publishOnly,adaptiveStream:"object"==typeof r.adaptiveStream||r.adaptiveStream,maxRetries:n.maxRetries,e2eeEnabled:!!this.e2eeManager,websocketTimeout:n.websocketTimeout},s.signal);let c=o.serverInfo;if(c||(c={version:o.serverVersion,region:o.serverRegion}),a.debug("connected to Livekit Server ".concat(Object.entries(c).map((e=>{let[t,i]=e;return"".concat(t,": ").concat(i)})).join(", "))),!o.serverVersion)throw new Mn("unknown server version");return"0.15.1"===o.serverVersion&&this.options.dynacast&&(a.debug("disabling dynacast due to server version"),r.dynacast=!1),o})),this.applyJoinResponse=e=>{const t=e.participant;this.localParticipant.sid=t.sid,this.localParticipant.identity=t.identity,this.handleParticipantUpdates([t,...e.otherParticipants]),e.room&&this.handleRoomUpdate(e.room),this.options.e2ee&&this.e2eeManager&&this.e2eeManager.setSifTrailer(e.sifTrailer)},this.attemptConnection=(t,i,n,r)=>gt(this,void 0,void 0,(function*(){var s,o;this.state===e.ConnectionState.Reconnecting?(a.info("Reconnection attempt replaced by new connection attempt"),this.recreateEngine()):this.maybeCreateEngine(),(null===(s=this.regionUrlProvider)||void 0===s?void 0:s.isCloud())&&this.engine.setRegionUrlProvider(this.regionUrlProvider),this.acquireAudioContext(),this.connOptions=Object.assign(Object.assign({},Fs),n),this.connOptions.rtcConfig&&(this.engine.rtcConfig=this.connOptions.rtcConfig),this.connOptions.peerConnectionTimeout&&(this.engine.peerConnectionTimeout=this.connOptions.peerConnectionTimeout);try{const n=yield this.connectSignal(t,i,this.engine,this.connOptions,this.options,r);this.applyJoinResponse(n),this.setupLocalParticipantEvents(),this.emit(e.RoomEvent.SignalConnected)}catch(e){this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish);const t=new Nn("could not establish signal connection");throw e instanceof Error&&(t.message="".concat(t.message,": ").concat(e.message)),e instanceof Nn&&(t.reason=e.reason,t.status=e.status),a.debug("error trying to establish signal connection",{error:e}),t}if(r.signal.aborted)throw this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),new Nn("Connection attempt aborted");try{yield this.engine.waitForPCInitialConnection(this.connOptions.peerConnectionTimeout,r)}catch(e){throw this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish),e}Cr()&&this.options.disconnectOnPageLeave&&(window.addEventListener("pagehide",this.onPageLeave),window.addEventListener("beforeunload",this.onPageLeave)),Cr()&&(document.addEventListener("freeze",this.onPageLeave),null===(o=navigator.mediaDevices)||void 0===o||o.addEventListener("devicechange",this.handleDeviceChange)),this.setAndEmitConnectionState(e.ConnectionState.Connected),this.emit(e.RoomEvent.Connected),this.registerConnectionReconcile()})),this.disconnect=function(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return gt(i,void 0,void 0,(function*(){var i,n,r,s;const o=yield this.disconnectLock.lock();try{if(this.state===e.ConnectionState.Disconnected)return void a.debug("already disconnected");a.info("disconnect from room",{identity:this.localParticipant.identity}),this.state!==e.ConnectionState.Connecting&&this.state!==e.ConnectionState.Reconnecting||(a.warn("abort connection attempt"),null===(i=this.abortController)||void 0===i||i.abort(),null===(r=null===(n=this.connectFuture)||void 0===n?void 0:n.reject)||void 0===r||r.call(n,new Nn("Client initiated disconnect")),this.connectFuture=void 0),(null===(s=this.engine)||void 0===s?void 0:s.client.isConnected)&&(yield this.engine.client.sendLeave()),this.engine&&(yield this.engine.close()),this.handleDisconnect(t,e.DisconnectReason.CLIENT_INITIATED),this.engine=void 0}finally{o()}}))},this.onPageLeave=()=>gt(this,void 0,void 0,(function*(){yield this.disconnect()})),this.handleRestarting=()=>{this.clearConnectionReconcile();for(const e of this.participants.values())this.handleParticipantDisconnected(e.sid,e);this.setAndEmitConnectionState(e.ConnectionState.Reconnecting)&&this.emit(e.RoomEvent.Reconnecting)},this.handleSignalRestarted=t=>gt(this,void 0,void 0,(function*(){a.debug("signal reconnected to server",{region:t.serverRegion}),this.cachedParticipantSids=[],this.applyJoinResponse(t);try{const e=[];this.localParticipant.tracks.forEach((t=>{t.track&&e.push(t)})),yield Promise.all(e.map((e=>gt(this,void 0,void 0,(function*(){const t=e.track;this.localParticipant.unpublishTrack(t,!1),t.isMuted||((t instanceof Qs||t instanceof lo)&&t.source!==sr.Source.ScreenShare&&t.source!==sr.Source.ScreenShareAudio&&!t.isUserProvided&&(a.debug("restarting existing track",{track:e.trackSid}),yield t.restartTrack()),a.debug("publishing new track",{track:e.trackSid}),yield this.localParticipant.publishTrack(t,e.options))})))))}catch(e){a.error("error trying to re-publish tracks after reconnection",{error:e})}try{yield this.engine.waitForRestarted(),a.debug("fully reconnected to server",{region:t.serverRegion})}catch(e){return}this.setAndEmitConnectionState(e.ConnectionState.Connected),this.emit(e.RoomEvent.Reconnected),this.registerConnectionReconcile(),this.participants.forEach((t=>{this.emit(e.RoomEvent.ParticipantConnected,t)}))})),this.handleParticipantUpdates=e=>{e.forEach((e=>{if(e.identity===this.localParticipant.identity)return void this.localParticipant.updateInfo(e);const t=this.identityToSid.get(e.identity);t&&t!==e.sid&&this.handleParticipantDisconnected(t,this.participants.get(t));let i=this.participants.get(e.sid);const n=!i;e.state===Ge.DISCONNECTED?this.handleParticipantDisconnected(e.sid,i):(i=this.getOrCreateParticipant(e.sid,e),n||i.updateInfo(e))}))},this.handleActiveSpeakersUpdate=t=>{const i=[],n={};t.forEach((e=>{if(n[e.sid]=!0,e.sid===this.localParticipant.sid)this.localParticipant.audioLevel=e.level,this.localParticipant.setIsSpeaking(!0),i.push(this.localParticipant);else{const t=this.participants.get(e.sid);t&&(t.audioLevel=e.level,t.setIsSpeaking(!0),i.push(t))}})),n[this.localParticipant.sid]||(this.localParticipant.audioLevel=0,this.localParticipant.setIsSpeaking(!1)),this.participants.forEach((e=>{n[e.sid]||(e.audioLevel=0,e.setIsSpeaking(!1))})),this.activeSpeakers=i,this.emitWhenConnected(e.RoomEvent.ActiveSpeakersChanged,i)},this.handleSpeakersChanged=t=>{const i=new Map;this.activeSpeakers.forEach((e=>{i.set(e.sid,e)})),t.forEach((e=>{let t=this.participants.get(e.sid);e.sid===this.localParticipant.sid&&(t=this.localParticipant),t&&(t.audioLevel=e.level,t.setIsSpeaking(e.active),e.active?i.set(e.sid,t):i.delete(e.sid))}));const n=Array.from(i.values());n.sort(((e,t)=>t.audioLevel-e.audioLevel)),this.activeSpeakers=n,this.emitWhenConnected(e.RoomEvent.ActiveSpeakersChanged,n)},this.handleStreamStateUpdate=t=>{t.streamStates.forEach((t=>{const i=this.participants.get(t.participantSid);if(!i)return;const n=i.getTrackPublication(t.trackSid);n&&n.track&&(n.track.streamState=sr.streamStateFromProto(t.state),i.emit(e.ParticipantEvent.TrackStreamStateChanged,n,n.track.streamState),this.emitWhenConnected(e.RoomEvent.TrackStreamStateChanged,n,n.track.streamState,i))}))},this.handleSubscriptionPermissionUpdate=e=>{const t=this.participants.get(e.participantSid);if(!t)return;const i=t.getTrackPublication(e.trackSid);i&&i.setAllowed(e.allowed)},this.handleSubscriptionError=e=>{const t=Array.from(this.participants.values()).find((t=>t.tracks.has(e.trackSid)));if(!t)return;const i=t.getTrackPublication(e.trackSid);i&&i.setSubscriptionError(e.err)},this.handleDataPacket=(t,i)=>{const n=this.participants.get(t.participantSid);this.emit(e.RoomEvent.DataReceived,t.payload,n,i,t.topic),null==n||n.emit(e.ParticipantEvent.DataReceived,t.payload,i)},this.handleAudioPlaybackStarted=()=>{this.canPlaybackAudio||(this.audioEnabled=!0,this.emit(e.RoomEvent.AudioPlaybackStatusChanged,!0))},this.handleAudioPlaybackFailed=t=>{a.warn("could not playback audio",t),this.canPlaybackAudio&&(this.audioEnabled=!1,this.emit(e.RoomEvent.AudioPlaybackStatusChanged,!1))},this.handleDeviceChange=()=>gt(this,void 0,void 0,(function*(){this.emit(e.RoomEvent.MediaDevicesChanged)})),this.handleRoomUpdate=t=>{const i=this.roomInfo;this.roomInfo=t,i&&i.metadata!==t.metadata&&this.emitWhenConnected(e.RoomEvent.RoomMetadataChanged,t.metadata),(null==i?void 0:i.activeRecording)!==t.activeRecording&&this.emitWhenConnected(e.RoomEvent.RecordingStatusChanged,t.activeRecording)},this.handleConnectionQualityUpdate=e=>{e.updates.forEach((e=>{if(e.participantSid===this.localParticipant.sid)return void this.localParticipant.setConnectionQuality(e.quality);const t=this.participants.get(e.participantSid);t&&t.setConnectionQuality(e.quality)}))},this.onLocalParticipantMetadataChanged=t=>{this.emit(e.RoomEvent.ParticipantMetadataChanged,t,this.localParticipant)},this.onLocalParticipantNameChanged=t=>{this.emit(e.RoomEvent.ParticipantNameChanged,t,this.localParticipant)},this.onLocalTrackMuted=t=>{this.emit(e.RoomEvent.TrackMuted,t,this.localParticipant)},this.onLocalTrackUnmuted=t=>{this.emit(e.RoomEvent.TrackUnmuted,t,this.localParticipant)},this.onLocalTrackPublished=t=>gt(this,void 0,void 0,(function*(){var i;if(this.emit(e.RoomEvent.LocalTrackPublished,t,this.localParticipant),t.track instanceof Qs){(yield t.track.checkForSilence())&&this.emit(e.RoomEvent.LocalAudioSilenceDetected,t)}const n=yield null===(i=t.track)||void 0===i?void 0:i.getDeviceId(),r=(s=t.source)===sr.Source.Microphone?"audioinput":s===sr.Source.Camera?"videoinput":void 0;var s;r&&n&&n!==this.localParticipant.activeDeviceMap.get(r)&&(this.localParticipant.activeDeviceMap.set(r,n),this.emit(e.RoomEvent.ActiveDeviceChanged,r,n))})),this.onLocalTrackUnpublished=t=>{this.emit(e.RoomEvent.LocalTrackUnpublished,t,this.localParticipant)},this.onLocalConnectionQualityChanged=t=>{this.emit(e.RoomEvent.ConnectionQualityChanged,t,this.localParticipant)},this.onMediaDevicesError=t=>{this.emit(e.RoomEvent.MediaDevicesError,t)},this.onLocalParticipantPermissionsChanged=t=>{this.emit(e.RoomEvent.ParticipantPermissionsChanged,t,this.localParticipant)},this.setMaxListeners(100),this.participants=new Map,this.cachedParticipantSids=[],this.identityToSid=new Map,this.options=Object.assign(Object.assign({},Bs),t),this.options.audioCaptureDefaults=Object.assign(Object.assign({},xs),null==t?void 0:t.audioCaptureDefaults),this.options.videoCaptureDefaults=Object.assign(Object.assign({},Us),null==t?void 0:t.videoCaptureDefaults),this.options.publishDefaults=Object.assign(Object.assign({},Ms),null==t?void 0:t.publishDefaults),this.maybeCreateEngine(),this.disconnectLock=new qr,this.localParticipant=new Co("","",this.engine,this.options),this.options.videoCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("videoinput",Kr(this.options.videoCaptureDefaults.deviceId)),this.options.audioCaptureDefaults.deviceId&&this.localParticipant.activeDeviceMap.set("audioinput",Kr(this.options.audioCaptureDefaults.deviceId)),(null===(n=this.options.audioOutput)||void 0===n?void 0:n.deviceId)&&this.switchActiveDevice("audiooutput",Kr(this.options.audioOutput.deviceId)),this.options.e2ee&&this.setupE2EE()}setE2EEEnabled(e){return gt(this,void 0,void 0,(function*(){if(!this.e2eeManager)throw Error("e2ee not configured, please set e2ee settings within the room options");yield Promise.all([this.localParticipant.setE2EEEnabled(e)]),""!==this.localParticipant.identity&&this.e2eeManager.setParticipantCryptorEnabled(e,this.localParticipant.identity)}))}setupE2EE(){var t;this.options.e2ee&&(this.e2eeManager=new fs(this.options.e2ee),this.e2eeManager.on(e.EncryptionEvent.ParticipantEncryptionStatusChanged,((t,i)=>{i instanceof Co&&(this.isE2EEEnabled=t),this.emit(e.RoomEvent.ParticipantEncryptionStatusChanged,t,i)})),this.e2eeManager.on(e.EncryptionEvent.EncryptionError,(t=>this.emit(e.RoomEvent.EncryptionError,t))),null===(t=this.e2eeManager)||void 0===t||t.setup(this))}get isRecording(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.activeRecording)&&void 0!==t&&t}get sid(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.sid)&&void 0!==t?t:""}get name(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.name)&&void 0!==t?t:""}get metadata(){var e;return null===(e=this.roomInfo)||void 0===e?void 0:e.metadata}get numParticipants(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.numParticipants)&&void 0!==t?t:0}get numPublishers(){var e,t;return null!==(t=null===(e=this.roomInfo)||void 0===e?void 0:e.numPublishers)&&void 0!==t?t:0}maybeCreateEngine(){this.engine&&!this.engine.isClosed||(this.engine=new Ks(this.options),this.engine.on(e.EngineEvent.ParticipantUpdate,this.handleParticipantUpdates).on(e.EngineEvent.RoomUpdate,this.handleRoomUpdate).on(e.EngineEvent.SpeakersChanged,this.handleSpeakersChanged).on(e.EngineEvent.StreamStateChanged,this.handleStreamStateUpdate).on(e.EngineEvent.ConnectionQualityUpdate,this.handleConnectionQualityUpdate).on(e.EngineEvent.SubscriptionError,this.handleSubscriptionError).on(e.EngineEvent.SubscriptionPermissionUpdate,this.handleSubscriptionPermissionUpdate).on(e.EngineEvent.MediaTrackAdded,((e,t,i)=>{this.onTrackAdded(e,t,i)})).on(e.EngineEvent.Disconnected,(e=>{this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e)})).on(e.EngineEvent.ActiveSpeakersUpdate,this.handleActiveSpeakersUpdate).on(e.EngineEvent.DataPacketReceived,this.handleDataPacket).on(e.EngineEvent.Resuming,(()=>{this.clearConnectionReconcile(),this.setAndEmitConnectionState(e.ConnectionState.Reconnecting)&&this.emit(e.RoomEvent.Reconnecting),this.cachedParticipantSids=Array.from(this.participants.keys())})).on(e.EngineEvent.Resumed,(()=>{this.setAndEmitConnectionState(e.ConnectionState.Connected),this.emit(e.RoomEvent.Reconnected),this.registerConnectionReconcile(),this.updateSubscriptions();Array.from(this.participants.values()).filter((e=>!this.cachedParticipantSids.includes(e.sid))).forEach((t=>this.emit(e.RoomEvent.ParticipantConnected,t))),this.cachedParticipantSids=[]})).on(e.EngineEvent.SignalResumed,(()=>{this.state===e.ConnectionState.Reconnecting&&this.sendSyncState()})).on(e.EngineEvent.Restarting,this.handleRestarting).on(e.EngineEvent.SignalRestarted,this.handleSignalRestarted).on(e.EngineEvent.DCBufferStatusChanged,((t,i)=>{this.emit(e.RoomEvent.DCBufferStatusChanged,t,i)})),this.localParticipant&&this.localParticipant.setupEngine(this.engine),this.e2eeManager&&this.e2eeManager.setupEngine(this.engine))}static getLocalDevices(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return ps.getInstance().getDevices(e,t)}prepareConnection(t,i){return gt(this,void 0,void 0,(function*(){if(this.state===e.ConnectionState.Disconnected){a.debug("prepareConnection to ".concat(t));try{if(Rr(new URL(t))&&i){this.regionUrlProvider=new Hs(t,i);const n=yield this.regionUrlProvider.getNextBestRegionUrl();n&&this.state===e.ConnectionState.Disconnected&&(this.regionUrl=n,yield fetch(Wr(n),{method:"HEAD"}),a.debug("prepared connection to ".concat(n)))}else yield fetch(Wr(t),{method:"HEAD"})}catch(e){a.warn("could not prepare connection",{error:e})}}}))}getParticipantByIdentity(e){if(this.localParticipant.identity===e)return this.localParticipant;const t=this.identityToSid.get(e);return t?this.participants.get(t):void 0}clearConnectionFutures(){this.connectFuture=void 0}simulateScenario(t,i){return gt(this,void 0,void 0,(function*(){let n,r=()=>{};switch(t){case"signal-reconnect":yield this.engine.client.handleOnClose("simulate disconnect");break;case"speaker":n=new Cn({scenario:{case:"speakerUpdate",value:3}});break;case"node-failure":n=new Cn({scenario:{case:"nodeFailure",value:!0}});break;case"server-leave":n=new Cn({scenario:{case:"serverLeave",value:!0}});break;case"migration":n=new Cn({scenario:{case:"migration",value:!0}});break;case"resume-reconnect":this.engine.failNext(),yield this.engine.client.handleOnClose("simulate resume-disconnect");break;case"full-reconnect":this.engine.fullReconnectOnNext=!0,yield this.engine.client.handleOnClose("simulate full-reconnect");break;case"force-tcp":case"force-tls":n=new Cn({scenario:{case:"switchCandidateProtocol",value:"force-tls"===t?2:1}}),r=()=>gt(this,void 0,void 0,(function*(){const t=this.engine.client.onLeave;t&&t(new an({reason:e.DisconnectReason.CLIENT_INITIATED,canReconnect:!0}))}));break;case"subscriber-bandwidth":if(void 0===i||"number"!=typeof i)throw new Error("subscriber-bandwidth requires a number as argument");n=new Cn({scenario:{case:"subscriberBandwidth",value:BigInt(i)}})}n&&(this.engine.client.sendSimulateScenario(n),r())}))}startAudio(){return gt(this,void 0,void 0,(function*(){const t=[],i=jn();if(i&&"iOS"===i.os){const i="livekit-dummy-audio-el";let n=document.getElementById(i);if(!n){n=document.createElement("audio"),n.id=i,n.autoplay=!0,n.hidden=!0;const t=jr();t.enabled=!0;const r=new MediaStream([t]);n.srcObject=r,document.addEventListener("visibilitychange",(()=>{n&&(n.srcObject=document.hidden?null:r)})),document.body.append(n),this.once(e.RoomEvent.Disconnected,(()=>{null==n||n.remove()}))}t.push(n)}this.participants.forEach((e=>{e.audioTracks.forEach((e=>{e.track&&e.track.attachedElements.forEach((e=>{t.push(e)}))}))}));try{yield Promise.all([this.acquireAudioContext(),...t.map((e=>(e.muted=!1,e.play())))]),this.handleAudioPlaybackStarted()}catch(e){throw this.handleAudioPlaybackFailed(e),e}}))}get canPlaybackAudio(){return this.audioEnabled}getActiveAudioOutputDevice(){var e,t;return null!==(t=null===(e=this.options.audioOutput)||void 0===e?void 0:e.deviceId)&&void 0!==t?t:""}getActiveDevice(e){return this.localParticipant.activeDeviceMap.get(e)}switchActiveDevice(t,i){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];var r,s,o;return gt(this,void 0,void 0,(function*(){let a=!1,c=!0;const d=n?{exact:i}:i;if("audioinput"===t){const e=this.options.audioCaptureDefaults.deviceId;this.options.audioCaptureDefaults.deviceId=d,a=e!==d;const t=Array.from(this.localParticipant.audioTracks.values()).filter((e=>e.source===sr.Source.Microphone));try{c=(yield Promise.all(t.map((e=>{var t;return null===(t=e.audioTrack)||void 0===t?void 0:t.setDeviceId(d)})))).every((e=>!0===e))}catch(t){throw this.options.audioCaptureDefaults.deviceId=e,t}}else if("videoinput"===t){const e=this.options.videoCaptureDefaults.deviceId;this.options.videoCaptureDefaults.deviceId=d,a=e!==d;const t=Array.from(this.localParticipant.videoTracks.values()).filter((e=>e.source===sr.Source.Camera));try{c=(yield Promise.all(t.map((e=>{var t;return null===(t=e.videoTrack)||void 0===t?void 0:t.setDeviceId(d)})))).every((e=>!0===e))}catch(t){throw this.options.videoCaptureDefaults.deviceId=e,t}}else if("audiooutput"===t){if(!br()&&!this.options.expWebAudioMix||this.options.expWebAudioMix&&this.audioContext&&!("setSinkId"in this.audioContext))throw new Error("cannot switch audio output, setSinkId not supported");null!==(r=(o=this.options).audioOutput)&&void 0!==r||(o.audioOutput={});const e=this.options.audioOutput.deviceId;this.options.audioOutput.deviceId=i,a=e!==d;try{this.options.expWebAudioMix?null===(s=this.audioContext)||void 0===s||s.setSinkId(i):yield Promise.all(Array.from(this.participants.values()).map((e=>e.setAudioOutput({deviceId:i}))))}catch(t){throw this.options.audioOutput.deviceId=e,t}}return a&&c&&(this.localParticipant.activeDeviceMap.set(t,i),this.emit(e.RoomEvent.ActiveDeviceChanged,t,i)),c}))}setupLocalParticipantEvents(){this.localParticipant.on(e.ParticipantEvent.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).on(e.ParticipantEvent.ParticipantNameChanged,this.onLocalParticipantNameChanged).on(e.ParticipantEvent.TrackMuted,this.onLocalTrackMuted).on(e.ParticipantEvent.TrackUnmuted,this.onLocalTrackUnmuted).on(e.ParticipantEvent.LocalTrackPublished,this.onLocalTrackPublished).on(e.ParticipantEvent.LocalTrackUnpublished,this.onLocalTrackUnpublished).on(e.ParticipantEvent.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).on(e.ParticipantEvent.MediaDevicesError,this.onMediaDevicesError).on(e.ParticipantEvent.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged)}recreateEngine(){var e;null===(e=this.engine)||void 0===e||e.close(),this.engine=void 0,this.participants.clear(),this.maybeCreateEngine()}onTrackAdded(t,i,n){if(this.state===e.ConnectionState.Connecting||this.state===e.ConnectionState.Reconnecting){const r=()=>{this.onTrackAdded(t,i,n),s()},s=()=>{this.off(e.RoomEvent.Reconnected,r),this.off(e.RoomEvent.Connected,r),this.off(e.RoomEvent.Disconnected,s)};return this.once(e.RoomEvent.Reconnected,r),this.once(e.RoomEvent.Connected,r),void this.once(e.RoomEvent.Disconnected,s)}if(this.state===e.ConnectionState.Disconnected)return void a.warn("skipping incoming track after Room disconnected");const r=function(e){const t=e.split("|");return t.length>1?[t[0],e.substr(t[0].length+1)]:[e,""]}(i.id),s=r[0];let o=r[1];if(o&&""!==o||(o=t.id),s===this.localParticipant.sid)return void a.warn("tried to create RemoteParticipant for local participant");const c=this.participants.get(s);if(!c)return void a.error("Tried to add a track for a participant, that's not present. Sid: ".concat(s));let d;this.options.adaptiveStream&&(d="object"==typeof this.options.adaptiveStream?this.options.adaptiveStream:{}),c.addSubscribedMediaTrack(t,o,i,n,d)}handleDisconnect(){let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],i=arguments.length>1?arguments[1]:void 0;var n;if(this.clearConnectionReconcile(),this.state!==e.ConnectionState.Disconnected){this.regionUrl=void 0;try{this.participants.forEach((e=>{e.tracks.forEach((t=>{e.unpublishTrack(t.trackSid)}))})),this.localParticipant.tracks.forEach((e=>{var i,n;e.track&&this.localParticipant.unpublishTrack(e.track,t),t&&(null===(i=e.track)||void 0===i||i.detach(),null===(n=e.track)||void 0===n||n.stop())})),this.localParticipant.off(e.ParticipantEvent.ParticipantMetadataChanged,this.onLocalParticipantMetadataChanged).off(e.ParticipantEvent.ParticipantNameChanged,this.onLocalParticipantNameChanged).off(e.ParticipantEvent.TrackMuted,this.onLocalTrackMuted).off(e.ParticipantEvent.TrackUnmuted,this.onLocalTrackUnmuted).off(e.ParticipantEvent.LocalTrackPublished,this.onLocalTrackPublished).off(e.ParticipantEvent.LocalTrackUnpublished,this.onLocalTrackUnpublished).off(e.ParticipantEvent.ConnectionQualityChanged,this.onLocalConnectionQualityChanged).off(e.ParticipantEvent.MediaDevicesError,this.onMediaDevicesError).off(e.ParticipantEvent.ParticipantPermissionsChanged,this.onLocalParticipantPermissionsChanged),this.localParticipant.tracks.clear(),this.localParticipant.videoTracks.clear(),this.localParticipant.audioTracks.clear(),this.participants.clear(),this.activeSpeakers=[],this.audioContext&&"boolean"==typeof this.options.expWebAudioMix&&(this.audioContext.close(),this.audioContext=void 0),Cr()&&(window.removeEventListener("beforeunload",this.onPageLeave),window.removeEventListener("pagehide",this.onPageLeave),window.removeEventListener("freeze",this.onPageLeave),null===(n=navigator.mediaDevices)||void 0===n||n.removeEventListener("devicechange",this.handleDeviceChange))}finally{this.setAndEmitConnectionState(e.ConnectionState.Disconnected),this.emit(e.RoomEvent.Disconnected,i)}}}handleParticipantDisconnected(t,i){this.participants.delete(t),i&&(this.identityToSid.delete(i.identity),i.tracks.forEach((e=>{i.unpublishTrack(e.trackSid,!0)})),this.emit(e.RoomEvent.ParticipantDisconnected,i))}acquireAudioContext(){var t,i;return gt(this,void 0,void 0,(function*(){if("boolean"!=typeof this.options.expWebAudioMix&&this.options.expWebAudioMix.audioContext?this.audioContext=this.options.expWebAudioMix.audioContext:this.audioContext&&"closed"!==this.audioContext.state||(this.audioContext=null!==(t=lr())&&void 0!==t?t:void 0),this.audioContext&&"suspended"===this.audioContext.state)try{yield this.audioContext.resume()}catch(e){a.warn(e)}this.options.expWebAudioMix&&this.participants.forEach((e=>e.setAudioContext(this.audioContext))),this.localParticipant.setAudioContext(this.audioContext);const n="running"===(null===(i=this.audioContext)||void 0===i?void 0:i.state);n!==this.canPlaybackAudio&&(this.audioEnabled=n,this.emit(e.RoomEvent.AudioPlaybackStatusChanged,n))}))}createParticipant(e,t){let i;return i=t?Eo.fromParticipantInfo(this.engine.client,t):new Eo(this.engine.client,e,"",void 0,void 0),this.options.expWebAudioMix&&i.setAudioContext(this.audioContext),i}getOrCreateParticipant(t,i){if(this.participants.has(t))return this.participants.get(t);const n=this.createParticipant(t,i);return this.participants.set(t,n),this.identityToSid.set(i.identity,i.sid),this.emitWhenConnected(e.RoomEvent.ParticipantConnected,n),n.on(e.ParticipantEvent.TrackPublished,(t=>{this.emitWhenConnected(e.RoomEvent.TrackPublished,t,n)})).on(e.ParticipantEvent.TrackSubscribed,((t,i)=>{t.kind===sr.Kind.Audio&&(t.on(e.TrackEvent.AudioPlaybackStarted,this.handleAudioPlaybackStarted),t.on(e.TrackEvent.AudioPlaybackFailed,this.handleAudioPlaybackFailed)),this.emit(e.RoomEvent.TrackSubscribed,t,i,n)})).on(e.ParticipantEvent.TrackUnpublished,(t=>{this.emit(e.RoomEvent.TrackUnpublished,t,n)})).on(e.ParticipantEvent.TrackUnsubscribed,((t,i)=>{this.emit(e.RoomEvent.TrackUnsubscribed,t,i,n)})).on(e.ParticipantEvent.TrackSubscriptionFailed,(t=>{this.emit(e.RoomEvent.TrackSubscriptionFailed,t,n)})).on(e.ParticipantEvent.TrackMuted,(t=>{this.emitWhenConnected(e.RoomEvent.TrackMuted,t,n)})).on(e.ParticipantEvent.TrackUnmuted,(t=>{this.emitWhenConnected(e.RoomEvent.TrackUnmuted,t,n)})).on(e.ParticipantEvent.ParticipantMetadataChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ParticipantMetadataChanged,t,n)})).on(e.ParticipantEvent.ParticipantNameChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ParticipantNameChanged,t,n)})).on(e.ParticipantEvent.ConnectionQualityChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ConnectionQualityChanged,t,n)})).on(e.ParticipantEvent.ParticipantPermissionsChanged,(t=>{this.emitWhenConnected(e.RoomEvent.ParticipantPermissionsChanged,t,n)})).on(e.ParticipantEvent.TrackSubscriptionStatusChanged,((t,i)=>{this.emitWhenConnected(e.RoomEvent.TrackSubscriptionStatusChanged,t,i,n)})).on(e.ParticipantEvent.TrackSubscriptionFailed,((t,i)=>{this.emit(e.RoomEvent.TrackSubscriptionFailed,t,n,i)})).on(e.ParticipantEvent.TrackSubscriptionPermissionChanged,((t,i)=>{this.emitWhenConnected(e.RoomEvent.TrackSubscriptionPermissionChanged,t,i,n)})),i&&n.updateInfo(i),n}sendSyncState(){var e,t;if(void 0===this.engine.subscriber||null===this.engine.subscriber.pc.localDescription)return;const i=this.engine.subscriber.pc.localDescription,n=this.engine.subscriber.pc.remoteDescription,r=null===(t=null===(e=this.connOptions)||void 0===e?void 0:e.autoSubscribe)||void 0===t||t,s=new Array;this.participants.forEach((e=>{e.tracks.forEach((e=>{e.isDesired!==r&&s.push(e.trackSid)}))})),this.engine.client.sendSyncState(new wn({answer:Xr({sdp:i.sdp,type:i.type}),offer:n?Xr({sdp:n.sdp,type:n.type}):void 0,subscription:new sn({trackSids:s,subscribe:!r,participantTracks:[]}),publishTracks:this.localParticipant.publishedTracksInfo(),dataChannels:this.localParticipant.dataChannelsInfo()}))}updateSubscriptions(){for(const e of this.participants.values())for(const t of e.videoTracks.values())t.isSubscribed&&t instanceof wo&&t.emitTrackUpdate()}registerConnectionReconcile(){this.clearConnectionReconcile();let t=0;this.connectionReconcileInterval=Bn.setInterval((()=>{this.engine&&!this.engine.isClosed&&this.engine.verifyTransport()?t=0:(t++,a.warn("detected connection state mismatch",{numFailures:t}),t>=3&&(this.recreateEngine(),this.handleDisconnect(this.options.stopLocalTrackOnUnpublish,e.DisconnectReason.STATE_MISMATCH)))}),2e3)}clearConnectionReconcile(){this.connectionReconcileInterval&&Bn.clearInterval(this.connectionReconcileInterval)}setAndEmitConnectionState(t){return t!==this.state&&(this.state=t,this.emit(e.RoomEvent.ConnectionStateChanged,this.state),!0)}emitWhenConnected(t){if(this.state===e.ConnectionState.Connected){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return this.emit(t,...n)}return!1}simulateParticipants(t){var i,n;return gt(this,void 0,void 0,(function*(){const r=Object.assign({audio:!0,video:!0,useRealTracks:!1},t.publish),s=Object.assign({count:9,audio:!1,video:!0,aspectRatios:[1.66,1.7,1.3]},t.participants);if(this.handleDisconnect(),this.roomInfo=new Ve({sid:"RM_SIMULATED",name:"simulated-room",emptyTimeout:0,maxParticipants:0,creationTime:M.parse((new Date).getTime()),metadata:"",numParticipants:1,numPublishers:1,turnPassword:"",enabledCodecs:[],activeRecording:!1}),this.localParticipant.updateInfo(new He({identity:"simulated-local",name:"local-name"})),this.setupLocalParticipantEvents(),this.emit(e.RoomEvent.SignalConnected),this.emit(e.RoomEvent.Connected),this.setAndEmitConnectionState(e.ConnectionState.Connected),r.video){const t=new To(sr.Kind.Video,new et({source:Ae.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:Ne.AUDIO,name:"video-dummy"}),new lo(r.useRealTracks?(yield window.navigator.mediaDevices.getUserMedia({video:!0})).getVideoTracks()[0]:Jr(null!==(i=160*s.aspectRatios[0])&&void 0!==i?i:1,160,!0,!0)));this.localParticipant.addTrackPublication(t),this.localParticipant.emit(e.ParticipantEvent.LocalTrackPublished,t)}if(r.audio){const t=new To(sr.Kind.Audio,new et({source:Ae.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:Ne.AUDIO}),new Qs(r.useRealTracks?(yield navigator.mediaDevices.getUserMedia({audio:!0})).getAudioTracks()[0]:jr()));this.localParticipant.addTrackPublication(t),this.localParticipant.emit(e.ParticipantEvent.LocalTrackPublished,t)}for(let e=0;e<s.count-1;e+=1){let t=new He({sid:Math.floor(1e4*Math.random()).toString(),identity:"simulated-".concat(e),state:Ge.ACTIVE,tracks:[],joinedAt:M.parse(Date.now())});const i=this.getOrCreateParticipant(t.identity,t);if(s.video){const r=Jr(null!==(n=160*s.aspectRatios[e%s.aspectRatios.length])&&void 0!==n?n:1,160,!1,!0),o=new et({source:Ae.CAMERA,sid:Math.floor(1e4*Math.random()).toString(),type:Ne.AUDIO});i.addSubscribedMediaTrack(r,o.sid,new MediaStream([r])),t.tracks=[...t.tracks,o]}if(s.audio){const e=jr(),n=new et({source:Ae.MICROPHONE,sid:Math.floor(1e4*Math.random()).toString(),type:Ne.AUDIO});i.addSubscribedMediaTrack(e,n.sid,new MediaStream([e])),t.tracks=[...t.tracks,n]}i.updateInfo(t)}}))}emit(t){for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return t!==e.RoomEvent.ActiveSpeakersChanged&&a.debug("room event ".concat(t),{event:t,args:n}),super.emit(t,...n)}}var Do;!function(e){e[e.IDLE=0]="IDLE",e[e.RUNNING=1]="RUNNING",e[e.SKIPPED=2]="SKIPPED",e[e.SUCCESS=3]="SUCCESS",e[e.FAILED=4]="FAILED"}(Do||(Do={}));class _o extends xt.EventEmitter{constructor(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};super(),this.status=Do.IDLE,this.logs=[],this.errorsAsWarnings=!1,this.url=e,this.token=t,this.name=this.constructor.name,this.room=new Io(i.roomOptions),this.connectOptions=i.connectOptions,i.errorsAsWarnings&&(this.errorsAsWarnings=i.errorsAsWarnings)}run(e){return gt(this,void 0,void 0,(function*(){if(this.status!==Do.IDLE)throw Error("check is running already");this.setStatus(Do.RUNNING);try{yield this.perform()}catch(e){e instanceof Error&&(this.errorsAsWarnings?this.appendWarning(e.message):this.appendError(e.message))}return yield this.disconnect(),yield new Promise((e=>setTimeout(e,500))),this.status!==Do.SKIPPED&&this.setStatus(this.isSuccess()?Do.SUCCESS:Do.FAILED),e&&e(),this.getInfo()}))}isSuccess(){return!this.logs.some((e=>"error"===e.level))}connect(){return gt(this,void 0,void 0,(function*(){return this.room.state===e.ConnectionState.Connected||(yield this.room.connect(this.url,this.token)),this.room}))}disconnect(){return gt(this,void 0,void 0,(function*(){this.room&&this.room.state!==e.ConnectionState.Disconnected&&(yield this.room.disconnect(),yield new Promise((e=>setTimeout(e,500))))}))}skip(){this.setStatus(Do.SKIPPED)}appendMessage(e){this.logs.push({level:"info",message:e}),this.emit("update",this.getInfo())}appendWarning(e){this.logs.push({level:"warning",message:e}),this.emit("update",this.getInfo())}appendError(e){this.logs.push({level:"error",message:e}),this.emit("update",this.getInfo())}setStatus(e){this.status=e,this.emit("update",this.getInfo())}get engine(){var e;return null===(e=this.room)||void 0===e?void 0:e.engine}getInfo(){return{logs:this.logs,name:this.name,status:this.status,description:this.description}}}function Lo(e){var t,i;return gt(this,void 0,void 0,(function*(){null!=e||(e={}),null!==(t=e.audio)&&void 0!==t||(e.audio=!0),null!==(i=e.video)&&void 0!==i||(e.video=!0);const n=ur(cr(e,xs,Us)),r=navigator.mediaDevices.getUserMedia(n);e.audio&&(ps.userMediaPromiseMap.set("audioinput",r),r.catch((()=>ps.userMediaPromiseMap.delete("audioinput")))),e.video&&(ps.userMediaPromiseMap.set("videoinput",r),r.catch((()=>ps.userMediaPromiseMap.delete("videoinput"))));const s=yield r;return s.getTracks().map((t=>{const i="audio"===t.kind;let r;i?e.audio:e.video;const o=i?n.audio:n.video;"boolean"!=typeof o&&(r=o),r?r.deviceId=t.getSettings().deviceId:r={deviceId:t.getSettings().deviceId};const a=Ys(t,r);return a.kind===sr.Kind.Video?a.source=sr.Source.Camera:a.kind===sr.Kind.Audio&&(a.source=sr.Source.Microphone),a.mediaStream=s,a}))}))}function No(e){return gt(this,void 0,void 0,(function*(){return(yield Lo({audio:!1,video:e}))[0]}))}function Ao(e){return gt(this,void 0,void 0,(function*(){return(yield Lo({audio:e,video:!1}))[0]}))}class Oo extends _o{get description(){return"Can publish audio"}perform(){var e;return gt(this,void 0,void 0,(function*(){const t=yield this.connect(),i=yield Ao();t.localParticipant.publishTrack(i),yield new Promise((e=>setTimeout(e,3e3)));const n=yield null===(e=i.sender)||void 0===e?void 0:e.getStats();if(!n)throw new Error("Could not get RTCStats");let r=0;if(n.forEach((e=>{"outbound-rtp"===e.type&&"audio"===e.mediaType&&(r=e.packetsSent)})),0===r)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(r," audio packets"))}))}}class Mo extends _o{get description(){return"Can publish video"}perform(){var e;return gt(this,void 0,void 0,(function*(){const t=yield this.connect(),i=yield No();t.localParticipant.publishTrack(i),yield new Promise((e=>setTimeout(e,3e3)));const n=yield null===(e=i.sender)||void 0===e?void 0:e.getStats();if(!n)throw new Error("Could not get RTCStats");let r=0;if(n.forEach((e=>{"outbound-rtp"===e.type&&"video"===e.mediaType&&(r=e.packetsSent)})),0===r)throw new Error("Could not determine packets are sent");this.appendMessage("published ".concat(r," video packets"))}))}}class xo extends _o{get description(){return"Resuming connection after interruption"}perform(){var t;return gt(this,void 0,void 0,(function*(){const i=yield this.connect();let n,r=!1,s=!1;const o=new Promise((e=>{setTimeout(e,5e3),n=e}));i.on(e.RoomEvent.Reconnecting,(()=>{r=!0})).on(e.RoomEvent.Reconnected,(()=>{s=!0,n(!0)})),null===(t=i.engine.client.ws)||void 0===t||t.close();const a=i.engine.client.onClose;if(a&&a(""),yield o,!r)throw new Error("Did not attempt to reconnect");if(!s||i.state!==e.ConnectionState.Connected)throw this.appendWarning("reconnection is only possible in Redis-based configurations"),new Error("Not able to reconnect")}))}}class Uo extends _o{get description(){return"Can connect via TURN"}perform(){var e,t;return gt(this,void 0,void 0,(function*(){const i=new Qr,n=yield i.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3});let r=!1,s=!1,o=!1;for(let e of n.iceServers)for(let t of e.urls)t.startsWith("turn:")?(s=!0,o=!0):t.startsWith("turns:")&&(s=!0,o=!0,r=!0),t.startsWith("stun:")&&(o=!0);o?s&&!r&&this.appendWarning("TURN is configured server side, but TURN/TLS is unavailable."):this.appendWarning("No STUN servers configured on server side."),yield i.close(),(null===(t=null===(e=this.connectOptions)||void 0===e?void 0:e.rtcConfig)||void 0===t?void 0:t.iceServers)||s?yield this.room.connect(this.url,this.token,{rtcConfig:{iceTransportPolicy:"relay"}}):(this.appendWarning("No TURN servers configured."),this.skip(),yield new Promise((e=>setTimeout(e,0))))}))}}class Bo extends _o{get description(){return"Establishing WebRTC connection"}perform(){return gt(this,void 0,void 0,(function*(){let t=!1,i=!1;this.room.on(e.RoomEvent.SignalConnected,(()=>{const e=this.room.engine.client.onTrickle;this.room.engine.client.onTrickle=(n,r)=>{if(n.candidate){const e=new RTCIceCandidate(n);let r="".concat(e.protocol," ").concat(e.address,":").concat(e.port," ").concat(e.type);e.address&&(!function(e){const t=e.split(".");if(4===t.length){if("10"===t[0])return!0;if("192"===t[0]&&"168"===t[1])return!0;if("172"===t[0]){const e=parseInt(t[1],10);if(e>=16&&e<=31)return!0}}return!1}(e.address)?"tcp"===e.protocol&&"passive"===e.tcpType?(t=!0,r+=" (passive)"):"udp"===e.protocol&&(i=!0):r+=" (private)"),this.appendMessage(r)}e&&e(n,r)},this.room.engine.subscriber&&(this.room.engine.subscriber.pc.onicecandidateerror=e=>{e instanceof RTCPeerConnectionIceErrorEvent&&this.appendWarning("error with ICE candidate: ".concat(e.errorCode," ").concat(e.errorText," ").concat(e.url))})}));try{yield this.connect(),a.info("now the room is connected")}catch(e){throw this.appendWarning("ports need to be open on firewall in order to connect."),e}t||this.appendWarning("Server is not configured for ICE/TCP"),i||this.appendWarning("No public IPv4 UDP candidates were found. Your server is likely not configured correctly")}))}}class Fo extends _o{get description(){return"Connecting to signal connection via WebSocket"}perform(){var e,t,i;return gt(this,void 0,void 0,(function*(){(this.url.startsWith("ws:")||this.url.startsWith("http:"))&&this.appendWarning("Server is insecure, clients may block connections to it");let n=new Qr;const r=yield n.join(this.url,this.token,{autoSubscribe:!0,maxRetries:0,e2eeEnabled:!1,websocketTimeout:15e3});this.appendMessage("Connected to server, version ".concat(r.serverVersion,".")),(null===(e=r.serverInfo)||void 0===e?void 0:e.edition)===Ye.Cloud&&(null===(t=r.serverInfo)||void 0===t?void 0:t.region)&&this.appendMessage("LiveKit Cloud: ".concat(null===(i=r.serverInfo)||void 0===i?void 0:i.region)),yield n.close()}))}}class Jo extends xt.EventEmitter{constructor(e,t){super(),this.checkResults=new Map,this.url=e,this.token=t}getNextCheckId(){const e=this.checkResults.size;return this.checkResults.set(e,{logs:[],status:Do.IDLE,name:"",description:""}),e}updateCheck(e,t){this.checkResults.set(e,t),this.emit("checkUpdate",e,t)}isSuccess(){return Array.from(this.checkResults.values()).every((e=>e.status!==Do.FAILED))}getResults(){return Array.from(this.checkResults.values())}createAndRunCheck(e){return gt(this,void 0,void 0,(function*(){const t=this.getNextCheckId(),i=new e(this.url,this.token),n=e=>{this.updateCheck(t,e)};i.on("update",n);const r=yield i.run();return i.off("update",n),r}))}checkWebsocket(){return gt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Fo)}))}checkWebRTC(){return gt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Bo)}))}checkTURN(){return gt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Uo)}))}checkReconnect(){return gt(this,void 0,void 0,(function*(){return this.createAndRunCheck(xo)}))}checkPublishAudio(){return gt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Oo)}))}checkPublishVideo(){return gt(this,void 0,void 0,(function*(){return this.createAndRunCheck(Mo)}))}}const jo=new Map([["obs virtual camera",{facingMode:"environment",confidence:"medium"}]]),Vo=new Map([["iphone",{facingMode:"environment",confidence:"medium"}],["ipad",{facingMode:"environment",confidence:"medium"}]]);function qo(e){var t;const i=e.trim().toLowerCase();if(""!==i)return jo.has(i)?jo.get(i):null===(t=Array.from(Vo.entries()).find((e=>{let[t]=e;return i.includes(t)})))||void 0===t?void 0:t[1]}e.BaseKeyProvider=us,e.ConnectionCheck=Jo,e.ConnectionError=Nn,e.CriticalTimers=Bn,e.DefaultReconnectPolicy=vt,e.DeviceUnsupportedError=An,e.ExternalE2EEKeyProvider=class extends us{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(Object.assign(Object.assign({},e),{sharedKey:!0,ratchetWindowSize:0,failureTolerance:-1}))}setKey(e){return gt(this,void 0,void 0,(function*(){const t="string"==typeof e?yield os(e):yield as(e);this.onSetEncryptionKey(t)}))}},e.LivekitError=Ln,e.LocalAudioTrack=Qs,e.LocalParticipant=Co,e.LocalTrack=ms,e.LocalTrackPublication=To,e.LocalVideoTrack=lo,e.NegotiationError=Un,e.Participant=So,e.PublishDataError=class extends Ln{constructor(e){super(13,null!=e?e:"unable to publish data")}},e.RemoteAudioTrack=vo,e.RemoteParticipant=Eo,e.RemoteTrack=fo,e.RemoteTrackPublication=wo,e.RemoteVideoTrack=go,e.Room=Io,e.RoomState=Ro,e.ScreenSharePresets=$n,e.Track=sr,e.TrackInvalidError=On,e.TrackPublication=bo,e.UnexpectedConnectionState=xn,e.UnsupportedServer=Mn,e.VideoPreset=Wn,e.VideoPresets=Xn,e.VideoPresets43=Zn,e.attachToElement=or,e.createAudioAnalyser=function(e,t){const i=Object.assign({cloneTrack:!1,fftSize:2048,smoothingTimeConstant:.8,minDecibels:-100,maxDecibels:-80},t),n=lr();if(!n)throw new Error("Audio Context not supported on this browser");const r=i.cloneTrack?e.mediaStreamTrack.clone():e.mediaStreamTrack,s=n.createMediaStreamSource(new MediaStream([r])),o=n.createAnalyser();o.minDecibels=i.minDecibels,o.maxDecibels=i.maxDecibels,o.fftSize=i.fftSize,o.smoothingTimeConstant=i.smoothingTimeConstant,s.connect(o);const a=new Uint8Array(o.frequencyBinCount);return{calculateVolume:()=>{o.getByteFrequencyData(a);let e=0;for(const t of a)e+=Math.pow(t/255,2);return Math.sqrt(e/a.length)},analyser:o,cleanup:()=>gt(this,void 0,void 0,(function*(){yield n.close(),i.cloneTrack&&r.stop()}))}},e.createE2EEKey=function(){return window.crypto.getRandomValues(new Uint8Array(32))},e.createKeyMaterialFromBuffer=as,e.createKeyMaterialFromString=os,e.createLocalAudioTrack=Ao,e.createLocalScreenTracks=function(e){return gt(this,void 0,void 0,(function*(){if(void 0===e&&(e={}),void 0===e.resolution&&(e.resolution=$n.h1080fps15.resolution),void 0===navigator.mediaDevices.getDisplayMedia)throw new An("getDisplayMedia not supported");const t=hr(e),i=yield navigator.mediaDevices.getDisplayMedia(t),n=i.getVideoTracks();if(0===n.length)throw new On("no video track found");const r=new lo(n[0],void 0,!1);r.source=sr.Source.ScreenShare;const s=[r];if(i.getAudioTracks().length>0){const e=new Qs(i.getAudioTracks()[0],void 0,!1);e.source=sr.Source.ScreenShareAudio,s.push(e)}return s}))},e.createLocalTracks=Lo,e.createLocalVideoTrack=No,e.deriveKeys=function(e,t){return gt(this,void 0,void 0,(function*(){const i=cs(e.algorithm.name,t),n=yield crypto.subtle.deriveKey(i,e,{name:Zr,length:128},!1,["encrypt","decrypt"]);return{material:e,encryptionKey:n}}))},e.detachTrack=ar,e.facingModeFromDeviceLabel=qo,e.facingModeFromLocalTrack=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};var i;const n=e instanceof ms?e.mediaStreamTrack:e,r=n.getSettings();let s={facingMode:null!==(i=t.defaultFacingMode)&&void 0!==i?i:"user",confidence:"low"};if("facingMode"in r){const e=r.facingMode;a.debug("rawFacingMode",{rawFacingMode:e}),e&&"string"==typeof e&&function(e){const t=["user","environment","left","right"];return void 0===e||t.includes(e)}(e)&&(s={facingMode:e,confidence:"high"})}if(["low","medium"].includes(s.confidence)){a.debug("Try to get facing mode from device label: (".concat(n.label,")"));const e=qo(n.label);void 0!==e&&(s=e)}return s},e.getEmptyAudioStreamTrack=jr,e.getEmptyVideoStreamTrack=function(){return Br||(Br=Jr()),Br.clone()},e.importKey=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{name:Zr},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"encrypt";return gt(this,void 0,void 0,(function*(){return crypto.subtle.importKey("raw",e,t,!1,"derive"===i?["deriveBits","deriveKey"]:["encrypt","decrypt"])}))},e.isBackupCodec=zn,e.isBrowserSupported=function(){return fr()||vr()},e.isCodecEqual=Qn,e.isE2EESupported=ns,e.isInsertableStreamSupported=ss,e.isScriptTransformSupported=rs,e.isVideoFrame=function(e){return"type"in e},e.mimeTypeToVideoCodecString=ds,e.protocolVersion=9,e.ratchet=function(e,t){return gt(this,void 0,void 0,(function*(){const i=cs(e.algorithm.name,t);return crypto.subtle.deriveBits(i,e,256)}))},e.setLogExtension=function(t){const i=a.methodFactory;a.methodFactory=(n,r,s)=>{const o=i(n,r,s),a=e.LogLevel[n],c=a>=r&&a<e.LogLevel.silent;return(e,i)=>{i?o(e,i):o(e),c&&t(a,e,i)}},a.setLevel(a.getLevel())},e.setLogLevel=function(e,t){t&&o.getLogger(t).setLevel(e);for(const t of Object.values(o.getLoggers()))t.setLevel(e)},e.supportsAV1=gr,e.supportsAdaptiveStream=function(){return void 0!==typeof ResizeObserver&&void 0!==typeof IntersectionObserver},e.supportsDynacast=function(){return fr()},e.supportsVP9=yr,e.version=Kn,e.videoCodecs=Gn}));
2
2
  //# sourceMappingURL=livekit-client.umd.js.map